Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memuatkan Perhimpunan dan Rujukannya secara Rekursif ke dalam AppDomain Berasingan?

Bagaimana untuk Memuatkan Perhimpunan dan Rujukannya secara Rekursif ke dalam AppDomain Berasingan?

Linda Hamilton
Lepaskan: 2025-01-15 12:16:48
asal
640 orang telah melayarinya

How to Recursively Load Assemblies and Their References into a Separate AppDomain?

Memuatkan perhimpunan dengan rujukan rekursif dalam AppDomain

Apabila memuatkan perhimpunan ke dalam domain aplikasi yang berasingan (AppDomain), anda juga perlu memuatkan rujukannya secara manual. Jika tidak, ralat FileNotFoundException mungkin disebabkan oleh kebergantungan yang hilang.

Untuk memuatkan perhimpunan dan semua rujukannya secara rekursif, disyorkan:

<code class="language-C#">// 在当前 AppDomain 中创建一个代理类。
class Proxy : MarshalByRefObject
{
    public Assembly GetAssembly(string assemblyPath) => Assembly.LoadFile(assemblyPath);
}

// 创建一个新的 AppDomain。
AppDomain domain = AppDomain.CreateDomain("MyDomain", null, domaininfo);

// 在新的 AppDomain 中创建一个代理实例。
var value = (Proxy)domain.CreateInstanceAndUnwrap(
    typeof(Proxy).Assembly.FullName,
    typeof(Proxy).FullName);

// 使用代理将程序集加载到新的 AppDomain 中。
var assembly = value.GetAssembly(assemblyPath);

// 迭代程序集的引用并递归加载它们。
foreach (AssemblyName refAsmName in assembly.GetReferencedAssemblies())
{
    LoadAssemblyWithReferences(refAsmName, domain);
}</code>
Salin selepas log masuk

Gunakan LoadFrom() dan LoadFile() untuk memuatkan pemasangan

Memuatkan pemasangan menggunakan LoadFrom() akan cuba mencari pemasangan dalam GAC atau folder bin AppDomain semasa. Operasi ini mungkin gagal jika pemasangan tidak berada di salah satu lokasi ini.

Sebaliknya, LoadFile() memuatkan perhimpunan daripada laluan fail tertentu. Kaedah ini memerlukan anda memuatkan semua kebergantungan secara manual. Walau bagaimanapun, ia memberikan kawalan yang lebih besar ke atas proses pemuatan pemasangan.

Mengikuti langkah di atas, pemasangan dan semua rujukannya boleh dimuatkan secara rekursif ke dalam AppDomain yang berasingan, membolehkan persekitaran pelaksanaan yang lebih terpencil dan terkawal.

Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Perhimpunan dan Rujukannya secara Rekursif ke dalam AppDomain Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan