2

私は何十ものカスタム コード分析ルールを作成しました。ルールは、Visual Studio 2010 を対象として開発されました。必要に応じて、アセンブリには FxCopSdk、Microsoft.Cci、および Microsoft.VisualStudio.CodeAnalysis のバージョン 10.0 への参照が含まれています。これらは Visual Studio 2010 で正しく実行され、TFS 2010 で正しくビルドされます。

Visual Studio 2012 に移行したいのですが、VS 2012 を使用して既存のソリューションでカスタム ルールを実行すると、CA0062 エラーが発生します。根本的な原因は、カスタム ルール アセンブリをロードする CA0053 エラーです。これらの 3 つのアセンブリへの参照は、Visual Studio 2012 のバージョン 11 に更新する必要があることを理解しています。これは、構成ファイルでバージョン リダイレクトを使用して行うことができます。Visual Studio 2012 IDE および FxCopCmd バイナリをリダイレクトすることでローカルで動作させることができますが、コードを TFS 2010 にチェックインするときに問題が発生します。

私たちが検討した明らかな解決策は 2 つありますが、どちらもあまり好ましいものではありません。1 つ目は、各開発者がローカルでリダイレクトすることを要求し、TFS ビルド エージェントもリダイレクトするように変更することです。2 つ目は、カスタム コード分析ルールの 2 つの分岐を維持することです。1 つはバージョン 10 (VS2010) を対象とし、もう 1 つはバージョン 11 (VS2012) を対象としています。

これを行うためのより良い方法はありますか?それとも、全員を TFS 2012 と Visual Studio 2012 に同時にアップグレードする必要がありますか?

4

2 に答える 2

0

プロジェクト ファイルを手動で編集し、2 つのインクルード ブロック (VS2010 用と VS2012 用) を記述してから、正しいブロックを使用する条件を定義することができます。msbuildでVS2010またはVS2012用にビルドするかどうかをどうにかして決定する必要があるだけです。

于 2013-02-05T13:21:07.103 に答える
0

あなたのアプローチと ZFE によって提案されたアプローチの間には、ほとんどすべての潜在的な候補があります。下位互換性が保証された FxCop の公式 SDK は存在しないため、選択肢がある場合は分岐を強くお勧めします。

運が良ければ、ルールに影響を与える動作または API サーフェスの変更にヒットすることはなく、2 つのブランチ間の唯一の違いは参照であるため、マージは簡単です。ただし、後で分岐する必要が生じた場合に代替アプローチに投資した時間は失われ、最終的に分岐が必要になる可能性は無視できません。

于 2013-02-05T14:04:19.927 に答える