【发布时间】:2018-08-07 20:07:41
【问题描述】:
我已将AfterBuild 目标添加到 Visual Studio 项目中,该项目是包含多个 Visual Studio 项目的解决方案的一部分。
示例解决方案设置
例子.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 中的构建命令时保持相同的行为。
【问题讨论】:
-
你有什么问题?
-
目标运行测试(除其他外),我发现目标有时在测试项目构建它的程序集之前运行,因此测试失败。注意:我只是将目标添加到主项目中,这样某些命令只会出现一次。我试图避免将其他目标添加到其他项目,因为这样跨项目的目标执行顺序变得难以管理。
-
我发现在解决方案中相互引用项目的最佳方式是使用项目引用。这样,项目本身决定了构建顺序,而不是解决方案文件本身。如果我是你,我会将那个后期构建目标附加到总是最后构建的项目上(如果你有的话)。
标签: c# msbuild visual-studio-2017 csproj msbuild-target