1

我有一个 .net windows 服务应用程序,它调用我们自己创建的一堆其他 dll。但是,所有这些 dll 都是为 x86 创建的,并且我们已经转移到 Any CPU(在 x64 环境中)。遗憾的是,由于 .NET 的延迟加载功能,除非我们使用一些罕见且有些复杂的代码路径,否则这些 dll 中的许多都不会加载。最终结果?我们在部署代码几天或几周后收到不正确的格式异常。

我想知道是否有一种方法可以强制 .NET 完全加载它直接引用的所有程序集,这样我就可以看到这种不兼容性,而无需手动查看创建这些依赖 dll 的数十个项目,或者更糟糕的是,进行完全回归测试以强制加载所有程序集。

附录:即使有更简单的方法来解决我的特定 x86-dlls-in-a-x64-environment 问题,我仍然有兴趣看看是否有办法强制环境加载其所有依赖项。你永远不知道它什么时候会派上用场!:)

编辑:这些都是托管的 DLLS,实际上我已经使用反射来对生产中的问题进行分类。但是,在开发环境中,它遇到了与其他选项相同的问题:以一种或另一种方式手动遍历所有 DLL。

4

1 回答 1

0

一种方法是使用 ILMerge 静态链接库以将它们合并到可执行文件本身中。否则 DLL 的全部意义在于它们在被用于代码之前不会被评估。请参阅静态库的 .NET 等效项?

当然,您可以在应用程序加载时运行一个诊断序列,该序列涉及您所有 dll 的某些方面,因此至少您知道加载时哪些内容存在,哪些内容不起作用。

于 2012-10-19T14:16:54.113 回答