2

60 個のプロジェクトを含む中規模の VisualStudio ソリューションがあります。すべてのプロジェクトには、コード コントラクトが含まれています。前提条件にを使用するContract.Requires<T>ため、コンパイル後にアセンブリを書き直す必要があります。

アセンブリ モードは「Standard Contract Requires」、ランタイム チェックは「full」に設定され、「Assert on contract failure」が設定されています。コントラクト参照アセンブリは「ビルド」に設定されています。

VS2010 から VS2012 に変更した後 (VS2010 はインストール前にアンインストールされました)、ソリューションは1 分30 秒でビルドされます。CodeContracts インストール パッケージをインストールした後、ビルド時間は 5 分 30 秒に増加しまし(バイナリ リライターがアセンブリを書き換えているため)。

これは、完全な再構築に約 3 分かかった VS2010 でソリューションを構築するのにかかったよりもはるかに長い時間です。

誰かが同様の減速を経験したことがありますか、または状況を改善する方法を知っていますか?

コントラクト参照アセンブリのビルドを無効にしようとしましたが、何も変わりませんでした。

4

3 に答える 3

0

静的チェッカーで深刻な速度低下に気付きましたが、それがここに当てはまるかどうかはわかりません. 私は肯定的ではありませんが、最近キャッシングの仕組みが変わったと思います。デフォルトではファイルベースのキャッシュを使用していたと思いますが、そのオプションはもうありません。プロジェクトの CC 設定には、キャッシュに使用する SQL インスタンスを指定するオプションがあります。正しく理解するにはしばらく時間がかかりましたが、私は自分のマシンで SQL Express インスタンスを使用しています。「キャッシュ結果」をチェックし、「SQL Server」を に設定しました.\SQLEXPRESS。ツールを実行すると、キャッシュが機能していないときに出力ウィンドウにキャッシュに関するメッセージが表示されます。

于 2013-08-22T19:01:20.173 に答える
0

新しいソリューションを開始するとき、最初に行うことは、新しいソリューション構成を作成することです。

  1. デバッグ
  2. デバッグCC
  3. リリース

次に、Debug CC で Code Contracts のみを有効にします。これにより、デバッグ モードで高速にコンパイルし、コミットが近づいたときにコード コントラクト ビルドに切り替えることができます。

于 2014-06-18T15:12:26.943 に答える