gpt4 book ai didi

c# - 如何声明一个 friend 集会?

转载 作者:IT王子 更新时间:2023-10-29 03:34:55 26 4
gpt4 key购买 nike

我的解决方案中有 2 个项目:

  1. 程序集(基本库)
  2. 测试程序集(NUnit)

我在第一个项目中将测试程序集声明为 friend 程序集:

[assembly: InternalsVisibleTo ("Company.Product.Tests")]

一切正常,直到我意识到我忘记设置解决方案来签署我的程序集。因此创建了一个 snk 文件并设置了 visual studio 项目来签署第一个程序集(基本库)。现在,当我编译第一个项目时,出现以下错误:

Friend assembly reference 'Company.Product.Tests' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.

我尝试使用 sn 实用程序从我的 snk 文件中提取公钥,但它生成了一个我不确定如何使用的有线二进制文件。我该如何解决这个问题?

最佳答案

您需要签署两个程序集,因为实际上这两个程序集相互引用。

您必须将公钥放在 InternalsVisibleTo 属性中。例如,在我使用的 Protocol Buffers 中:

[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

关于c# - 如何声明一个 friend 集会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com