Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memuatkan Perhimpunan dan Ketergantungannya secara Rekursif ke dalam AppDomain Berasingan?
Memuatkan Perhimpunan dan Ketergantungan ke dalam AppDomain Berasingan: Pendekatan Rekursif
Memuatkan himpunan dengan kebergantungan yang rumit ke dalam AppDomain baharu boleh memberikan cabaran. Ralat seperti "Tidak dapat memuatkan fail atau pemasangan... atau salah satu kebergantungannya" kerap berlaku kerana perhimpunan yang dirujuk tidak dimuatkan secara automatik. Ini memerlukan proses pemuatan rekursif manual.
Penyelesaian melibatkan langkah-langkah utama ini:
Penciptaan AppDomain: Mula-mula, wujudkan AppDomain baharu:
<code class="language-csharp"> AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation; setup.ApplicationBase = dir; AppDomain domain = AppDomain.CreateDomain("SomeAppDomain", null, setup);</code>
Memuatkan Pemasangan Utama: Muatkan pemasangan utama menggunakan AssemblyName
:
<code class="language-csharp"> domain.Load(AssemblyName.GetAssemblyName(path));</code>
Resolusi Rujukan Rekursif: Lelaran melalui rujukan pemasangan yang dimuatkan dalam AppDomain baharu:
<code class="language-csharp"> foreach (AssemblyName refAsmName in Assembly.ReflectionOnlyLoadFrom(path).GetReferencedAssemblies()) { // Utilize a proxy object for cross-AppDomain access Type type = typeof(Proxy); var value = (Proxy)domain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName); // Load the referenced assembly in the target AppDomain value.GetAssembly(refAsmName.FullName); }</code>
Kelas Proksi untuk Interaksi Merentas Domain: Kelas Proxy
memudahkan komunikasi antara AppDomains:
<code class="language-csharp"> class Proxy : MarshalByRefObject { public Assembly GetAssembly(string assemblyPath) { try { return Assembly.LoadFile(assemblyPath); } catch (Exception) { return null; } } }</code>
Kaedah ini memastikan semua kebergantungan yang diperlukan dimuatkan secara rekursif ke dalam AppDomain sasaran, menghalang ralat masa jalan dan mendayakan pelaksanaan pemasangan yang berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Perhimpunan dan Ketergantungannya secara Rekursif ke dalam AppDomain Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!