2013-08-31 16 views
6

私のチームのグローバルルールを設定しようとしています。私たちはC#プロジェクトにVS2012をTFSと共に使用しています。私はいくつかの警告を抑制し、いくつかの警告をエラーとして扱いたいと思います。私はプロジェクトレベルでそれを行う方法を見つけました - プロジェクトプロパティ - >ビルドタブ。解決策レベルでの警告を抑制します。警告を解決レベルのエラーとして扱います

しかし、私たちは100以上のプロジェクトのソリューションを持っており、これらのルールをグローバルに設定する簡単な方法を探しています。

+0

これらの設定はソリューションには保存されていないため、マクロを記述するのは難しいです。 – rene

+0

複数のプロジェクトで同じルールセットファイルを使用できます。すでにそれを行っていると仮定し、各プロジェクトでそのファイルを手動で指定しないようにする方法が必要ですか? –

+0

私はちょうどこれらの事を深く掘り起こし始めました。だから私は本当にわからないと言わなければならない。私はルールセットがコード分析のために定義されていると思っており、それはコンパイラの警告とは異なるものだと思っていました。これまで私はルールセットに触れていませんでした... – jumbo

答えて

5

解決策は、プロジェクト用の(ちょっとばかげた)コンテナです。テキストエディタで開くとすぐに拡張することはできず、プロジェクトやアイテムだけを追加することができます。

コンパイラ/リンカ/ツールに必要なすべてのオプションを指定する1つ以上の共通のmsbuildファイルがあり、すべての単一プロジェクトでImportです。私たちはこれを長年にわたって使ってきましたが、便利です(手軽にグローバルプロパティをインポートするプロジェクトファイルを生成する小さなツールを作成して手動で処理する必要はありません)

また、マシンワイドファイルを追加するには、$(MSBuildToolsPath)\ Microsoft.CSharp.targetsを参照して、これらのファイルの場所を確認します。私はここでコンテンツをコピー/ペーストするつもりはありませんが、最初の行は基本的に$(MSBuildExtensionsPath)\ $(MSBuildThisFile)\ $(MSBuildThisFile)\ ImportBeforeなどのユーザー定義ファイルがあるかどうかを確認します。すべての共通のmsbuildの前にインポートされています。同様に、Microsoft.CSharp.targetsの最後には、すべての共通のmsbuildの後にファイルをインポートする同様のロジックが含まれています。

+0

とにかく、すべてのプロジェクトファイルを更新するためのスクリプトを書く必要があります(マシンワイドファイルは今のところオプションではありません)。 – jumbo

+0

実際には(手動ですべてのファイルを編集することは別として)唯一の方法と思われます。既存の ''行 - 私はcommon.propsへのrealtiveパスを使用することをお勧めしたい – stijn

関連する問題