我编写了一个工具,它使用 Mono Cecil 来分析我们应用程序代码库的各个部分;它依赖于能够解析 TypeReference(这涉及找到包含 TypeDefinition 的程序集)。如果我向它提供可以找到 DLL 的路径列表,这会很好。
但是,我们的应用程序的依赖关系有些复杂,我们有一个 app.config,它大量使用<bindingRedirect>
和<codeBase>
元素来指导 .NET 的程序集解析器。例如,我们有一个按 DLL 版本组织的目录结构,我们将旧版本号重定向到最新版本,我们可以同时加载 DLL 的两个版本(当我们有重大更改时,我们可以运行 1.x 和同一进程中的 2.x 版本)。
我希望我的基于 Cecil 的工具遵守相同的规则。有没有办法可以利用现有的 app.config?
- 我可以要求 .NET 在不实际加载程序集的情况下将程序集名称转换为 DLL 路径吗?(这是一个报告损坏的 DLL 的工具,因此程序集可能无法成功加载。)
- 或者,是否已经存在 .NET 用于在运行时定位程序集的算法的开源实现?