【发布时间】:2015-09-05 17:50:52
【问题描述】:
我正在使用带有程序集的“InternalsVisibleTo”属性来向我的单元测试项目公开内部方法/类。
我现在需要将该程序集安装到 GAC 中,所以我需要给它一个强名称。当我尝试这样做时,我在 Visual Studio 中收到以下错误。
强名称签名的程序集必须在其 InternalsVisibleTo 声明中指定一个公钥
一点谷歌搜索把我带到了下面的文章:
https://msdn.microsoft.com/en-us/library/bb763089.aspx
这篇文章说:
“确定强名称好友程序集的公钥。”
本文没有说如何确定公钥。我在哪里可以找到程序集的公钥?另外,一旦我有了公钥,这是声明属性的正确方法吗?
[assembly: InternalsVisibleTo("Namespace.Assembly.Example.Name, PublicKey=ThePublicKey")]
【问题讨论】:
-
我试过了。它说使用 SN.exe,但这仅在程序集被强签名时才有效。由于上述错误,我无法将我的程序集编译为强类型。 SN.exe 报错“.dll 不代表强命名程序集”
-
看来先有鸡还是先有蛋,需要other程序集的公钥。
-
您的“朋友”程序集必须经过严格签名才能在“内部可见”中使用,并且您需要该其他程序集的令牌。
-
我的单元测试程序集的公钥?
标签: c# .net-assembly