Visual Studio 2008で失われたターゲットファイル

visual-studio-2008

私の解決策は主にC#ですが、C#コードが呼び出すDLLを作成するCプロジェクトが1つあります。 これがレイアウトです。

[編集:2つのレベルの間接参照があり、これが問題を引き起こしている]

解決策をMySolutionと呼びます。 4つのプロジェクトがあります。

MySolution MyCppDll(アンマネージドDLLの作成)MyCSharpWrapper(アンマネージドDLLのマネージラッパー)MyCSharpLibrary(ラッパーにアクセスするクラスを含む)MyCSharpProgram(MyCSharpLibraryからクラスを作成する)

MyCppDllが最初にコンパイルされ、次にラッパー、ライブラリ、およびプログラムがコンパイルされるように、依存関係を正しく設定しました。 ただし、IDE内でビルドすると、MyCppDllの出力はMyCSharpLibraryの出力ディレクトリにコピーされません。

MyCharpLibraryのビルド後のステップを作成し、MyCppDll.dllをMyCSharpLibrary \ bin \ Debug(または\ Release)ディレクトリにコピーすることで、この問題を回避できます。

しかし、MyCSharpProgramがコンパイルされると、ラッパーとライブラリに関連付けられているファイルは取得されますが、DLLは取得されません。 繰り返しますが、ビルド後の手順でそれを実行することもできますが、それは2つの理由から理想的とは言えません。

実際のソリューションには数十のプロジェクトがあり、その多くはMyCSharpLibraryを参照しています。 想像できるように、それぞれにポストビルドステップを作成するのは面倒で、エラーを起こしやすいものです。 そのアセンブリを参照する新しいプロジェクトを追加するたびに、ビルド後のステップをもう1つ作成する必要があります。

そしてそれは必要ではないはずです。 コマンドラインからこのソリューションを構築すると、DLLはMyCSharpLibraryディレクトリから正常にコピーされます。 つまり、IDEからビルドしたディレクトリMyCSharpProgram \ bin \ Debugには、MyCSharpProgram.exe、MyCSharpLibrary.dll、MyCSharpWrapper.dll(および関連する.pdbファイル)が含まれています。 しかし、(MSBuildを使用して)コマンドラインからビルドした場合、ディレクトリにはそのすべてとAND MyCppDll.dllが含まれます。

他に誰かがこの問題に遭遇したことがありますか? 私はVisual Studio 2008を使用していて、まだSP1にアップグレードしていません。

[編集 – 問題は、ProgramプロジェクトからWrapperプロジェクトへの直接参照がない限り、ファイルはコピーされないということです。 つまり、MyCSharpProgramプロジェクトにMyCSharpWrapperへの参照を追加すると、DLLがコピーされます。 繰り返しますが、これはIDEでのみ発生します。 コマンドラインから構築するとき、それはその参照なしでうまく働きます。]

  0  0


ベストアンサー

ビルドを使用するとき、ビジュアルスタジオとCとC#プロジェクトの混在で問題がありました。 それから私達はRebuildだけを使うように切り替えました、そしてそれは働きました。 おそらくコマンドラインから再構築してIDEでビルドします。

ちなみに、プロジェクトは何らかの形でそれに依存しているので、この参照が存在する必要があるのではないでしょうか。

1


タイトルとURLをコピーしました