3

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

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

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

4

2 回答 2

1

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

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

要完成该解决方案,还可以考虑为 VS 客户端实施自定义签入策略

于 2014-03-10T15:15:55.647 回答
0

由于您使用的是 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"
}
于 2014-03-10T08:28:27.257 回答