.Net程序集映射策略目的

本文关键字:策略 映射 程序集 Net | 更新日期: 2023-09-27 18:21:46

进行程序集映射的原因/目的是什么?正在更改版本策略?。我知道如果你的app.exe想要使用一个新的程序集版本,你可以重定向程序集的版本,但你为什么要这样做?。依赖程序集的新版本不会改变吗?

假设有一个calc.dll,app.exe依赖于calc.dll。如果calc.dll是重建的,并且重命名了一堆方法,那么app.exe在重定向到calc.dll新版本时运行时不会失败吗?

.Net程序集映射策略目的

由于关心客户的作者努力保持同一程序集的接口/类型向后兼容,因此使用同一程序集中的较新版本通常不是问题。

主要问题是依赖于旧版本的其他程序集。

比方说,有一个常见的"Shared.dll",它有多个兼容版本(众所周知的示例JSON.Net),可供您的代码使用,也可供您代码所需的其他dll使用:

ThridParty.dll (v1) -> Shared.dll (v1)
YourApp.exe -> Shared.dll (latest = v5), ThirdParty.dll (v1)

现在,您需要两个版本的Shared.dll,但它们都有相同的文件名(可通过手动加载一个来解决),并且无法使用混合版本产生的对象(根据.Net规则,v1中的Shared.Type1与v5中的Shared_Type1不同)。

要解决此问题,请使用程序集重定向并说"每当有人要求Shared.dll v1时,请使用Shared.dll v5"。通过这种方式,ThridParty.dll继续正常工作,您不再面临同时加载两个文件/版本的问题。