一个带有两个dll的web应用程序.一个dll依赖于另一个.为什么我必须更新两个dll ?

本文关键字:dll 两个 一个 为什么 更新 另一个 web 应用程序 依赖于 | 更新日期: 2023-09-27 18:13:47

我有一个web应用程序,它有两个dll形式的引用程序集。我们把dll命名为Primary.dll和Secondary.dll。 Secondary.dll依赖Primary.dll。

我需要添加一个功能到Primary.dll中使用的web应用程序。这需要一个新版本。Secondary.dll不需要此新功能。Secondary.dll没有破坏性更改。

现在当Secondary.dll中的代码被触发时,我得到以下错误:

"无法加载文件或程序集'Primary.dll'或其依赖项之一。"定位的程序集的清单定义与程序集引用不匹配。"

Secondary.dll正在查找Primary.dll的特定版本

这是简单地通过使SpecificVersion="false"值在Secondary.dll项目文件解决吗?

如果没有,我想在GAC中保留旧版本的Primary.dll,这样Secondary.dll就会在那里找到它。但是,如果可能的话,我希望避免这种情况。

所以现在我不得不重新构建和重新版本Secondary.dll,引用更新的Primary.dll,每次我对Primary.dll进行更改以供web应用程序使用。

是否有办法使它,所以我不必更新Secondary.dll的引用到新版本的Primary.dll?

一个带有两个dll的web应用程序.一个dll依赖于另一个.为什么我必须更新两个dll ?

如果更改确实没有中断,请尝试这样做:

  1. 检查Primary.dll的程序集属性,并删除签名和自动生成的程序集版本(更改1.0.0)。*至1.0.0.0)。
  2. 如果没有帮助,使用ILSPY实用程序打开Secondary和Primary,检查对Primary.dll的确切引用,并将其与Primary.dll的实际完整程序集名称进行比较。还要检查对其他dll的引用,这些dll可以在Primary和Secondary中引用。
  3. 如果它没有帮助,可能你有几个文件的Primary.dll程序集与不同的元数据和程序集加载器加载错误的一个。只需查找和删除错误的文件或使用Fusion Log Viewer实用程序来探索程序集绑定。也许,这可以帮助。

为了使调查更简单,使用简单的几乎空的ConsoleApplication,并参考Secondary.dll来播放,而不是web应用程序。