私のソリューションは、いくつかのネイティブ C++/CLI ラッパーとマネージド ライブラリ/アセンブリで構成されています。ラッパー プロジェクトは、異なるネイティブ DLL プロジェクトを参照しています。ネイティブ依存関係の .cpp ファイルで実装の詳細を変更するたびに、すべての CLI/.NET プロジェクトが再構築されます (リンクされるだけでなく、再コンパイルされます)。これは、デバッグ構成でも発生します (プログラム全体の最適化ではありません..)。この動作には何か理由がありますか? ソリューションが非常に大きいため、再構築には多くの時間がかかるため、VS が不必要な再構築を回避できるとよいでしょう。
1 に答える
1
これは予期される動作です。.NET アセンブリは、アンマネージ DLL に「依存」し、DLL が変更されると、それを検出して再ビルドします。アンマネージ C++ プロジェクトのコンパイル単位は .cpp ファイルです。.NET アセンブリのコンパイル単位は、アセンブリ全体です。1 つの .cs (またはマネージド c++) ファイルだけを再コンパイルする方法はありません。
::GetProcAddress() を使用してアンマネージ DLL 内の操作への関数ポインタを取得することで、これを回避できます。次に、アンマネージ DLL の .lib ファイルに対する .NET アセンブリの依存関係を削除すると、.lib が変更されるたびに再コンパイルされなくなります。
于 2010-02-11T15:40:42.070 に答える