我怎样才能防止糟糕的项目参考
本文关键字:项目 参考 | 更新日期: 2023-09-27 17:49:24
我们正在使用c#项目,TFS作为源代码控制和CI构建。
我不断发现其他开发人员在应该使用我们的/Libs
文件夹(我们保存第三方程序集)时错误地引用/Bin
目录中的程序集
作为解决方案构建或CI构建的一部分(我们也使用powershell),如果有人这样做,我可以做些什么来检查和失败构建?
将自定义活动添加到构建过程模板中。该活动的伪代码应该如下所示:
- 编译阶段前执行。
- 循环所有包含以*proj结尾的文件扩展名的新更改集。
- 对于所有*proj文件,在其内容中搜索包含
'Bin
的HintPath
元素。 - 如果结果> 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"
}