ソース管理および CI ビルド用として、TFS を使用した C# プロジェクトを使用しています。
他の開発者がフォルダー (サードパーティのアセンブリを保持する場所) を/Bin
使用する必要があるときに、ディレクトリからアセンブリを誤って参照していることがわかりました。/Libs
ソリューション ビルドまたは CI ビルド (PowerShell も使用します) の一部として、誰かがこれを行った場合にビルドをチェックして失敗させるにはどうすればよいですか?
ソース管理および CI ビルド用として、TFS を使用した C# プロジェクトを使用しています。
他の開発者がフォルダー (サードパーティのアセンブリを保持する場所) を/Bin
使用する必要があるときに、ディレクトリからアセンブリを誤って参照していることがわかりました。/Libs
ソリューション ビルドまたは CI ビルド (PowerShell も使用します) の一部として、誰かがこれを行った場合にビルドをチェックして失敗させるにはどうすればよいですか?
ビルド プロセス テンプレートにカスタム アクティビティを追加します。アクティビティの疑似コードは次のようになります。
HintPath
すべての *proj ファイルについて、その内容を検索して、\Bin
.ソリューションを完成させるには、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"
}