Почему Exec Command не работает в.csproj для netstandard2.0?
Я занят перемещением своего кода из библиотек.Net Framework в библиотеки.netstandard2.0. Пока все идет хорошо, но теперь я застрял в файле.csproj.
В существующем файле проекта это определено
<Target Name="Rebuild">
<Exec Command="echo Now Rebuilding the package" />
</Target>
Фактическая команда выполняет исполняемый файл, который генерирует кучу классов XML на основе XSD.
Я не могу заставить это работать в проекте.netstandard2.0?
Я искал везде, но я не могу найти причину этого не работает...
1 ответ
Я подозреваю, что в вашем конкретном случае Rebuild
target будет перезаписан целями sdk, которые неявно импортируются после вашего кода. Если вы хотите перезаписать задачи, предоставляемые SDK, вам нужно перейти к явному импорту SDK (вместо <Project Sdk="...">
):
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<!-- other project content -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<Target Name="Build">
<!-- overwrite Build target here -->
</Target>
<Target Name="Rebuild">
<!-- overwrite Rebuild target here -->
</Target>
</Project>
Exec
цель поддерживается, хотя echo
Команда может работать или не работать в зависимости от платформы, на которой вы ее запускаете (поскольку echo
может быть просто встроенной командой оболочки, но без исполняемого файла, который можно запустить).
Удостоверься что:
- Команда начинается с пути к исполняемому файлу, который находится на
PATH
или указывается абсолютное или относительно строящегося файла csproj. - Цель фактически выполнена. Например, некоторые программы могут использовать
/t:Clean;Build
вместо/t:Rebuild
,