请原谅大量的背景信息,但这是一个相当具体的问题。
我有一个创建 .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 的较新版本。
我想做的甚至可能吗?