我本周遇到一个奇怪的问题我无法解释:我将我的应用程序切换为使用某些第三方程序集(Xceed Grid和其他一些组件)的签名版本,并且应用程序启动时间进入了厕所.每次应用程序加载已签名的程序集时,都需要30秒才能加载.应用程序启动从5秒到超过90秒.这到底是怎么回事?!
其他一些信息:
我是否可以使用已签名的LinqPad版本来访问签名程序集的内部?
由于各种原因,我宁愿不在我的项目中使用强名称(签名)程序集.但是,其中一个项目由sharepoint Web部件引用,这意味着它必须签名.
是否可以对此程序集进行签名,但是当我从其他项目引用它时,使用非强引用来执行此操作.这将给我的优势是为我的其余代码提供一个非签名程序集,但仍然允许它由sharepoint加载.
在"C#in Depth 2nd Edition"中,Jon Skeet的书 - 我刚刚阅读到第2部分结尾 - 在7.7.3中提到它InternalsVisibleTo也可以用于签名的程序集.目前我根本没有使用签名.已发布二进制文件的安全问题实际上非常关键,因此我计划使用预处理器变量测试完全删除发布程序集的属性.
只是为了感兴趣,使用签名的程序集是如何实际的InternalsVisibleTo?为了InternalsVisibleTo用于指定已签名的朋友程序集,我需要指定其公钥.我只有在编译了一个依赖于被测试的组件的友元组件之后才能拥有它(动态组件加载和反射被放在一边,什么会膨胀编码和可读性).这听起来像鸡蛋问题,需要测试组件的自举.我可以想象一些使用MSBuild和脚本来自动化的技巧.有更实际的方法吗?
如果它仍然如此乏味,我将坚持我的第一个想法,即放弃发布版本的单元测试(这有些不令人满意,因为微妙的时序问题可能未经测试......)