请原谅大量的背景信息,但这是一个相当具体的问题。
我有一个创建.dll文件的Visual Studio 2005项目。这个项目取决于另一家公司的.dll,“BigCorp”,它与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,因此无法使用旧的“无法加载文件或程序集”错误。
我想做什么甚至可能?
答案 0 :(得分:1)
您可以通过直接从项目引用旧DLL来执行此操作,因此将.dll文件复制到项目中,然后从那里引用它。
我一直在做各种开发项目。通常我会在我的项目中放置一个“References”文件夹来保存引用的DLL