我怎样才能防止糟糕的项目参考

本文关键字:项目 参考 | 更新日期: 2023-09-27 17:49:24

我们正在使用c#项目,TFS作为源代码控制和CI构建。

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

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

我怎样才能防止糟糕的项目参考

自定义活动添加到构建过程模板中。该活动的伪代码应该如下所示:

  • 编译阶段前执行。
  • 循环所有包含以*proj结尾的文件扩展名的新更改集。
  • 对于所有*proj文件,在其内容中搜索包含'BinHintPath元素。
  • 如果结果> 0,则退出构建并出现错误,列出策略失败的项目。

要完成解决方案,还可以考虑为VS客户端强制执行自定义签入策略

既然你正在使用PowerShell,你不妨用它来解决这个问题;原理很简单:解析所有的csproj文件并检查HintPath是否不包含您的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"
}