私は Visual Studio 2008 SP1、2 つの C++/CLI プロジェクト、proj1 と proj2 を持っています。proj2 は proj1 に依存していますが、奇妙な方法です (以下を参照)。プロジェクトの依存関係で、proj2 が proj1 に依存することを指定します。また、proj2 参照には proj1 が含まれます。次に、proj1 を proj2 のフレンドにしたいので、「フレンド アセンブリ」の MSDN ページにあるように、proj2 のどこかに次のコードを記述します。
#「proj1.dll」をフレンドとして使用。
コンパイルすると、proj1.dll が既に参照されているため、proj2 プロジェクト設定からプロジェクト参照を削除する必要があることがわかります (したがって、/FU フラグを削除します)。
バグ (?) が発生します: proj2 から proj1 の参照を削除しても、ソリューションの Project Dependencies で proj2 が proj1 に依存することを指定すると、VS2008 ですべて正常にコンパイルされます。しかし、MSBUILD はプロジェクト参照を解析し、proj2 用の新しい一時プロジェクトを作成し、ADDS /FU:proj1.dll を作成し、BUILD は失敗します。
質問 1: この MSBuild の動作を無効にする方法はありますか?
次に、プロジェクトの依存関係で依存関係を削除すると、MSBuild は正常にビルドされますが、Visual Studio は proj1 と proj2 を並行してコンパイルしようとして失敗します。これは、proj2 がはるかに小さく、最初にコンパイルされるためです...ビルドと実行は役に立ちますが、すべての開発者マシンで実行する必要があります。この設定をソリューションに保存することはできません。ビルドが遅くなるなど...
質問 2:「プロジェクトの依存関係」を条件付きオプションにする方法はありますか? 私はVS2008とMSBuildのためにそれをしたい...