升级MSI投掷方法未找到'错误

时间:2015-06-04 14:03:51

标签: c# visual-studio-2013 windows-installer

我有一个包含两个类库的项目。我使用了“安装和部署工具”#39;制作MSI文件。

最初,我已经构建了v 1.0.0并安装在一台机器上。之后,我在我的库中做了一些更改,并制作了一个版本v 1.0.1。

当我尝试在已经拥有1.0.0的计算机上安装v1.0.1时。安装后会按预期更换旧版本。

但是,当我尝试运行app v1.0.1并单击一个按钮时,会立即抛出异常,如下所示。

SubmitButton_CLICK : Method not found: 'Void Library1.method..ctor(Int32, System.String, Int32, Int32, System.DateTime, System.String, System.DateTime, Int32, TabletEvalLibrary.SkillMethod, System.String, TabletEvalLibrary.User, System.Collections.Generic.List`1<Library1.Porceedure>, Int32)'

真的很奇怪。我确信我的项目有这个ctor,我能够通过Visual Studio成功运行应用程序。

对此我有什么建议吗?

2 个答案:

答案 0 :(得分:1)

当您使用VS设置(RemovePreviousVersions)进行升级时,它可以成功,但这并不意味着文件已更新。使用标准文件替换规则,这意味着只有在文件版本增加时才会替换文件。

所以这里有一个适合你所看到的场景:你改变了ctor并重建它,并认为你已经安装了它,但是具有不同ctor的旧文件仍然在系统上。所以对它的调用将失败。在执行发布时,应增加代码文件的AssemblyFileVersion,以确保新版本替换旧版本。

答案 1 :(得分:-1)

在调用方法时,您似乎错过了/添加了一些参数。 尝试清理代码并重新生成项目。 这可能是检查失败的原因之一。