4

在“C# in Depth 2nd Edition”中,Jon Skeet 的书——我刚读到第 2 部分结束——在 7.7.3 中提到它InternalsVisibleTo也可以与签名程序集一起使用。目前我根本没有使用签名。已发布二进制文件的安全问题实际上非常关键,因此我计划使用预处理器变量测试完全删除发布程序集的属性。

只是为了兴趣,使用签名的程序集和InternalsVisibleTo? 为了InternalsVisibleTo用于指定签名的朋友程序集,我需要指定它的公钥。我只有在编译了依赖于被测程序集的朋友程序集之后才拥有它(动态程序集加载和反射抛开,什么会膨胀编码和可读性)。这听起来像是一个鸡蛋问题,需要测试程序集的引导程序。我可以想象一些使用 MSBuild 和脚本来自动执行此操作的技巧。有没有更实用的方法来做到这一点?

如果它仍然如此乏味,我将坚持我的第一个想法,即为发布版本放弃单元测试(这有点令人不满意,因为可能会未经测试微妙的时间问题......)

4

1 回答 1

10

使用相同的密钥对解决方案中的所有项目进行签名,不要为每个项目和每个构建生成不同的密钥。我建议在项目属性中为每个项目引用相同的物理密钥文件,而不是将其复制到每个项目中。

这样,所有这些都与相同的PublicKey常数相关联。并使用单个条目,例如:

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests, PublicKey=<your key>")]
于 2012-05-30T15:14:38.127 回答