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

如何解决构建服务器上的CS0281错误?

解决VS2022流水线构建InternalsVisibleTo密钥不匹配问题

问题根源

VS2022配套的MSBuild对强名称签名的处理逻辑和VS2013不一样,错误里的0012a1b2是公钥令牌(PublicKeyToken),而你用sn -tp生成的是完整公钥,这俩不是一回事。

调整步骤

  • 修正InternalsVisibleTo格式:如果DAL是强签名程序集,InternalsVisibleTo需要填测试程序集的公钥令牌,不是完整公钥。把错误里的0012a1b2替换到DAL项目的属性中,格式如下:
    [assembly: InternalsVisibleTo("ABC.Test, PublicKeyToken=0012a1b2")]
    
  • 对齐签名配置:VS2022的默认签名设置可能和VS2013不同,要确保流水线里测试项目ABC.Test的签名配置和本地一致:
    1. 本地用VS2022打开测试项目,右键属性→签名,确认“为程序集签名”的选项、密钥文件和延迟签名设置
    2. 流水线的MSBuild命令要带上对应的签名参数,比如/p:AssemblyOriginatorKeyFile=你的密钥文件.snk /p:SignAssembly=true(延迟签名就加/p:DelaySign=true)
  • 直接提取正确令牌:不确定令牌的话,找到测试项目构建出的ABC.Test.dll,用命令sn -T ABC.Test.dll(注意是大写T)直接提取公钥令牌,把这个值填到InternalsVisibleTo里就行
  • 清理流水线缓存:旧的构建缓存可能干扰签名结果,在流水线中加一步清理操作,删除构建目录下的所有旧输出文件,再重新构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:54:57