我有一个包含多个项目的解决方案。我需要在两个不同的项目中引用同一组件的不同版本。到目前为止,发生的事情是只有最新版本的dll被复制到bin文件夹中。因此,依赖于旧版本的DLL失败并显示错误
Could not load file or assembly xxxx or one of its dependencies.
The located assembly's manifest definition does not match the
assembly reference.
有没有办法让应用程序根据项目使用特定版本的dll?
答案 0 :(得分:3)
是的,您可以让每个项目引用相同dll的特定版本。我建议将这两个版本的dll放在GAC中。在您的引用项目中,设置Copy Local = false和Specific Version = true。
您可以使用配置文件和assembly binding directives在没有GAC的情况下执行此操作(因为共享dll不能位于同一文件夹中,因为它们具有相同的名称),但这是主要问题之一GAC旨在解决问题。所以我建议利用它。
答案 1 :(得分:0)
根据您的受众群体(如果这是一个服务器应用程序,网站,单个用户的桌面应用程序,许多用户的桌面应用程序等),您可能会欺骗一点并在完全独立的情况下托管一个版本应用程序域,如Web服务或WCF服务。
例如,假设您的项目是Web应用程序:
MyWebApplication
- DLL reference to MyLibrary v1.0
- Only have internal references which use v1.0 of the library
- WCF proxy to http://localhost/MyWebService
MyWebService
- DLL reference to MyLibrary v2.0
- Only have internal references which use v2.0 of the library