从GetHostEvidence()获取null

我正在尝试按照http://msdn.microsoft.com/en-us/library/bb763046.aspx创建一个沙箱来运行不受信任的代码。

当我在Sandboxer类中执行它时:

StrongName fullTrustAssembly = typeof(Sandboxer).Assembly.Evidence.GetHostEvidence(); 

我将返回null。 为什么? 我如何解决它?

根据您链接的页面,所有对GetHostEvidence()的调用都将提供StrongName作为类型参数。 如果程序集没有强名称(并非全部都是),则返回null。

您必须在申请表上签名。 最简单的方法是:

  1. 在Solution Explorer中右键单击您的项目 ,然后选择Properties
  2. 转到签名选项卡
  3. 检查签署组件
  4. 从下拉框中选择<新建...>
  5. 密钥文件名键入名称
  6. 密码是可选的,因此您可以取消选中使用密码保护我的密钥文件
  7. 单击确定

再次在Sandbox示例中运行Run Partially Trusted Code 。 它应该工作。