情况如下:
[assembly: InternalsVisibleTo("...")]
主项目 AssemblyInfo.cs 文件的属性 那么,我该如何解决呢?
如果我签署了主项目输出,而不是测试库,并且只在
InternalsVisibleTo
中指定程序集名称属性,我得到这个编译时错误:Error 1 Friend assembly reference 'Mercurial.Net.Tests' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations. C:\Dev\VS.NET\Mercurial.Net\Mercurial.Net\Properties\AssemblyInfo.cs 22 31 Mercurial.Net
所以显然不签署测试项目输出是不够的。
我唯一的选择是删除签署项目的设置,并将项目文件修改为我的二进制构建脚本的一部分吗? IE。追捕
<SignAssembly>false</SignAssembly>
项目文件的元素并在构建之前对其进行修改?
最佳答案
是否可以选择发布仅用于测试的 SNK 文件?
然后你可以有两个 InternalsVisibleTo
并使用 #if
切换您使用的那个,例如:
#if FOR_RELEASE
[InternalsVisibleTo(... your private SNK ...)]
#else
[InternalsVisibleTo(... test SNK which you release ...)]
#endif
然后可以设置
FOR_RELEASE
当您创建要发布的构建时。
关于.net - 发布类库源,不签署 key 文件,但单元测试需要访问内部类,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179363/