1

我有一个解决方案,其中包含许多 2 个 Windows 控制台项目、1 个网站项目和 20 个类库。

我希望 TFS 2013 仅将 Windows 控制台和网站项目推送到放置文件夹。

我正在寻找类似于下面的文件夹结构。

DropFolder
    - App1
    - App2
    - Website1

配置 TFS 以允许这样做的最佳方法是什么?

谢谢

更新

我最终将 nuget 包http://www.nuget.org/packages/PublishedApplications用于我想要发布的所有项目。这会将项目复制到 _PublishedApplications 文件夹中。所以我有一个这样的文件夹结构

DropFolder
    _PublishedApplications
        - App1
        - App2
    _PublishedWebsites
        - Website1
4

2 回答 2

3
  • 默认模板Solution Specific Build Outputs在“处理”选项卡“高级”部分下具有属性。 解决方案特定的构建输出

  • 或者,您可以让MSBuild控制您的构建流程。

更新:

于 2014-02-12T16:21:00.380 回答
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我能够通过更改 last 得到我想要的东西<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)"/>

我不确定这对其他人是否有用,但对我来说这是必不可少的更改,而且PublishedApplicationsNuGet 包自 2014 年以来没有更改(似乎是废弃的项目)。

于 2017-03-03T18:32:20.427 回答