升级 MSI 抛出 'method not found' 错误
Upgrading MSI throwing 'method not found' error
我有一个包含两个 class 库的项目。我用 'Setup and deployment tool' 来制作 MSI 文件。
最初,我有 build v 1.0.0 并安装在一台机器上。在那之后,我对我的库做了一些改动并制作了一个 build v 1.0.1.
当我试图在一台已有 1.0.0 的机器上安装 v1.0.1 时。它按预期安装,取代了旧的。
但是,当我尝试 运行 应用程序 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.
成功地 运行 应用程序
对此有什么建议吗?
您似乎在调用方法时遗漏/添加了一些参数。
尝试清理代码并再次重建项目。
可能是签出失败的原因之一。
当您使用 VS 设置 (RemovePreviousVersions) 进行升级时,它可以成功,但这并不意味着文件已更新。使用标准文件替换规则,这意味着只有在文件版本增加时才会替换文件。
所以这是一个符合您所见的场景:您更改了那个 ctor 并重建了它,并认为您已经安装了它,但具有不同 ctor 的旧文件仍在系统上。所以调用它会失败。发布时应增加代码文件的 AssemblyFileVersion 以确保新版本替换旧版本。
我有一个包含两个 class 库的项目。我用 'Setup and deployment tool' 来制作 MSI 文件。
最初,我有 build v 1.0.0 并安装在一台机器上。在那之后,我对我的库做了一些改动并制作了一个 build v 1.0.1.
当我试图在一台已有 1.0.0 的机器上安装 v1.0.1 时。它按预期安装,取代了旧的。
但是,当我尝试 运行 应用程序 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.
成功地 运行 应用程序对此有什么建议吗?
您似乎在调用方法时遗漏/添加了一些参数。 尝试清理代码并再次重建项目。 可能是签出失败的原因之一。
当您使用 VS 设置 (RemovePreviousVersions) 进行升级时,它可以成功,但这并不意味着文件已更新。使用标准文件替换规则,这意味着只有在文件版本增加时才会替换文件。
所以这是一个符合您所见的场景:您更改了那个 ctor 并重建了它,并认为您已经安装了它,但具有不同 ctor 的旧文件仍在系统上。所以调用它会失败。发布时应增加代码文件的 AssemblyFileVersion 以确保新版本替换旧版本。