3

ソース管理および CI ビルド用として、TFS を使用した C# プロジェクトを使用しています。

他の開発者がフォルダー (サードパーティのアセンブリを保持する場所) を/Bin使用する必要があるときに、ディレクトリからアセンブリを誤って参照していることがわかりました。/Libs

ソリューション ビルドまたは CI ビルド (PowerShell も使用します) の一部として、誰かがこれを行った場合にビルドをチェックして失敗させるにはどうすればよいですか?

4

2 に答える 2

1

ビルド プロセス テンプレートにカスタム アクティビティを追加します。アクティビティの疑似コードは次のようになります。

  • コンパイル フェーズの前に実行します。
  • *proj で終わるファイル拡張子を含むすべての新しい変更セットをループします。
  • HintPathすべての *proj ファイルについて、その内容を検索して、\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 に答える