1

我已经升级到新的 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)
4

0 回答 0