我最近了解到{。{1}}在.NET Core中不完全受支持,到目前为止,他们还没有实现完全支持的计划。
我要做的是制作一个可以运行插件的程序,但我不希望该插件能够访问某些程序集或名称空间(例如AppDomain
)。
由于缺少支持,.NET Core之前的way I used to solve this problem将不再起作用。
在.NET Core中还有其他方法可以实现相同目的吗?
比方说,我使用System.IO
从文件系统加载了程序集,该文件系统包含一个我随后调用的插件方法。但是我不希望插件能够擦除文件等。实际上,我只希望插件能够从特定程序集中调用函数。
答案 0 :(得分:4)
基本上,他们希望您针对要开发的环境使用平台边界。
沙箱
为什么停产了?
沙箱处理(即依靠运行时或框架来限制托管应用程序可以访问哪些资源)被视为.NET Core的非目标。沙盒应用程序和组件的确也很难解决,这就是为什么通常建议客户不要依赖它的原因。这也使实施更加复杂,并且经常会对不使用沙箱的应用程序的性能产生负面影响。因此,我们不在.NET Core中提供沙箱功能。
我应该改用什么?
使用操作系统提供的安全性边界,例如用于运行具有最少特权集的进程的用户帐户。
https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/