gpt4 book ai didi

c# - 在新 AppDomain 中加载程序集而不在父 AppDomain 中加载它

转载 作者:IT王子 更新时间:2023-10-29 04:50:29 26 4
gpt4 key购买 nike

我正在尝试将一个 dll 加载到控制台应用程序中,然后将其卸载并完全删除该文件。我遇到的问题是,在其自己的 AppDomain 中加载 dll 的行为会在父 AppDomain 中创建一个引用,因此除非我完全关闭程序,否则不允许我破坏 dll 文件。对使此代码起作用有任何想法吗?

string fileLocation = @"C:\Collector.dll";
AppDomain domain = AppDomain.CreateDomain(fileLocation);
domain.Load(@"Services.Collector");
AppDomain.Unload(domain);

顺便说一句,我也试过这段代码,但也没成功

string fileLocation = @"C:\Collector.dll";
byte[] assemblyFileBuffer = File.ReadAllBytes(fileLocation);

AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ApplicationBase = Environment.CurrentDirectory;
domainSetup.ShadowCopyFiles = "true";
domainSetup.CachePath = Environment.CurrentDirectory;
AppDomain tempAppDomain = AppDomain.CreateDomain("Services.Collector", AppDomain.CurrentDomain.Evidence, domainSetup);

//Load up the temp assembly and do stuff
Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer);

//Then I'm trying to clean up
AppDomain.Unload(tempAppDomain);
tempAppDomain = null;
File.Delete(fileLocation);

最佳答案

好的,所以我在这里解决了我自己的问题。显然,如果您调用 AppDomain.Load,它会将其注册到您的父 AppDomain。所以很简单,答案就是根本不引用它。这是显示如何正确设置的站点的链接。

https://bookie.io/bmark/readable/9503538d6bab80

关于c# - 在新 AppDomain 中加载程序集而不在父 AppDomain 中加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com