我的解决方案中有 2 个项目:
- 装配(基础库)
- 测试组件 (NUnit)
我已将测试程序集声明为第一个项目中的朋友程序集:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
一切都工作正常,直到我意识到我忘记设置解决方案来签署我的程序集。因此创建了一个 snk 文件并设置了 Visual Studio 项目来签署第一个程序集(基本库)。现在,当我编译第一个项目时,出现以下错误:
朋友组装参考
“公司.产品.测试”无效。
强名称签名的程序集必须
在其中指定一个公钥
InternalsVisibleTo 声明。
我尝试使用 sn 实用程序从我的 snk 文件中提取公钥,但它生成了一个有线二进制文件,我不确定如何使用该文件。我该如何解决这个问题?
您需要签名both程序集,因为两个程序集实际上相互引用。
您必须将公钥放入InternalsVisibleTo 属性中。例如,在协议缓冲区中我使用:
[assembly:InternalsVisibleTo("Google.ProtocolBuffers.Test,PublicKey="+
"00240000048000009400000006020000002400005253413100040000010001008179f2dd31a648"+
"2a2359dbe33e53701167a888e7c369a9ae3210b64f93861d8a7d286447e58bc167e3d99483beda"+
"72f738140072bb69990bc4f98a21365de2c105e848974a3d210e938b0a56103c0662901efd6b78"+
"0ee6dbe977923d46a8fda18fb25c65dd73b149a5cd9f3100668b56649932dadd8cf5be52eb1dce"+
"ad5cedbf")]
通过运行检索公钥
sn -Tp path\to\test\assembly.dll
或者,从 .snk 文件获取它:
sn -p MyStrongnameKey.snk public.pk
sn -tp public.pk
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)