You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 强签名程序集配置InternalsVisibleTo属性失败求助

强签名.NET 6项目中InternalsVisibleTo的正确配置方式

核心问题原因

强签名程序集使用InternalsVisibleTo时,必须指定目标程序集的完整公钥字符串,既不能用公钥令牌,也不能附带版本、区域文化等额外信息,这是你之前配置报错的根本原因。

正确配置步骤

1. 提取目标测试程序集的完整公钥

使用.NET SDK自带的sn.exe工具(需打开VS开发者命令行或.NET CLI环境),执行以下命令从你的签名密钥文件中提取公钥:

sn -p Key.snk PublicKey.txt

打开生成的PublicKey.txt文件,复制其中的公钥内容(去掉所有换行和空格,是一串较长的十六进制字符串)。

2. 配置InternalsVisibleTo属性

有两种配置方式,推荐使用SDK风格项目的直接配置方式:

方式一:通过项目文件(.csproj)配置(推荐)

在A.dll项目的.csproj文件中添加以下内容:

<ItemGroup>
  <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
    <_Parameter1>A.Test, PublicKey=这里替换为你复制的完整公钥字符串</_Parameter1>
  </AssemblyAttribute>
</ItemGroup>

方式二:通过AssemblyInfo.cs配置

如果你的项目仍保留Properties/AssemblyInfo.cs文件,在该文件中添加:

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("A.Test, PublicKey=这里替换为你复制的完整公钥字符串")]

关键注意事项

  • 必须使用完整公钥字符串,而非公钥令牌(公钥令牌是公钥的哈希摘要,长度较短,不符合要求)。
  • 属性值中仅保留程序集名称(A.Test)和PublicKey=公钥字符串,不能添加版本号、Culture、PublicKeyToken等任何额外信息。

内容的提问来源于stack exchange,提问作者Marius Bancila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:55:28