【问题标题】:Including empty folders in tfs build在 tfs build 中包含空文件夹
【发布时间】:2012-03-09 01:34:59
【问题描述】:

我们的 C# 解决方案有几个通过构建后事件填充的文件夹(即它们最初是空的)。

解决方案在本地构建良好,但使用 TFS 构建代理时,文件夹不会显示在已发布的网站文件夹中。

关于如何强制 TFS 复制文件夹的任何建议?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    在此解决:publish empty directories to a web application in VS2010 web project

    TFS 不执行 proj 文件的 AfterBuild 目标。我相信它会执行 AfterCompile 目标,但这仍然可能无法满足您的要求。

    我使用了包含虚拟文件的方法,尽管它很蹩脚。

    我尝试了包含一个 powershell 脚本的方法来执行一些有效的发布后任务。

    最近,我采用了包含以“.package.proj”结尾的补充 MSBuild 文件的约定,并在我的团队构建模板中添加了一个额外的 MSBuild 执行活动,该活动在将文件拖放到放置位置后查找它然后执行它。这为 Team Build 工作流程提供了一个简单的挂钩,而无需深入更改特定构建的工作流程。它只是一个包含在查找文件的条件中的附加活动。如果找到,执行它。

    您还可以制作自定义构建模板并使用工作流活动来执行各种清理任务,但这可能有点矫枉过正,并且会增加对构建模板的维护。如果可以的话,最好让自定义保持简单,并让它在不需要自定义的构建上以不需要“选择退出”配置的方式运行。在对模板进行自定义后,现有的 vanilla 构建应继续按预期工作。

    【讨论】:

    • 我们也试图避免使用虚拟文件 :)。我会尝试补充 MSBuild 文件 - 再次感谢您的链接!
    • msbuild 文件方法有一些好处。如有必要,您可以在本地使用与 TFS 中相同的文件。您可以将 AfterBuild 目标与 MSBuild“MSBuild”任务关联以执行它,然后在 Team Build Process 模板中使用 MSBuild Activity。它还最大限度地减少了您必须参与的各种技术。无论如何,您已经在使用 MSBuild 进行构建,这只是对其的补充。通过将内容保存在单独的 MSBuild 文件中,您将比尝试编辑您的 csproj 或涉及卸载和重新加载等的任何内容更轻松。祝您好运。
    • 很好,我一直在使用那些总是感觉很脏但完成工作的虚拟文件。下次试试这个!
    猜你喜欢
    • 2020-12-23
    • 2017-09-28
    • 2015-11-28
    • 2014-06-10
    • 2013-09-14
    • 2014-05-04
    • 1970-01-01
    • 2014-09-08
    • 2019-07-14
    相关资源
    最近更新 更多