释放类库源,无需签名密钥文件,但是单元测试需要访问内部类,该怎么办?
情况如下:
我想将完整的源代码发布到类库中
我也希望发布二进制文件,由我签名,使用我不想发布的密钥文件
我将提供批处理文件和预构建步骤,如果不存在则在本地创建新的密钥文件,以便任何人都可以快速开始使用源代码
测试项目需要引用主项目中的内部类
要访问内部类,我需要在主项目AssemblyInfo.cs文件中添加一个
[assembly: InternalsVisibleTo("...")]
属性
由于我正在签署项目输出,因此我需要指定该属性的PublicKey部分
这将绑定到密钥文件,我不愿意发布
那么,我该如何解决这个问题呢?
如果我签署主项目输出而不是测试库,并且只在InternalsVisibleTo
属性中指定程序集名称,则会出现此编译时错误:
错误1朋友程序集引用'Mercurial.Net.Tests'无效。强名称签名程序集必须在其InternalsVisibleTo声明中指定公钥。 C: Dev VS.NET Mercurial.Net Mercurial.Net Properties AssemblyInfo.cs 22 31 Mercurial.Net
所以显然没有签署测试项目输出是不够的。
我唯一的选择是删除签署项目的设置,并修改项目文件作为我的二进制文件构建脚本的一部分?即。在构建之前,搜索项目文件的<SignAssembly>false</SignAssembly>
元素并进行修改?
没有找到相关结果
已邀请:
3 个回复
桔适丛
并用
切换你使用的那个,例如:
然后,您可以在创建要发布的构建时设置
。
末钉蹈泰唬
属性变得容易,因为没有SNK,这总是有效的。
浅镁