1

我必须将一些旧.NET 2代码移到.NET 4项目中。它有下一行:

`return Assembly.LoadFrom(filePath, Assembly.GetExecutingAssembly().Evidence);`

正如微软(MSDN)中所说:

注意:此 API 现在已过时。非过时的替代方法是 LoadFrom(String)。

我对Evidence班级不熟悉。从调用中删除参数有什么风险?Evidence需要参数时的真实情况Evidence是什么?

在此先感谢您的帮助

4

1 回答 1

3

证据参数用于提供代码访问安全 (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. 允许程序集以比其他方式授予的权限更多的权限运行,或
  2. 要限制程序集的权限,请删除在程序集的默认证据下本应授予的权限。

对于 #1,您可能在 .NET 4.0 中无事可做,因为默认情况下,所有代码都将以不受限制的 CAS 权限(又称“完全信任”)运行。对于 #2,推荐的方法是使用沙盒 appdomain

于 2011-07-26T12:01:48.523 回答