11

在此处输入图像描述

我有一个包含多个项目的解决方案。我需要在两个不同的项目中引用同一程序集的不同版本。到目前为止,正在发生的事情是只有最新版本的 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?

4

2 回答 2

4

是的,您可以让每个项目引用同一个 dll 的特定版本。我建议将两个版本的 dll 都放在 GAC 中。在您的参考项目中,设置 Copy Local = false 和 Specific Version = true。

您可以通过使用配置文件和程序集绑定指令在没有 GAC 的情况下执行此操作(因为共享的 dll 不能位于同一文件夹中,因为它们具有相同的名称)但这是 GAC 旨在解决的主要问题之一. 所以我建议利用它。

于 2013-07-30T18:21:17.843 回答
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
于 2013-07-30T18:21:24.820 回答