2011-03-24 11 views
0

VC++で書かれたサードパーティのDLLとこのC++ライブラリにアクセスするためのサードパーティのC#dllを使用するWPF ClickOnceアプリケーションを配備しています。私はこれらのコンポーネントのそれぞれにVisual Studioソリューションを用意しており、リリース/ x86の両方の設定でビルドしました。プロダクションマシンにデプロイするときにSystem.DllNotFoundExceptionを取得する

私のアプリケーションもReleaseに設定されていますが、Visual Studioを持たないマシンにアプリケーションをデプロイすると、System.DllNotFoundExceptionが発生し、C#DLLが見つかりません。私はすべての必要なファイルが配備されたマシンの "Application Files"ディレクトリに存在することを確認しました。

ありがとうございました。

+0

デプロイされたマシンの実行可能ファイルのディレクトリに存在してはいけませんか? "データファイル"ではなく "インクルード"とマークされていることを確認してください。 – Reddog

+0

はい、C++ .dllとc#.dllは両方とも実行可能ファイルと同じフォルダにあり、両方ともInclude/Requiredとしてマークされています –

+0

私のアプリケーションがVS2008の間にVS 2010にサードパーティコンポーネントを構築したことを追加する必要があります。違いがあるかどうかは分かりません。 –

答えて

0

ほとんどの場合、これまでと同じようなケースでは、Microsoft Visual C++ CRT DLLを含めるのを忘れていました。

彼らは通常、私は単純に(あなたがVS 10.0以下であるすぎた場合、マニフェストファイル)のDLLをコピー

c:/program files (x86)/microsoft visual studio .net 10/vc/redist/... 

にどこか似てあなたのVisual Studioのインストールに含まれている私の実行ファイルがあるフォルダへ保存されます。

私は「通常」のインストーラを使用しているので、これはClickOnceにも当てはまるかどうかはわかりません。

+1

提案してくれてありがとうUwe。 CRT .dllを実行可能ファイルと同じフォルダに移動しましたが、同じエラーが表示されます。 –

+0

Uwe ...私は問題のマシンにVS 2010 C++ redist(私は第三者dllの依存関係であることが判明しました)をインストールすることで問題を解決することができました。あなたはredistをインストールすることができます実行可能ファイルのフォルダに2つのCRT DLLを追加するだけです。 –

+0

@Jon E - CRTはコンポーネントの1つに過ぎません。その他_may_にはATLとMFCのライブラリが含まれています。私にとっては、実行可能ファイルのフォルダにDLLをコピーするだけで十分でしたが、私はリブート設定は必要ありませんでした。 –

関連する問題