1

请原谅大量的背景信息,但这是一个相当具体的问题。

我有一个创建 .dll 文件的 Visual Studio 2005 项目。该项目依赖于另一家公司“BigCorp”的 .dll,它与 BigCorp 的软件一起安装。

理想情况下,我创建的 dll 应该可以与 BigCorp 的任何(向后兼容)版本的 dll 一起使用。也就是说,如果我链接到版本 4.3.2.100,如果用户升级 BigCorp 的应用程序以使 .dll 版本为 4.3.3.20,我的程序应该仍然可以工作。

这在 VS2005 中非常简单,通过查看项目的引用,选择 .dll 并确保“特定版本”属性为 false。

现在我的实际问题是:是否可以指定一个比安装在构建项目的机器上的版本更旧的 .dll 的基本版本?继续我之前的示例,我的构建机器安装了 4.3.3.20 版本,但我希望它生成的 .dll 与尚未升级的安装兼容,并且只安装了 4.3.2.100 版本。

似乎VS解析了.dll的路径并根据它找到的文件检测运行时版本。试图通过直接在 .vbproj 或 .csproj 中指定版本号来覆盖它,即

<Reference Include="BigCorp.Program.Component, Version=4.3.2.100, Culture=neutral, PublicKeyToken=abc123def456654fed321cba, processorArchitecture=MSIL">

没有效果。尝试在具有较旧版本的计算机上注册我的程序集失败,并出现旧的“无法加载文件或程序集”错误,因为它试图找到 BigCorp 的 .dll 的较新版本。

我想做的甚至可能吗?

4

1 回答 1

1

您可以通过直接从项目中引用旧 DLL 来执行此操作,因此将 .dll 文件复制到您的项目中,然后从那里引用它。

我一直在用我的各种开发项目来做这件事。通常我会在我的项目中放置一个“References”文件夹来保存引用的 DLL

于 2008-10-20T18:10:45.767 回答