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

遇到CS0272错误:友元程序集无法访问属性的internal set访问器

解决签名程序集下InternalsVisibleTo无法访问内部Set访问器的问题

问题根源

签名程序集后,CLR对InternalsVisibleTo特性的身份验证会严格执行,只要公钥填写错误、格式不符或程序集名称不匹配,都会导致内部成员(包括属性的internal set访问器)无法被友元程序集识别。

具体解决方案

  • 获取并填写完整公钥:
    禁止使用公钥令牌,必须填入友元程序集的完整公钥。可通过.NET SDK自带的sn.exe工具获取:

    sn -Tp FriendAssembly.dll
    

    复制输出的完整公钥字符串(注意不要包含公钥令牌部分),直接粘贴到InternalsVisibleTo特性的PublicKey=后方。

  • 严格遵循特性语法格式:
    特性字符串里的逗号后不能加空格,公钥部分需连续无换行,正确格式示例:

    [assembly: InternalsVisibleTo("FriendAssembly,PublicKey=00240000048000009400000006020000002400005253413100040000010001003835e39d7f82273e29c5a6c4f8b3b6a5d2f7e1e5b5a4e6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1")]
    
  • 确认程序集名称准确:
    特性中的FriendAssembly必须是目标友元程序集的简单名称(不含.dll或.exe后缀),若友元程序集带强名称,名称需与其程序集定义里的AssemblyName完全一致。

验证步骤

修改特性后重新编译两个程序集,在友元程序集中尝试访问属性的set访问器。若仍报错,检查公钥是否完整复制(不可遗漏任何字符),或用ildasm.exe查看主程序集元数据,确认InternalsVisibleTo特性是否正确写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:20:21