我必须将一些旧的.NET 2
代码移到.NET 4
项目中。它有下一行:
`return Assembly.LoadFrom(filePath, Assembly.GetExecutingAssembly().Evidence);`
正如它在微软(MSDN)中所说的那样:
注意:此API现已过时。非过时的替代方案是LoadFrom(String)。
我不熟悉Evidence
课程。从呼叫中删除Evidence
参数的风险是什么? Evidence
参数是否必要时的实际情况是什么?
提前感谢您的帮助
答案 0 :(得分:2)
证据参数用于提供代码访问安全性(CAS)策略机制在决定授予要加载的程序集的CAS权限时可以使用的数据。但是,在.NET 4.0中,“裸”CLR不再使用CAS策略(http://blogs.msdn.com/b/shawnfa/archive/2010/02/24/so-is-cas-dead-in-net-4-or-what.aspx,http://blogs.msdn.com/b/shawnfa/archive/2009/06/12/clr-v4-security-policy-roundup.aspx),因此不推荐使用API中的证据。通常只有两个原因可以解释为什么人们可能在针对早期.NET版本的代码中的LoadFrom调用中提供了证据:
对于#1,您可能在.NET 4.0中无所事事,因为默认情况下所有代码都将以不受限制的CAS权限(又名“完全信任”)运行。对于#2,建议的方法是使用sandboxed appdomain。