Membenamkan DLL Tidak Terurus ke dalam DLL C# Terurus
Membenamkan DLL tidak terurus dalam DLL terurus ialah teknik yang berguna untuk menyatukan dan melindungi kebergantungan. Walau bagaimanapun, ia mungkin mencabar untuk dicapai.
Isu:
Apabila cuba membenamkan DLL tidak terurus ke dalam DLL terurus menggunakan DllImport, anda menghadapi akses ditolak ralat.
Penjelasan:
Untuk membenamkan DLL yang tidak terurus sebagai sumber, anda perlu mengambil langkah tambahan selain daripada menambahkannya sebagai sumber terbenam dalam projek.
Penyelesaian:
Untuk berjaya membenamkan dan menggunakan DLL tidak terurus dalam DLL terurus:
Ekstrak dan Muatkan DLL Terbenam:
Gunakan Direktori Sementara Unik:
Kendalikan Pengecualian Penyalinan Fail:
Kod Contoh:
Kod berikut coretan menunjukkan proses pembenaman:
// Get a unique temporary directory for this assembly version string dirName = Path.Combine(Path.GetTempPath(), "MyAssembly." + Assembly.GetExecutingAssembly().GetName().Version.ToString()); if (!Directory.Exists(dirName)) Directory.CreateDirectory(dirName); string dllPath = Path.Combine(dirName, "MyAssembly.Unmanaged.dll"); // Extract the embedded DLL to the temporary location using (Stream stm = Assembly.GetExecutingAssembly().GetManifestResourceStream( "MyAssembly.Properties.MyAssembly.Unmanaged.dll")) { using (Stream outFile = File.Create(dllPath)) { CopyBytes(stm, outFile); } } // Load the extracted DLL explicitly IntPtr h = LoadLibrary(dllPath); Debug.Assert(h != IntPtr.Zero, "Unable to load library " + dllPath);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Berjaya Membenamkan dan Menggunakan DLL Tidak Terurus dalam DLL C# Terurus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!