安装新版本后,“定位的程序集的清单定义与程序集引用不匹配”

问题描述 投票:0回答:1

我在Win 10中使用VS 2015创建了一个Windows窗体桌面应用程序。当我发布新版本时,我希望用户能够在不先卸载任何早期版本的情况下运行安装程序。为此,我在InstallShield LE的“常规信息”选项卡中创建了一个新的产品代码,该选项卡包含在VS 2015中。这似乎是将新版本安装在旧版本上的唯一方法。 InstallShield提供的有关如何使用UpdateCode创建更新版本的详细说明似乎不起作用。安装后,旧版本和新版本将出现在“控制面板” - >“程序和功能”中显示的列表中。

我为包含对全局版本2.1.68的引用的新版本创建了一个新的自解压.exe安装程序,但是当我在另一台机器上的Win 7环境中运行它时,其中早期版本(2.1.62)引用了程序集已安装全局版本2.1.62并打开一个特定的表单,我收到一条Exception消息

无法加载文件或程序集'Global,Version = 2.1.62.0,Culture = Neutral,PublicKeyToken = a95f9488c29'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。

例外文字:

System.IO.File.LoadException:无法加载文件或程序集'Global,Version = 2.1.62.0,Culture = Neutral,PublicKeyToken = a95f9488c29 at ...

如果我通过控制面板卸载版本2.1.62并安装应用程序的版本2.1.68,则不会发生错误。

我检查了对全局dll的C#引用,它们都指向更新的dll。

我希望用户能够安装新版本而无需先卸载旧版本,但似乎V 2.1.62安装中的某些内容会转移到较新的安装并尝试找到旧版本的Global.dll

c# installation installshield
1个回答
0
投票

问题是我没有更新引用global.dll的子项目的版本号,因此新版本的安装没有更新那个dll,后者继续寻找旧的(v 2.1.62)版本的global.dll。

© www.soinside.com 2019 - 2024. All rights reserved.