【问题标题】:Overriding the PostBuildEvent in TFSBuild.proj覆盖 TFS Build.proj 中的构建后事件
【发布时间】:2011-04-23 05:49:27
【问题描述】:

我目前使用的是 VS 2010 和 TFS 2008。在我们的一个解决方案中,我们有一个 .csproj 文件,其中包含以下内容:

<Target Name="BeforeBuild">


<TransformXml Source="..\..\..\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.config" Transform="..\..\..\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.$(Configuration).config" Destination="..\..\..\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.$(Configuration).config.transformed" />

</Target>

<PropertyGroup>
<PostBuildEvent>xcopy "C:\Source\Projects\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.$(Configuration).config.transformed" "C:\Source\Projects\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.config" /R /Y</PostBuildEvent>
 </PropertyGroup>

这在本地构建时工作正常,但 TFS 在到达 &lt;PostBuildEvent&gt; 时失败,因为此路径在构建机器上不可用。如何让 TFS 跳过整个“BeforeBuild”或仅将 &lt;PostBuildEvent&gt; 设置为空字符串,以便在 VS2010 和 TFS 2008 本地构建时构建将成功运行?我尝试在 TFSBuild.proj 中设置 &lt;Target Name="BeforeBuild" /&gt;,但这不起作用。

【问题讨论】:

    标签: tfs


    【解决方案1】:

    我建议不要在您的项目中使用绝对路径名 - 相对路径会使它们可重定位,这样的麻烦就会消失。

    即在构建后的 xcopy 中,只需将 C:\Source\Projects\ProjectX 更改为 ..\..\..\ProjectX

    (您不能依赖始终能够将代码放在 C: 上 - 由于磁盘空间不足或安装新驱动器,我不得不将代码从 C: 移动到 D: 或 E:在某些情况下, 并且使用相对路径使这个过程变得非常容易. 有时能够在您的 PC 上同时拥有源代码的多个副本 (不同版本或分支) 并且仍然能够构建它们也非常方便全部)

    【讨论】:

    • 感谢 Jason 的回复,并对迟到的回复感到抱歉。我以前曾尝试过;但是,当我将其设为相对时,我无法在本地或通过 TFS 成功构建解决方案。我收到以下错误:命令 "xcopy "..\..\..\ProjectX\ProjectXWebSite\ProjectXWebSite\Web.Test.config.transformed" "..\..\..\ProjectX\ProjectXWebSite\ProjectXWebSite\ Web.config" /R /Y" 以代码 4 退出。
    • 代码 4 可能意味着您的路径错误。它们应该与解决方案 (.sln) 文件的位置相关,因此如果文件在同一个解决方案中,它们应该可能只是类似于"ProjectXWebSite\Web.Test.config.transformed""Web.Test.config.transformed"。只需在包含 .sln 的文件夹上打开文件资源管理器,然后导航到源/目标文件夹。如果您进入父文件夹,请添加“..\”,如果您进入子文件夹,请添加它的名称:“Child\”,您应该构建正确的路径。
    • ... xcopy 也可能有点变化无常 - 如果路径正确,它应该可以正常工作,但是对于单个文件,您可以使用“复制”,这更容易正确和更多如果它失败了,或者如果你在 Vista/Win7/Server2008 上,“robocopy”也内置在操作系统中。
    • (您也可以在包含 .sln 的文件夹中打开命令提示符,然后手动输入 xcopy 命令以尝试不同的相对路径,直到找到所需的确切路径)
    猜你喜欢
    • 2014-10-20
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多