1

我最近了解到AppDomain.NET Core 不完全支持它,而且他们到目前为止还没有实现完全支持的计划。

我想做的是制作一个可以运行插件的程序,但我不希望该插件能够访问某些程序集或命名空间(例如System.IO)。

由于缺乏支持,我在 .NET Core 之前解决此问题的方法将不再有效。

有没有其他方法可以在 .NET Core 中实现相同的目标?

更具体的例子

假设我使用Assembly.LoadFrom文件系统加载程序集,其中包含我然后调用的插件方法。但我不希望插件能够擦除文件等。事实上,我只希望插件能够从特定程序集中调用函数。

4

1 回答 1

4

基本上,他们希望您将平台边界用于您正在开发的环境。

沙盒

为什么停产了?

沙盒,即依赖运行时或框架来限制托管应用程序可以访问哪些资源,被认为是 .NET Core 的非目标。沙盒应用程序和组件也很难正确处理,这就是为什么通常建议客户不要依赖它的原因。它还使实现更加复杂,并且通常会对不使用沙盒的应用程序的性能产生负面影响。因此,我们不在 .NET Core 中提供沙盒功能。

我应该改用什么?

使用操作系统提供的安全边界,例如运行具有最少权限集的进程的用户帐户。

https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/

于 2018-07-18T19:13:06.557 回答