我有一个web服务的测试项目,当我在调试模式下运行测试时,一切正常。然而,当我只是运行测试时,我得到了以下错误,对于一个引用的程序集,我试图获得代码覆盖率:
类初始化方法WebServiceTest.wstest.MyClassInitialize抛出异常。System.IO.FileLoadException: System.IO.FileLoadException:无法加载文件或程序集'TestAssembly、Version=1.0.0.0、Culture=neutral、PublicKeyToken=57f286581e1d278a‘或其依赖项之一。强名称验证失败。( HRESULT: 0x8013141A除外)--> System.Security.SecurityException:强名称验证失败。(HRESULT除外: 0x8013141A)。我发现的所有关于在GAC注册TestAssembly的信息。这就是我该做的吗?为什么它在调试模式下工作?谢谢
发布于 2010-07-19 09:28:39
我也遇到了同样的问题,下面的链接帮助了我.
http://weblogs.asp.net/soever/archive/2005/07/23/420338.aspx
VS.NET 2005:我目前正在使用VS.NET 2005开发一个应用程序集的代码覆盖率,而且由于所有的TDD工具(如单元测试和代码覆盖)都可用,所以我开始使用它们。
当我开始对已签名的应用程序进行代码覆盖时,我得到了以下异常:
测试方法X抛出异常: System.IO.FileLoadException:无法加载文件或程序集'Y、Version=1.0.0.0、Culture=neutral、PublicKeyToken=Z‘或其依赖项之一。HRESULT: 0x8013141A强名称验证失败。-> System.Security.SecurityException:来自HRESULT的异常: 0x8013141A强名称验证在X.
如果你想一想,就不会那么奇怪了。程序集已签名,代码覆盖率需要代码检测,意味着程序集的修改,导致程序集不正确,因此验证失败。
解决办法是在仪表安装后辞职装配。
如果在解决方案项中打开localtestrun.testrunconfig文件(或类似的文件)(双击它),则可以在“代码覆盖率”部分启用辞职。这解决了问题。
发布于 2011-05-10 18:23:18
还可以通过执行以下命令,简单地禁用特定机器上所有签名的程序集检查:
sn.exe -Vr *但是,小心使用,因为这会打开一个安全漏洞。我们在为我们测量覆盖率的内部虚拟机上使用这种方法。查看一下sn.exe的使用情况,因为可以缩小该命令的范围。
发布于 2014-11-26 20:23:11
我正在和VS.Net终极2012公司合作
这个解决方案帮了我:
右键单击Test > properties-> Build >开关生成序列化程序集到off->已完成
https://stackoverflow.com/questions/2989037
复制相似问题