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

时间:2016-10-19 22:00:43

标签: c# .net visual-studio dll

我有一个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项目文件中的值?

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

所以现在我不得不重新构建和重新版本版本的Secondary.dll,并且每次我更改Primary.dll以供Web应用程序使用时都会引用更新的Primary.dll。

有没有办法实现它,所以我不必更新Secondary.dll对新版本的Primary.dll的引用?

1 个答案:

答案 0 :(得分:1)

如果确实的更改没有中断,请尝试以下方式:

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

相关问题