2014-01-14 44 views
2

我在我的tfs构建配置中使用MyProj.proj文件作为'Projects To Build'。TFS构建输出未复制到放置文件夹

C++,C#和VB.Net解决方案列在MyProj.proj中。每个解决方案都具有相同的输出目录 - Bin文件夹(C:\ Builds ... \ MyProject \ Bin),因此所有构建工件(dll,exe文件,..)都放置在那里后成功构建。

我想复制C:\ Builds ... \ MyProject \ Bin到tfs构建成功完成时在其他框上的drop文件夹中。为此我查复制建立输出到随后的投递文件夹复选框,并指定UNC路径\\ OtherBoxFromMyNetwork \ BuildArtifacts

但它不为我工作。我看到名称根据内部版本号的文件夹是在一个下拉文件夹中创建的: \ OtherBoxFromMyNetwork \ BuildArtifacts \ MyProject \ Build_Number,但它只包含日志文件夹,因此Bin目录未被复制。为什么?

回答

0

TFS生成覆盖OutputPath MSBuild属性(C#和其他项目默认情况下)。这会强制输出到TFS构建服务器上的不同目录中,并且这个目录被复制到Build Drops中。在构建服务器工作目录中的文件夹结构是这样的:

C:\Builds\1\TeamProjectName\BuildName\src\ 
C:\Builds\1\TeamProjectName\BuildName\bin\ 

你的代码和凸出和SLN文件将成为的\ src \文件夹下,但TFS生成重定向所有输出到bin文件夹被复制到最后的Build Drops。注意:bin文件夹与典型的bin \ debug文件夹不在同一位置。

+0

Dylan,我看到C:\ Builds \ 1 \ TeamProjectName \ BuildName \ bin在我的情况下是空的。这就是为什么在最后没有任何东西被复制到Build Drops的原因。 我的所有二进制文件都存储在这里:C:\ Builds \ 1 \ TeamProjectName \ BuildName \ src \ Bin 我认为在每个解决方案中更改OutputPath并不是一个好主意。我应该将C:\ Builds \ 1 \ TeamProjectName \ BuildName \ src \ Bin的内容复制到C:\ Builds \ 1 \ TeamProjectName \ BuildName \ bin吗?这是一个正确的方法吗? – AndreyS

+0

没有,这是不正确的做法。正确的方法是确保您的项目尊重OutputPath MSBuild属性的值并将输出放在正确的位置。默认情况下,C#项目可以做到这一点,你必须改变一些东西。我怀疑,因为你说你有一个.proj文件,你使用的是一个自定义的MSBuild文件,如果是的话确保它接受并使用OutputPath属性。 –

+0

TF使用OutDir而不是OutputPath。更多关于这两者之间的区别:http://blogs.clariusconsulting.net/kzu/outdir-vs-outputpath/。 – Joop

相关问题