限制某些功能被调用的替代方法?

时间:2018-07-18 19:01:36

标签: c# .net-core .net-assembly appdomain partial-trust

我最近了解到{。{1}}在.NET Core中不完全受支持,到目前为止,他们还没有实现完全支持的计划。

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

由于缺少支持,.NET Core之前的way I used to solve this problem将不再起作用。

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

更具体的例子

比方说,我使用System.IO从文件系统加载了程序集,该文件系统包含一个我随后调用的插件方法。但是我不希望插件能够擦除文件等。实际上,我只希望插件能够从特定程序集中调用函数。

1 个答案:

答案 0 :(得分:4)

基本上,他们希望您针对要开发的环境使用平台边界。

  

沙箱

     

为什么停产了?

     

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

     

我应该改用什么?

     

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

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