Tfs 验证每个项目是否导入我们的公共.Targets

Tfs 验证每个项目是否导入我们的公共.Targets,tfs,msbuild,Tfs,Msbuild,我运行了一个相当大的团队(5个解决方案,约150个项目),使用TFS2010和门控签入。在我们的团队中,我们要求每个项目导入一个我们自己的名为Common.Targets的文件,该文件执行大量构建时工作。我已经指示团队中的每个人都这样做,并在上面写了一个wiki条目 然而,人们在添加新项目时仍然忘记导入公共目标,这在签入后造成了各种各样的麻烦 是否有一种方法(msbuild命令行、我可以在.sln中输入的命令行等)使这样的项目无法编译,因此无法通过门控签入?经典方法是签入策略。由于您的需求没有预

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

然而,人们在添加新项目时仍然忘记导入公共目标,这在签入后造成了各种各样的麻烦


是否有一种方法(msbuild命令行、我可以在.sln中输入的命令行等)使这样的项目无法编译,因此无法通过门控签入?

经典方法是签入策略。由于您的需求没有预定义的策略,因此您可以相当轻松地编写自己的自定义策略-请参阅。

经典方法是签入策略。由于您的需求没有预定义的策略,因此您可以非常轻松地编写自己的自定义策略-请参阅。

2选项:

  • 按照KMoraz的建议,编写一个自定义签入策略,将changed/added.csproj解析为XML,并验证它们是否导入Common.Targets

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

  • 编写自定义代码活动。它运行msbuild MSBuildEmitSolution=1,将生成的.sln.metaproj解析为XML以获取csproj文件列表,然后如上所述验证它们

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

  • 我决定选择2。2个选项:

  • 按照KMoraz的建议,编写一个自定义签入策略,将changed/added.csproj解析为XML,并验证它们是否导入Common.Targets

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

  • 编写自定义代码活动。它运行msbuild MSBuildEmitSolution=1,将生成的.sln.metaproj解析为XML以获取csproj文件列表,然后如上所述验证它们

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


  • 我决定使用2。

    是的,此签入策略可以查看.csproj文件(或您关心的其他类型的项目)的挂起更改,并进行XML查询以检查是否存在正确的目标导入。谢谢。这意味着我必须将签入策略DLL部署到团队中的每个人。不好玩,但我想我必须这样做。是的,此签入策略可以查看.csproj文件(或您关心的其他类型的项目)的挂起更改,并进行XML查询以检查是否存在正确的目标导入。谢谢。这意味着我必须将签入策略DLL部署到团队中的每个人。这不好玩,但我想我必须这么做。有一种方法可以使用TFS电动工具来制定政策。我自己还没有尝试过。有一种方法可以使用TFS电动工具来修改策略。我自己也没试过。