单元测试强名称类库

时间:2017-05-11 11:48:45

标签: unit-testing nunit code-signing strongname

在Windows 7 64位计算机上,我有一个带有两个snk文件的类库的解决方案:“AcmePublic.snk”和“key.snk”

项目属性“签名”选项卡未选中“签署程序集”复选框,但“密钥文件”下拉框中显示“AcmePublic.snk”(灰色)。

这些行位于AssemblyInfo.cs文件中:

[assembly: AssemblyKeyFileAttribute("AcmePublic.snk")]
[assembly: AssemblyDelaySignAttribute(true)]

解决方案构建。

我使用NUnit NuGet包添加了一个类库。对于这个测试项目,我复制了相同的Project Properties Signing设置(未选中但选择了“AcmePublic.snk”)并添加了两个AssemblyInfo.cs行 - 将.snk文件复制到测试项目中。当然,我已经将库项目的引用添加到测试项目中,并创建了一个试图实例化其中一个类的测试。

此时解决方案将构建,但测试会抛出此错误:

Could not load file or assembly AcmeData.Test or one of it's dependencies. Strong name could not be verified. The assembly may have been tampered with...

此时,我检查项目签名选项卡中的“签署程序集”复选框并重建。在每个文件中选择“AcmePublic.snk”文件。解决方案构建但运行测试时出现相同的错误。

我现在选择“key.snk”并重新检查两个项目中的“签署程序集”复选框,重建并重新运行测试。同样的错误。

所以,现在我将项目属性设置为“AcmePublic.snk”,取消选中“签署程序集”,并在AssemblyInfo.cs文件中注释掉这一行:

[assembly: AssemblyDelaySignAttribute(true)]

请记住AssemblyInfo.cs仍然有这一行:

[assembly: AssemblyKeyFileAttribute("AcmePublic.snk")]

解决方案无法构建,出现此错误:

Key file 'AcmePublic.snk' is missing the private key needed for signing

现在我重新检查“签署程序集”复选框,并确保在两个下拉列表中都选择了“key.snk”。重建。建立好。

运行测试。错误:

Could not load file or assembly 'Dapper' or one of it's dependencies. A strongly-named assembly is required.

这个错误来自类库中的一行,而不是测试项目。

我该怎么办?

我应该如何设置一个类库项目以用作NuGet包(虽然是内部的)并且在类库使用Dapper时有一个NUnit测试项目?

0 个答案:

没有答案