如何防止错误的项目引用?

时间:2014-03-09 23:23:44

标签: c# powershell msbuild msbuild-target

我们正在使用带有TFS的C#项目作为源代码控制和CI构建。

我一直在发现其他开发人员在使用我们的/Bin文件夹(我们保留第三方程序集)时错误地引用/Libs目录中的程序集

如果有人这样做,我可以做什么作为解决方案构建或CI构建的一部分(我们也使用powershell)来检查和失败构建?

2 个答案:

答案 0 :(得分:1)

在构建流程模板中添加 custom activity 。活动的伪代码应如下所示:

  • 在编译阶段之前执行。
  • 循环包含以* proj。
  • 结尾的文件扩展名的所有新变更集
  • 对于所有* proj文件,请在其内容中搜索包含HintPath的{​​{1}}元素。
  • 如果结果> 0,退出构建并显示错误,列出策略失败的项目。

要完成解决方案,还请考虑为VS客户端强制执行custom check-in policy

答案 1 :(得分:0)

由于您使用的是PowerShell,因此也可以将它用于此问题;原理很简单:解析所有csproj文件并检查HintPath doe是否不包含Bin目录。在PowerShell中就是这样(我刚开始学习PS所以可能会有更短的方法):

# define path to bindir (or part of it) and main source dir
$binDir = path\to\Bin
$sourceDir = path\to\sourcefiles

# fix dots and slashes (or anything that cannot be used in regex
$binDirReg = $binDir -replace '\\', '\\' -replace '\.', '\.'

# parse
$res = Get-ChildItem -Recurse -Include *.csproj -Path $sourceDir |
       Select-String "HintPath>.*$binDirReg.*<"

if( $res )
{
  "ERROR somebody used Bin dir instead of Lib"
}