静的CAは、ソリューションの構築をより遅くします。私の場合は、CAを使わない場合より2倍以上遅くなります。我々はそれを無効にすることができますが、それはその力を失うことは悪い決定です。 どうすればいいですか?コード解析の改善
まず、CAの仕組みを見てみましょう。
ソリューションを構築します。 msbuildの後にビルドされる各プロジェクトで、コンパイル対象fxcopcmd.exeが解析対象のアセンブリへのパスとともに呼び出されます。 fxcopcmd。 VS(または多分出力ストリーム)によって使用されるCA xmlログを生成します。 fxcopcmd.exeはアセンブリを高速に読み込んで同期的に解析するので、1つのCPUのみがロードされ、3つの場合は何もしません。 CAが完了した後でのみ、プロジェクト依存関係チェーンの次のプロジェクトが構築されます。
したがって、CAの弱い場所では、すべてのCPUを使用するよう並列に動作させることができます。
が、私はこのようなソリューションを参照
、MSBUILDからパラメータを取ることを覚えているし、すぐにCAのxml.logを通じて(すべてはokですし、エラーがなかったのMSBuildに報告する偽のfxcopcmd.exeを作るために、または成功したファイル、またはおそらくストリーム..)。 MSBUILDは次のプロジェクトをビルドします。その時、MSBUILDが次のプロジェクトでfxcopcmd.exeを呼び出すと、実際のfxcopcmd.exeを呼び出します...もう一度fxcopcmd.exeを呼び出します。すべてのCPUをロードするプロセスはほとんどありません。実際のfxcopcmd.exeが終了すると、MSBUILDターゲットが呼び出され、microsoft.common.targtetsのCAターゲットのみがコンパイルされて呼び出され、偽のfxcopcmd.exeが即座に結果を報告します(CAはその時点で終了し、ログがあります) MSBUILD-VSへ。
あなたはどう思いますか?これはCAのスピードアップでしょうか? なぜマイクロソフトはそのようなスタッフを作らず、CAでCPUを1つだけ使用しましたか?
なぜ異なるビルド構成を作成し、それを有効にするだけですか?次に、いつビルドするかを選択できます。 –