覆盖TFSBuild.proj中的PostBuildEvent

时间:2011-04-22 21:09:42

标签: tfs

我目前正在使用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在到达<PostBuildEvent>时失败,因为此路径在构建计算机上不可用。如何让TFS跳过整个“BeforeBuild”或者只是将<PostBuildEvent>设置为空字符串,以便在VS2010本地构建和通过TFS 2008时构建将成功运行?我已在TFSBuild.proj中尝试设置<Target Name="BeforeBuild" />,但这不起作用。

1 个答案:

答案 0 :(得分:0)

我建议不要在你的项目中使用绝对路径名 - 相对路径会让它们重新定位,这样的头痛就会消失。

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

即可

(你不能总是把你的代码放在C上: - 我不得不将我的代码从C:移到D:或E:由于缺少磁盘空间或安装新驱动器有几次,并且使用相对路径使这个过程变得非常简单。有时候能够在PC上同时拥有源代码的多个副本(不同版本或分支)并且仍然可以构建它们也非常方便全部)