【问题标题】:solving an assembly conflict issue -- Visual Studio project reference + specific version解决一个程序集冲突问题——Visual Studio 项目参考 + 特定版本
【发布时间】:2012-02-14 23:32:55
【问题描述】:

小问题:如何使用项目引用但构建我的程序集以使引用成为特定版本引用?


长问题(更多详细信息):我们正在为我们的一个应用程序进行模块化设置。不同的软件组件集及其依赖项被加载到独立的 AppDomain 中。

有些库可能被不同的组件引用。在某些情况下,我们会遇到汇编冲突。 IE,我们已经加载了最新版本的库和旧版本,并且正在使用的类型之一(组件使用反射实例化)需要获取新版本中不再存在的内容,即名称已更改的类型或其他什么,所以抛出一个 TypeLoadException 或任何东西,因为它试图从新版本中提取类型,即使旧版本也已被显式加载。避免此类问题的方法似乎是参考特定版本。

据我了解,从 Visual Studio 以这种方式设置引用的方法是将引用上的 Specific Version 属性设置为 true,这只能在您将 DLL 引用为文件参考不作为项目参考。问题是这些其他库仍在开发中,所以我可能需要在测试期间调试它们。我希望能够完成项目引用可以让您做的所有好事情,即导航到定义(实际上,主要是这样,所以我可以在调试等时设置断点)。


回答 Slak 的问题,是的,我确实需要运行这两个版本。长问题中对此进行了解释。

【问题讨论】:

  • 您需要同时使用两个不同的版本,还是只想让代码正常工作?
  • 两者都需要运行。更新了我的问题以反映这一点。
  • 你得到了什么确切的错误?
  • 再次添加更多信息。
  • Specific Version 无济于事。查看加载上下文;他们可能会有所帮助。我在装配加载方面还不够熟练,无法进一步帮助您;对不起。

标签: .net visual-studio-2010 reflection msbuild assembly-resolution


【解决方案1】:

我相信您所问的是我以前不得不面对的问题,但对于特定于平台的 dll。您可以更轻松地适应您的要求。

How to reference different version of dll with MSBuild

【讨论】:

    【解决方案2】:

    最终奏效的解决方案实际上是对所有有问题的程序集进行签名并使用自定义解析逻辑。具体版本确实与它无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      相关资源
      最近更新 更多