2011-07-28 14 views
2

私のプロジェクトでサードパーティのライブラリを使用しています。それをMainLibNET.dllのように呼んでください。私はReferences私のプロジェクトのこのライブラリを追加しました。このDLLは他のDLLとの依存関係があります。彼らはネイティブなので、私はReferencesで追加できないこの他のDLL。私は\binで、この他のライブラリを置くが、私は私のプロジェクトを開始するとき、私はエラーを取得:サードパーティのDLLがASP.NET MVCプロジェクトの依存関係を見つけることができません

Could not load file or assembly 'MainLibNET.dll' or one of its dependencies 

サイトは、サーバーのリターンを開始したときのでMainLibNET.dllはその依存関係を見つけることができませんMainLibNET.dllない\binからではなく、ここから:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\e9b9d054\ddfaf4f8\assembly\dl3\8e683e03\00c3703b_919bcb01\MainLibNET.dll 

このフォルダにはMainLibNET.dll以外のファイルはありません。私はこのフォルダ内の他のdllをコピーする場合、それは正常に動作します。

手作業でコピーすることなく、私のプロジェクトや他の何かで私は何ができますか?

答えて

1

管理されたアセンブリは、ASP.NETによってシャドウコピーされます。このプロセスには、アンマネージライブラリが含まれていないため、解決できない理由が説明されています。 1つの可能性は、それらのネイティブライブラリをc:\windows\System32\Inetsrvフォルダに追加することです。もう1つの可能性は、環境変数PATHの一部であるフォルダにそれらを入れることです。

+0

ありがとう!私のライブラリをC:\ Windowsに追加する場合にのみ、私のために動作します。以下は、ASP.NetのC++アセンブリに関する詳細です。http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx –

0

私はthis blogに記載されているようにオプション2a(1c)に従い、美しく動作します。

  1. Visual Studioで、プロジェクトを右クリックして、それぞれのネイティブDLLのために既存のアイテムを追加します

  2. 右各追加DLLをクリックし、[プロパティ]を選択します。ビルドアクション=コンテンツと出力ディレクトリにコピー=常にコピーを設定します。これにより、VSはファイルをbinディレクトリにコピーします。

  3. 次のコードをGlobal.asaxに追加すると、ASP.NETはネイティブDLLをどこから探すかを知ることができます。

protected void Application_Start(object sender, EventArgs e) 
{ 
    String _path = String.Concat(System.Environment.GetEnvironmentVariable("PATH"), ";", System.AppDomain.CurrentDomain.RelativeSearchPath); 
    System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process); 
} 
関連する問題