MsBuild PostBuild 目标
MsBuild PostBuild targets
我已将 AfterBuild
目标添加到 Visual Studio 项目,该项目是包含多个 Visual Studio 项目的解决方案的一部分。
示例解决方案设置
Example.sln
ExampleProj.csproj
ExampleProj.Test.csproj
目标示例:
<Target Name="PostBuildScript" AfterTargets="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<PropertyGroup>
<BuildCommand>"SomeApplication.exe")</BuildCommand>
</PropertyGroup>
<Exec Command="$(BuildCommand)" ConsoleToMSBuild="true" LogStandardErrorAsError="true" WorkingDirectory="$(ProjectDir)" />
</Target>
我希望此目标在构建解决方案中的所有 Visual Studio 项目后仅 执行 。
有没有办法实现这个。
注意:我需要在使用 dotnet build
时行为与 Visual Studio.
中的构建命令相同
I would like this target to execute only after all of the Visual Studio projects in the solution have been built
根据文档 MSBuild Extending The Solution Build,您可以在与解决方案相同的文件夹中创建名为 after.<SolutionName>.sln.targets
的 MSBuild 项目文件。
作为测试,我将其添加到我的 After.Solution.sln.targets 文件中(使用香蕉代替 SomeApplication.exe),并将此文件设置在与我的解决方案文件 .sln
相同的文件夹中:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PostBuildScript" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Message Text="*** BEGIN BANANA ***" Importance="high" />
<Message Text=" _ " Importance="high" />
<Message Text="//\ " Importance="high" />
<Message Text="V \ " Importance="high" />
<Message Text=" \ \_ " Importance="high" />
<Message Text=" \,'.`-. " Importance="high" />
<Message Text=" |\ `. `. " Importance="high" />
<Message Text=" ( \ `. `-. _,.-:\" Importance="high" />
<Message Text=" \ \ `. `-._ __..--' ,-';/" Importance="high" />
<Message Text=" \ `. `-. `-..___..---' _.--' ,'/ " Importance="high" />
<Message Text=" `. `. `-._ __..--' ,' / " Importance="high" />
<Message Text=" `. `-_ ``--..'' _.-' ,' " Importance="high" />
<Message Text=" `-_ `-.___ __,--' ,' " Importance="high" />
<Message Text=" `-.__ `----''' __.-' " Importance="high" />
<Message Text=" `--..____..--' " Importance="high" />
<Message Text="*** END BANANA ***" Importance="high" />
</Target>
</Project>
然后我用 dotnet build
命令构建它:
dotnet build "xxxx\TestSolutionTarget.sln" --configuration Release --verbosity n
此目标在解决方案中 Visual Studio 个项目的 所有 已构建后执行。
或者,您也可以创建单独的空项目,引用所有项目的子集并将此目标添加到空项目。
希望这对您有所帮助。
我已将 AfterBuild
目标添加到 Visual Studio 项目,该项目是包含多个 Visual Studio 项目的解决方案的一部分。
示例解决方案设置
Example.sln
ExampleProj.csproj
ExampleProj.Test.csproj
目标示例:
<Target Name="PostBuildScript" AfterTargets="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<PropertyGroup>
<BuildCommand>"SomeApplication.exe")</BuildCommand>
</PropertyGroup>
<Exec Command="$(BuildCommand)" ConsoleToMSBuild="true" LogStandardErrorAsError="true" WorkingDirectory="$(ProjectDir)" />
</Target>
我希望此目标在构建解决方案中的所有 Visual Studio 项目后仅 执行 。
有没有办法实现这个。
注意:我需要在使用 dotnet build
时行为与 Visual Studio.
I would like this target to execute only after all of the Visual Studio projects in the solution have been built
根据文档 MSBuild Extending The Solution Build,您可以在与解决方案相同的文件夹中创建名为 after.<SolutionName>.sln.targets
的 MSBuild 项目文件。
作为测试,我将其添加到我的 After.Solution.sln.targets 文件中(使用香蕉代替 SomeApplication.exe),并将此文件设置在与我的解决方案文件 .sln
相同的文件夹中:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PostBuildScript" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Message Text="*** BEGIN BANANA ***" Importance="high" />
<Message Text=" _ " Importance="high" />
<Message Text="//\ " Importance="high" />
<Message Text="V \ " Importance="high" />
<Message Text=" \ \_ " Importance="high" />
<Message Text=" \,'.`-. " Importance="high" />
<Message Text=" |\ `. `. " Importance="high" />
<Message Text=" ( \ `. `-. _,.-:\" Importance="high" />
<Message Text=" \ \ `. `-._ __..--' ,-';/" Importance="high" />
<Message Text=" \ `. `-. `-..___..---' _.--' ,'/ " Importance="high" />
<Message Text=" `. `. `-._ __..--' ,' / " Importance="high" />
<Message Text=" `. `-_ ``--..'' _.-' ,' " Importance="high" />
<Message Text=" `-_ `-.___ __,--' ,' " Importance="high" />
<Message Text=" `-.__ `----''' __.-' " Importance="high" />
<Message Text=" `--..____..--' " Importance="high" />
<Message Text="*** END BANANA ***" Importance="high" />
</Target>
</Project>
然后我用 dotnet build
命令构建它:
dotnet build "xxxx\TestSolutionTarget.sln" --configuration Release --verbosity n
此目标在解决方案中 Visual Studio 个项目的 所有 已构建后执行。
或者,您也可以创建单独的空项目,引用所有项目的子集并将此目标添加到空项目。
希望这对您有所帮助。