我有一个关于 .NET 框架 (2.0) 如何解析依赖程序集的问题。
我们目前正在对大型 ASP.NET 应用程序和各种附属可执行文件进行一些重写。我们开发了一个新的 API 来解决我们的基础类也存在一些令人烦恼的问题。到目前为止,这是一个正常的,尽管影响广泛的更新。
我们的层次结构是:
- ASP.NET (aspx)
- 业务逻辑 (DLL)
- 基础类 (DLL)
所以 ASP.NET 不适合,一些 DLL(特别是基础类)有一个重定向层,其中包含旧的命名空间/函数并将它们转发到新的 API。当我们替换 DLL 时,ASP.NET 很好地选择了它们(可能是因为它触发了重新编译)。
预编译的应用程序不会,即使相同的命名空间和类在两组 DLL 中。即使文件被重命名,它也会抱怨 assemblyname 属性不同(必须如此)。我知道你可以重定向到同一个程序集的不同版本,但是有什么方法可以定向到完全不同的程序集吗?
替代方法是重新编译应用程序(不是真的想要,因为应用程序本身没有改变)或使用引用新基础 DLL 的存根重新编译旧的基础 DLL(新的虚拟 DLL 是文件系统混乱)。