[从内存中,Microsoft夺走了AppDomain
,并且该机制已关闭。
现在我突然发现AppDomain
已经回来:
Assembly System.Runtime.Extensions,版本= 4.2.1.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a \ dotnet \ packs \ Microsoft.NETCore.App.Ref \ 3.0.0 \ ref \ netcoreapp3.0 \ System.Runtime.Extensions.dll
程序集包含AppDomain类。
这是我的问题:为什么?
为什么停产? AppDomains需要运行时支持,并且通常相当昂贵。虽然仍由CoreCLR实施,在.NET Native中不可用,我们不打算添加它有能力。
我应该改用什么? AppDomain用于不同的目的。对于代码隔离,我们建议使用流程和/或容器。对于组件的动态加载,我们建议使用新的AssemblyLoadContext类。
此外
当然,只是因为某些东西不是今天在.NET Core中可用并不意味着我们已停止使用它。多数情况情况,这仅表示我们没有时间调查是否移植会有意义或不认为与.NET Core当前提供的应用程序模型。因此,这是一个区域我们非常希望获得您的反馈。
那么实际支持什么?
在.NET Core上,AppDomain实现受到设计和不提供隔离,卸载或安全性边界。对于.NET Core中只有一个AppDomain。隔离和卸载是通过AssemblyLoadContext提供。安全边界应为由过程边界和适当的远程处理技术提供。
它用于某些任务,但是在很多情况下不支持方式。
适用于
。NET Core
- 3.0 2.2 2.1 2.0
。NET Framework
- 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0 1.1
。NET标准
- 2.1 2.0
那么,如果您使用不受支持的内容,会发生什么?
它不在那里,或者根据何时何地以及原因,您会得到明显的throw new NotSupportedException
或PlatformNotSupportedException
讨厌
进一步阅读