我已经升级到新的 Windows 10 开发机器。
一切都很好,除了 msbuild/visual studio 中的构建后事件。这适用于任何新项目或现有项目。它们在其他人的 Windows 7 机器上都可以正常工作。它们在构建服务器(jenkins)上工作正常。
它们根本不适合我,无论是在视觉工作室还是在 msbuild 中。预构建事件工作正常。这就像 postbuild 事件甚至没有定义。
不幸的是,我们的构建后事件是构建过程的基础。
从一个基本的控制台应用程序开始,并将构建事件配置为:
<PropertyGroup>
<PreBuildEvent>echo before build</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>echo after build</PostBuildEvent>
</PropertyGroup>
构建输出字面意思是:
1>------ Rebuild All started: Project: ConsoleApplication1, Configuration: Debug Any CPU ------
1> before build
1> ConsoleApplication1 -> C:\dev\postbuild\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
使用 /v:diag 运行 msbuild 我得到了这个部分:
PostBuildEvent = echo after build
PostBuildEventDependsOn =
PreBuildEvent = echo before build
PreBuildEventDependsOn =
运行预构建时:
Target "PreBuildEvent: (TargetId:22)" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "c:\dev\postbuild\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.csproj" (target "CoreBuild" depends on it):
Using "Exec" task from assembly "Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "Exec" (TaskId:19)
Task Parameter:WorkingDirectory=bin\Debug\ (TaskId:19)
Task Parameter:Command=echo before build (TaskId:19)
echo before build (TaskId:19)
before build (TaskId:19)
Done executing task "Exec". (TaskId:19)
Done building target "PreBuildEvent" in project "ConsoleApplication1.csproj".: (TargetId:22)
运行 PostBuild 时:
Target "PostBuildEvent: (TargetId:77)" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "c:\dev\postbuild\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.csproj" (target "CoreBuild" depends on it):
Done building target "PostBuildEvent" in project "ConsoleApplication1.csproj".: (TargetId:77)