Перезаписать цели после события сборки другого файла цели
Фактически , если вы хотите использовать несколько файлов цели в пакет nuget, а затем переключаться между различными файлами цели в зависимости от ваших потребностей, вы не можете получить то, что хотите.
И, как сказал этот документ , когда вы хотите добавить целевой файл в проект с помощью nuget, вы должны убедиться, что имя целевого файла совпадает с именем пакета nuget, поэтому он будет работать.
Таким образом, вы можете использовать только один целевой файл с именем <package_id>.targets
и установить в нем condidtion
, чтобы отличить guish какую среду проекта использовать.
Решение
1) Пожалуйста, поместите все это в файл <package_id>.targets
:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flag></Flag>
</PropertyGroup>
<Target Name="ThisIsMyTarget" AfterTargets="Build" Condition="'$(Flag)'!='true'">
<Exec Command="ThisIsMyCommand.exe"/>
</Target>
<Target Name="ThisIsMyRareTarget" AfterTargets="Build" Condition="'$(Flag)'=='true'">
<Exec Command="ThisIsMyRareCommand.exe"/>
</Target>
</Project>
2) затем вы упаковываете свой проект nuget, а когда вы устанавливаете его в другие проекты ( менее 1% проектов ), вы должны определить свойство Отметить до true
в конце файла xxx.csproj
, например thi s:
И менее 1% проектов могут использовать ThisIsMyRareTarget.exe
. В других 99% проектах вам не следует определять свойство Flag в xxx.csproj
, и оно автоматически c захватывает ThisIsMyCommand.exe
.