【发布时间】:2018-05-03 23:01:28
【问题描述】:
我一直在设置一些测试用例,其中一部分是想确保我可以运行一些 EntityFramework 测试。
我无法加载驱动程序(本例中为 Npgsql)。我可以在应用程序中加载它,但不能在测试用例中加载。
我已经整理了一个显示问题的简单项目。 https://github.com/scornflake/StrongNameNightmare
a) 从应用程序加载程序集作品 b)在测试用例中,相同的 Assembly.Load 失败并显示 (无法加载文件或程序集 'Npgsql.EntityFrameworkCore.PostgreSQL, Version=2.0.2.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' 或其之一依赖关系。无法验证强名称签名。程序集可能已被篡改,或者是延迟签名但未使用正确的私钥完全签名。)
这两个文件(packages\ 中的一个和复制到程序集输出文件夹中的一个)的 SHA1 相同:
- 软件包的 SHA1 哈希\Npgsql.EntityFrameworkCore.PostgreSQL.2.0.2\lib\netstandard2.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll: 29261f08a466e3b5c24ff8d1aa1810b29c3ff8a5
- Tests\bin\Debug\Npgsql.EntityFrameworkCore.PostgreSQL.dll 的 SHA1 哈希: 29261f08a466e3b5c24ff8d1aa1810b29c3ff8a5
包\Npgsql.EntityFrameworkCore.PostgreSQL.2.0.2\lib\netstandard2.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll 的“sn -v”有效。
Tests\bin\Debug\Npgsql.EntityFrameworkCore.PostgreSQL.dll 的“sn -v”失败
Failed to verify assembly -- Strong name validation failed.
我假设未能验证 Npgsql 驱动程序的“测试”版本的强名称是在测试中加载程序集失败的根本原因。
我尝试禁用强名称验证 (sn -Vr *,*),但没有效果。
我在这里有点茫然。我不是 VS/Assemblies 方面的专家,也许有人可以解释为什么一个程序集不会在不同的文件夹中通过强名称验证?我觉得很奇怪。
【问题讨论】:
标签: .net .net-assembly xunit.net sn