【问题标题】:Post-build events of Visual Studio projects are not fired in TFS Build Definition在 TFS 构建定义中未触发 Visual Studio 项目的构建后事件
【发布时间】:2018-11-20 07:15:56
【问题描述】:

我是 Team Foundation Build 的新手。我在 Visual Studio 中设置了所有 C# 项目的构建后事件,以将二进制文件复制到物理目录。每个项目中的命令行是:

xcopy "$(TargetDir)*.*" "$(SolutionDir)..\TempOutput\" /Y

当我在 Visual Studio 中构建解决方案时,会触发构建后事件并复制文件。但是在使用 TFS 构建定义构建时,不会触发事件。我需要在构建定义中单独设置什么来触发所有项目的构建后事件吗?

我的 TFSBuild.proj 中有这个,但仍然无法正常工作:

<PropertyGroup>
   <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup>

【问题讨论】:

  • 您使用的是哪种 TFS 构建,XAML 构建还是新的 vNext 构建?
  • 我正在使用 XAML 构建定义。 BuildLog.txt 条目声明项目被复制到单独的 src 文件夹(根据源设置),并且它们是从那里构建的。所以我猜它真的不是编译我在 TFS 中的 VS 解决方案,而是复制到 src 的那个。
  • 你能确保构建后事件没有被触发吗?可以将命令行改成echo This is test command !,这样就可以直接查看构建日志,了解是否触发了构建事件。

标签: visual-studio tfs msbuild


【解决方案1】:

缩小与 TFS 构建定义相关的问题。您应该手动远程到构建代理并运行 msbuild 命令来触发构建,而不是通过 TFS 服务器。

由于您使用的是 XAML 构建,请查看以下内容:

Team Build 使用与 Visual Studio 不同的目录布局 构建。对于构建的任何项目,所有二进制文件都放在一个文件夹中,所以 引用自动解决,很容易将 DLL 复制到 最后的 Drop 文件夹。

您应该使用 $(OutDir) MSBuild 变量来正确引用 VS 和 TFS 构建中的二进制目录。看 Is there a single MSBuild and TFSBuild variable that will point to where the binaries are? 了解一些细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2012-08-18
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多