【问题标题】:Validating that each project imports our Common.Targets验证每个项目是否导入了我们的 Common.Targets
【发布时间】:2023-03-09 14:40:01
【问题描述】:

我管理着一个相当大的团队(5 个解决方案,约 150 个项目),使用 TFS2010 和门控签到。在我们的团队中,我们要求每个项目都导入我们自己的名为 Common.Targets 的文件,该文件执行大量构建时的工作。我已经指示团队中的每个人都这样做,并在上面写了一个 wiki 条目。

但是,人们在添加新项目时仍然忘记导入common.Targets,导致签入后各种麻烦。

有没有办法——一个 msbuild 命令行,我可以在我的 .sln 中放入一些东西等等——这样一个项目将无法编译,因此不会通过门控签入?

【问题讨论】:

    标签: tfs msbuild


    【解决方案1】:

    一种经典的方法是登记政策。由于没有针对您的要求的预定义策略,您可以相当轻松地编写自己的自定义策略 - 请参阅 How To: Create Custom Check-in Policies

    【讨论】:

    • 是的,此签入策略可以查看 .csproj 文件(或您关心的其他类型的项目)的未决更改,并进行 XML 查询以检查是否存在正确的目标导入。
    • 谢谢。这意味着我必须将我的签到策略 DLL 部署到团队中的每个人。不好玩,但我想我必须这样做。
    【解决方案2】:

    2 个选项:

    1. 按照 KMoraz 的建议,编写自定义签入策略 (How To),它将更改/添加的 .csproj 解析为 XML,并验证它们是否导入 Common.Targets。

      缺点:需要手动将其分发给团队中的所有开发人员,并管理更新(如果有)。

    2. 编写自定义 CodeActivity (How To)。它运行 msbuild MSBuildEmitSolution=1,将生成的 .sln.metaproj 解析为 XML 以获取 csproj 文件列表,然后按上述方式验证它们。

      缺点:开发人员只有在他的门控签入失败时才会看到错误。

    我决定选择 2。

    【讨论】:

    • 有一种方法可以使用 TFS 电动工具来distribute 策略。我自己没试过。
    猜你喜欢
    • 2014-08-11
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多