我有一个解决方案,其中包含许多2个Windows控制台项目,1个网站项目和20个类库。
我希望TFS 2013只将windows控制台和网站项目的drop文件夹推送到drop文件夹。
我正在寻找类似于下面的文件夹结构。
DropFolder
- App1
- App2
- Website1
配置TFS以实现此目的的最佳方法是什么?
由于
更新
我最终使用nuget包http://www.nuget.org/packages/PublishedApplications来处理我想要发布的所有项目。这会将项目复制到_PublishedApplications文件夹中。所以我有一个像这样的文件夹结构
DropFolder
_PublishedApplications
- App1
- App2
_PublishedWebsites
- Website1
答案 0 :(得分:3)
默认模板在“处理”选项卡“高级”部分下具有Solution Specific Build Outputs
属性。
或者,您可以让MSBuild控制您的构建流程。
<强>更新强>
答案 1 :(得分:1)
我也使用过PublishedApplications NuGet包,但遇到了问题。如果引用的库的Content
标记为Copy Always
,则所有内容都将复制到根文件夹而不是分层结构。例如,如果您有以下项目和结构(为简洁起见省略了一些文件):
PublishLib
test
TextFile1.txt (marked as Content/CopyAlways)
TestPublishTargetApp - references PublishLib
targets
Microsoft.Application.targets
完成团队构建后,这是_PublishedApplications\TestPublishTargetApp
文件夹的内容:
PublishLib.dll
TestPublishTargetApp.exe
TestPublishTargetApp.exe.config
TestPublishTargetApp.pdb
TextFile1.txt
我的期望是:
test\TextFile1.txt
PublishLib.dll
TestPublishTargetApp.exe
TestPublishTargetApp.exe.config
TestPublishTargetApp.pdb
在使用Microsoft.Application.targets
摆弄一下之后,通过更改上一个<Copy SourceFiles
(原文已注明),我能够得到我想要的内容:
<!--<Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)"
DestinationFolder="$(ExeProjectOutputDir)"
SkipUnchangedFiles="false"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"/>-->
<Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)"
DestinationFiles = "@(_SourceItemsToCopyToOutputDirectoryAlways->'$(ExeProjectOutputDir)\%(TargetPath)')"
SkipUnchangedFiles="false"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"/>
我不确定这对其他人是否有用,但对我来说这是必不可少的改变,加上PublishedApplications
自2014年以来NuGet包没有改变(似乎已经放弃了项目)。