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

MSTest run fails because source assembly is not trusted

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

Failed to queue test run '{ .... }'
Test run deployment issue: The
location of the file or directory
'...xUnit.dll' is not trusted.


我花了一些努力才能在Google中找到答案,所以我把它放在这里,以防其他人遇到相同的问题。可以在此博客文章中找到详细说明。

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

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


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

您的解决方案无效,但是Charles Sterling的这篇文章确实有所帮助。

我们使用以下行:

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


在遇到了这个问题并花费了数小时试图使" Unblock"停留超过几分钟和/或弄清楚caspol无效后,我终于通过Google发现了一个小窍门,该程序集将在下次构建时再次被阻止或重建项目,因为它们是从原始源位置重新复制的。 (我想我从来没有注意到这在引用程序集之前发生过,但是无论如何...)

我对此的解决方法如下:

  • 将所有需要的DLL复制到另一个
    保管场所

  • 去除
    Visual Studio中的引用

  • 物理删除DLL中的
    bin文件夹

  • 解除阻止DLL
    分别在他们所在的地方
    被复制了

  • 添加参考
    从Visual Studio返回
    等待点

  • 之后的每个后续构建或重建工作都很好。


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

    但是,在戴维·兰德曼(Davy Landman)引用的查尔斯·斯特林(Charles Sterling)的同一篇文章中,我终于成功实现了这种变化:

  • 运行.NET 2.0配置工具(设置...控制面板...管理工具.... NET Framework 2.0配置)
  • 单击"我的电脑...运行时安全策略...计算机...代码组... All_Code"
  • 创建一个成员资格条件为" Zone" =" Local Intranet"的新代码组,并分配权限集" FullTrust"
  • 重新启动Visual Studio
  • 完成这些步骤后,我可以运行测试,包括重新启动和重建之后。

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


    我的起订量也有同样的问题。但是不会"解锁"。每次我取消阻止它时,它仍然被阻止!

    我必须取消阻止我下载的原始zip文件。然后再次从zip文件复制DLL。之后就可以了。


    现在看来确实很明显,但是当我单击"取消阻止"时,文件被设置为只读。

    只有取消选中该属性,然后应用,然后选择取消阻止,我才真正开始工作。

    放手

    :)

    PS:我还删除了bin文件夹中的所有旧dll,以确保Visual Studio不会拾取旧的dll。


    • 转到file
    • 右键单击并选择Properties
    • 在第一个寄存器上,单击Allow

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


    需要解锁的不仅仅是moq.dll。最新的zip文件包括moq.xml和moq.pdb文件-引用dll还将其他两个文件也复制到bin文件夹中。我发现,如果这三个条件都未被解除,则测试将无法运行。


    我也尝试在notepad ++中打开文件并重命名。
    略有不同的方法,但是对我有用。然后,本地文件系统认为它来自同一台计算机。