MSTest运行失败,因为源程序集不受信任



我刚刚将xUnit添加到我们的测试项目中(对于断言,我们仍然使用MSTest作为框架),测试运行立即拒绝执行任何测试。这是错误消息:

未能将测试运行"{….}"排队测试运行部署问题:文件或目录的位置'。。。"xUnit.dll"不受信任。

我花了几次时间才在谷歌上找到答案,所以我把它放在这里,以防其他人遇到同样的问题。详细描述可以在这篇博客文章中找到。

基本上,修复需要在Windows资源管理器中右键单击dll文件(例如xunit.dll),转到"属性",然后单击"安全"文本旁边选项卡底部的"取消阻止"。Vista/Windows 2008似乎会自动将来自其他机器或互联网的程序集标记为不安全。

正如一些评论者所提到的,您可能还需要重新启动Visual Studio才能使其生效。

在我的团队中,我们遇到了同样的问题。

您的解决方案不起作用,但Charles Sterling的这篇文章确实有所帮助。

我们使用了以下行:

caspol -machine -addgroup 1 -url file://\server/share/* FullTrust -name DevShare

在遇到这个问题并花费数小时试图让"Unblock"持续几分钟以上和/或找出caspol都无济于事之后,我终于通过谷歌发现了一个小消息,即程序集将在下次构建或重建项目时再次被阻止,因为它们是从原始源位置重新复制的。(我想我以前从未注意到引用程序集发生过这种情况,但无论如何…)

我对此的解决方案如下:

  1. 将所有需要的DLL复制到另一个安全保管点

  2. 移除Visual Studio 中的引用

  3. 物理删除中的DLL垃圾箱文件夹

  4. 取消阻止DLL在他们所在的地方已从中复制

  5. 添加引用从等待点

随后的每一次构建或重建都很顺利。

在XP机器上运行(即使安装了.NET 3.5 SP1),我也无法使用此处列出的任何其他解决方案。

然而,在戴维·兰德曼引用的查尔斯·斯特林的同一篇文章中,我最终成功地完成了这个变体:

  1. 运行.NET 2.0配置工具(设置…控制面板…管理工具….NET Framework 2.0配置)
  2. 向下单击"我的计算机…运行时安全策略…计算机…代码组…所有代码"
  3. 创建一个成员条件为"Zone"="Local Intranet"的新代码组,并分配权限集"FullTrust"
  4. 重新启动Visual Studio

在这些步骤之后,我可以运行测试,包括在重新启动和重建之后。

编辑:如本答案所述,您可能需要安装.NET SDK(与.NET框架不同),以便在系统上安装.NET 2.0配置工具。

我在moq方面也遇到了同样的问题。但不会"解锁"。每次我解除阻止,它仍然被阻止!?!?

我不得不取消阻止我下载的原始zip文件。然后再次从zip文件中复制DLL。之后它就工作了。

现在可能看起来很明显,但当我单击取消阻止时,文件被设置为只读。

只有在取消检查该属性、应用并选择取消阻止后,我才真正做到了这一点。

试试看。

:)

附言:我还删除了我的bin文件夹中的所有旧dll,只是为了确保Visual Studio没有拾取旧dll。

我在下载的DLL被Vista阻止时遇到了同样的问题。您需要管理员权限才能获得文件属性上的"取消阻止"按钮。我只是用源代码管理(TFS)的最新版本替换了DLL,我以前在那里提交过它们。

  • 转到file
  • 右键单击并选择Properties
  • 在第一次注册时,单击Allow

我还尝试在notepad++中打开该文件并重命名它。方法略有不同,但对我来说有效。然后本地文件系统认为它来自同一台机器。

需要解除阻止的不仅仅是moq.dll。最新的zip文件包括一个moq.xml和moq.pdb文件——引用dll也将这两个文件复制到bin文件夹中。我发现,如果这三个都没有被解除阻止,测试就不会运行。