私は、WCF サービスの ASP.NET ホストに取り組んでいます。サービスは C++/CLI ラッパー ライブラリを参照し、それ自体がアンマネージ DLL を参照します。この質問に基づいて、アンマネージ DLL を ASP.NET DLL に組み込みました。次に、次のように抽出します。
string[] dlls = new [] { "myDLL.dll", "myDLLD.dll" };
Assembly assembly = Assembly.GetExecutingAssembly();
string location = Path.GetDirectoryName(assembly.Location);
Dictionary<string, Stream> streams =
(from dll in dlls
select new KeyValuePair<string, Stream>(
dll, assembly.GetManifestResourceStream(typeof(Global), dll)))
.ToDictionary(p => p.Key, p => p.Value);
foreach (KeyValuePair<string, Stream> stream in streams)
{
using (FileStream file = new FileStream(Path.Combine(location, stream.Key),
FileMode.Create))
{
stream.Value.CopyTo(file);
}
}
Application_Start()
このコードをフォルダーGlobal.asax.cs
に入れてみましAppInitialize()
たが、どちらの場合も、どちらかの関数でブレークポイントがヒットする前にApp_Code
、ラッパー DLL またはその依存関係の 1 つをロードできなかったというイエロー スクリーンが表示されます。ブレークポイントをヒットできる唯一の方法は、アンマネージ DLL をシステム パスのどこかに配置することです (例: )。ASP が検索を開始する前に、必要な場所に DLL を取得するにはどうすればよいですか?C:\Windows\system