AppendTargetFrameworkToOutputPath не работает в файлах .targets
Свойство AppendTargetFrameworkToOutputPath
может остановить MSBuild, добавляя TargetFramework
к OutputPath
, но поскольку папка TargetFramework
уже была создана, когда мысоздал проект, нам нужно вручную удалить папку TargetFramework после добавления <Import Project="PathToCommonTargets" />
в проект, в противном случае эта папка всегда будет там, тогда мы могли бы построить проект без TargetFramework
до OutputPath
.
Если папка TargetFramework
все еще создается после ее удаления, вы должны удвоить содержимое .targets
, и оператор импорта верен.Чтобы убедиться в этом, я добавляю тестовую настраиваемую цель в файл .target
:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<Target Name="Test" AfterTargets="Build">
<Message Text="This is Test Custom Target!"></Message>
</Target>
</Project>
Когда мы собираем проект, и мы можем видеть информацию о сообщении в окне вывода, это означает, что содержимое.targets
и оператор импорта верны.
Обновление:
Не могли бы вы мне помочь, как удалить TargetFramework?
Для этого выгрузите свой проект.Затем в самом конце проекта, непосредственно перед конечным тегом </project>
, поместите ниже сценарии:
<Target Name="RemoveDirectories" AfterTargets="Build">
<RemoveDir
Directories="$(ProjectDir)$(OutDir)" />
</Target>
Кроме того, вам необходимо выполнить резервное копирование файлов из TargetFramework
в bin \ debug илиПапка bin \ release, поэтому перед задачей удаления нам также необходимо выполнить задачу копирования:
<ItemGroup>
<MySourceFiles Include="$(ProjectDir)$(OutDir)\*.*"/>
</ItemGroup>
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(ProjectDir)bin\$(ConfigurationName)"
/>
<RemoveDir
Directories="$(ProjectDir)$(OutDir)" />
Надеюсь, это поможет.