2011-06-28 41 views
7

我们有一个非常大的解决方案(有些300+)的项目,我们正在尝试通过的MSBuild建立它在TFS2010。 我们可以在全力以赴开发机器通过的MSBuild构建它,并在采用TFS的过程。问题与MSBuild的OutputPath和OUTDIR在TFS2010

我们代码的结构就像这样:

bin\Client 
bin\Server 
Framework\ClientFramework.csproj 
Modules\Module1\Project1 
Modules\Module2\Project2 
etc. 

每个项目都有它建立的代码的bin客户端或服务器目录的相对OutputPath。因此,例如,Project1.csproj的OutputPath为“.. \ .. \ bin \ Client”。

我们似乎具有在TFS的MSBuild的OUTDIR被设置为一个固定的路径问题:

C:\Builds\MyProject\Binaries\ 

所以事情上的OUTDIR

    顶部解决相对OutputPath当越来越混乱
  • ClientFramework进入C:\构建\ MyProject的\二进制\ .. \ BIN \客户
  • PROJECT1进入C:\构建\ MyProject的\二进制\ .. \ .. \ BIN \客户

我们也有一些后建立事件,复制一些第三方dll的bin文件夹,这些路径无法正确解决。

我认为解决的办法,我们追求的是创造一切条件,以我们现有斌\客户端,BIN \服务器结构,然后从箱子移动文件夹到二进制文件。

如何做到这一点,或者我们应该如何工作的任何想法,是值得赞赏的,但更新我们现有的项目可能被证明有问题的,因为它与所有作品VS,开发商命令行构建与CC.net。

+0

微软在这里的文章:控制构建系统放置您的二进制文件的位置http://msdn.microsoft.com/en-us/library/ff977206.aspx –

回答

6
+8

您能详细说明吗?只是发布链接并不能帮助未来的访问者;解释该链接如何明确解决您的问题。 –

+0

对于未来的用户:您需要自定义您的构建和简单地去掉“OUTDIR”参数(基本上是定义您的构建工作流中的XML文件)。以纯文本格式打开XML文件,搜索OutDir然后将其删除。在我的情况下,我刚刚删除了'OutDir =“[outputDirectory]”',现在它使用将输出文件复制到每个项目指定的OutputPath的默认行为。截至今天(2016),与.net 4.5也有另一种解决方案,请参阅得票最多的回答和'GenerateProjectSpecificOutputFolder'的MSBuild参数。 – ken2k

7

因为这是用谷歌搜索“TFS OUTDIR”的弹出第一个链接,我必须提供一个新的解决方案。我花了整整一天的时间玩OutDir,OutputPath,并用TeamBuildOutDir覆盖它们。更好的解决方案是设置MSBuild属性GenerateProjectSpecificOutputFolder。它带有.NET 4.5。更多的信息在这里:http://blog.codeassassin.com/2012/05/10/override-the-tfs-team-build-outdir-property-net-4-5/

+0

每个目录有一个解决方案的限制,但如果这是您的设置,则是一个有效的答案。 +1。 – DaveShaw

+0

您的链接已损坏。你能修好它吗? –

+0

链接仍然有效。可能是由于DDOS攻击昨天下降了。 –