【问题标题】:asp.net 3.5 referencing project with assembly reference throws signing/strong name error in Unit Test带有程序集引用的 asp.net 3.5 引用项目在单元测试中引发签名/强名称错误
【发布时间】:2011-01-31 00:51:20
【问题描述】:

我引用了数据层中的 MySQL.Data 5.2.3 程序集,太好了。我目前有小型控制台应用程序 inteh 相同的解决方案引用只是这个数据层连接得很好。然后我创建了一个单元测试项目(也在同一个解决方案中)并引用了同一个数据层项目,并从中得到:

测试方法 LTTests.WrapperTest.LoginTest 抛出异常:System.IO.FileLoadException: 无法加载文件或程序集 'MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' 或其中之一它的依赖关系。无法验证强名称签名。该程序集可能已被篡改,或者它被延迟签名但未使用正确的私钥完全签名。 (HRESULT 异常:0x80131045)。

所以我试图理解...我可以为控制台 exe 执行此操作,它可以工作但不能进行单元测试?这让我很紧张要建立在明显有缺陷的东西上,但我不知道下一步该做什么。我迷路了,我一直在重新添加各种东西,寻找交易是什么,我不知道。

异常来自数据层而不是来自测试(每个堆栈),所以就像测试正在调用层的方法(duh)并且数据层正在呕吐但不是为了控制台?

谢谢。

【问题讨论】:

    标签: c# .net reference .net-assembly


    【解决方案1】:

    这不是为什么会出现错误的答案,而是找出错误的可能方法:

    您可以使用属于 dotnet sdk 的“Assembly Binding Log Viewer”(Fuslogvw.exe)来找出加载的内容和原因。

    如果启用了日志记录,它可以显示从哪个目录加载了哪些程序集以及哪个程序集导致它加载。

    详情见http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.80).aspx

    所以可能存在不同版本的 MySql.Data,错误消息意味着找到的版本号不是它所期望的。

    【讨论】:

    • 其实这很有帮助。现在考虑一下,我在这台机器上安装了 5.2.7,但客户端必须使用 5.2.3,所以 GAC 版本可能会以某种方式取代引用的版本。我去看看,谢谢。
    • 你帮助我到达那里。我继续卸载 5.2.7 只是为了消除任何混乱,但仍然无法正常工作。然后我尝试将 5.2.3 dll 添加到 GAC,但由于缺少强名称而失败。奇怪...所以我查看了属性,实际上它没有名称(不知道为什么)。所以我从客户端的服务器上提取了复制的 DLL,这一次有一个名字......瞧。总而言之:不知道为什么控制台应用程序还可以,而测试却不行,但我可以编写测试,这是重点。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多