gpt4 book ai didi

c# - 同一模块在 .net 核心上的 AppDomain 中加载了两次

转载 作者:行者123 更新时间:2023-12-04 15:22:31 24 4
gpt4 key购买 nike

我有在 .net 核心和框架中运行的代码。大意是我通过反射调用DLL中的方法。为此,我首先创建一个程序集,然后调用其中的一个方法。实际逻辑是我需要相当复杂,但最重要的是,在 .net 核心上,同一个模块被加载到当前应用程序域中两次,而在框架上,它不是。

这是一个示例:

Assembly assembly = Assembly.LoadFile(pathToMyDll) //<--- Line 1
AppDomain.CurrentDomain.Load(assembly.GetName()); //<-- Line 2

现在我知道你不应该这样做,但如果你这样做,.net framework 将只包含当前 AppDomain 中程序集的一个副本,而 .net core 将包含两个完全相同的程序集。一个在第 1 行之后创建,另一个在第 2 行之后创建。第二次调用第 2 行没有任何作用。为什么会这样?为什么要在核心上以这种方式将两个程序集加载到 AppDomain 中?

测试是使用 .net core 3.1 和 framework 4.7.2 完成的。

谢谢。

最佳答案

我为此在 Microsoft 开了一张罚单。他们回答了框架和核心在这方面的行为差异。这是 git 问题,以防它对其他人有帮助:https://github.com/dotnet/runtime/issues/39783

关于c# - 同一模块在 .net 核心上的 AppDomain 中加载了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63001194/

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