【发布时间】:2012-10-19 14:13:15
【问题描述】:
我有一个 .net Windows 服务应用程序,它调用我们自己创建的一堆其他 dll。但是,所有这些 dll 都是为 x86 创建的,并且我们已经转移到任何 CPU(在 x64 环境中)。遗憾的是,由于 .NET 的延迟加载功能,除非我们使用一些罕见且有些复杂的代码路径,否则这些 dll 中的许多都不会加载。最终结果?在部署代码几天或几周后,我们会收到不正确的格式异常。
我想知道是否有办法强制 .NET 完全加载它直接引用的所有程序集,这样我就可以看到这种不兼容性,而无需手动查看创建这些依赖 dll 的数十个项目,或者更糟,进行完整的回归测试以强制加载所有程序集。
附录:即使有更简单的方法来解决我的特定 x86-dlls-in-a-x64-environment 问题,我仍然有兴趣看看是否有办法强制环境加载其所有依赖项。你永远不知道它什么时候会派上用场! :)
编辑:这些都是托管的 DLLS,实际上我已经使用反射来对生产中的问题进行分类。但是,在开发环境中,它遇到了与其他选项相同的问题:以一种或另一种方式手动遍历所有 DLL。
【问题讨论】:
-
我会作弊并使用反射 - 遍历每个不是来自 MS 的引用程序集,在该程序集中找到一个类并实例化它。它并不优雅,但它会强制所有程序集立即加载。也就是说,我确实认为你从错误的方向来解决整个问题。
-
你是指托管还是非托管DLL?