Windows mobile 安装程序CAB的发布版本中缺少MethodException

Windows mobile 安装程序CAB的发布版本中缺少MethodException,windows-mobile,compact-framework,Windows Mobile,Compact Framework,我正在尝试为移动设备创建应用程序的安装CAB。我可以在emulator上通过visual studio运行应用程序,但是,当我尝试在emulator上手动安装cab并运行程序时,它会立即弹出一条错误消息“意外错误…”,单击“详细信息”,它会显示程序名,然后显示“MissingMethodException”,仅此而已,没有更多关于去哪里找的信息 实际上,我现在有两个安装项目。最初的安装项目总是被配置为显式引用“Debug Any CPU”输出,现在只构建在调试配置中。一个新的安装项目现在显式地引

我正在尝试为移动设备创建应用程序的安装CAB。我可以在emulator上通过visual studio运行应用程序,但是,当我尝试在emulator上手动安装cab并运行程序时,它会立即弹出一条错误消息“意外错误…”,单击“详细信息”,它会显示程序名,然后显示“MissingMethodException”,仅此而已,没有更多关于去哪里找的信息

实际上,我现在有两个安装项目。最初的安装项目总是被配置为显式引用“Debug Any CPU”输出,现在只构建在调试配置中。一个新的安装项目现在显式地引用了“Relase Any CPU”输出,它只在发布配置中生成

这似乎只是发布版本中的一个问题,这有点令人担忧。我不希望将调试版本的代码发布到生产环境中

配置loader应用程序后,我得到以下输出(名称空间名称更改为protected the Innomy)

此日志实际上与调试日志相同,直到距离此日志底部大约八行为止

在调试日志中,加载
System.Data.DataSetExtensions
模块后,加载
System.Xml.Linq
模块,然后在日志末尾重定向后,加载一系列附加模块,从
\Windows\GAC_System.SR_v3_5_0_0_cneutral_1.dll开始,并尝试加载大约80行资源,然后加载窗体模块已加载

新尝试

在尝试构建自己的inf之后,我仍然得到MissingMethodException,但更详细。它抱怨无法从我的程序集之一加载特定类型

因为我看到应用程序在发布模式下运行,所以我决定尝试复制已部署的程序集,并使用这些程序集创建我的cab,但没有成功。然后,我将这些程序集与我最初用于创建驾驶室的程序集进行了比较,它们是相同的

这让我相信,如果我尝试手动从设备运行已部署的版本构建,我仍然会得到MissingMethodException,果然如此。在本例中,虽然我得到了未详细的MissingMethodException

为了重申这一点,我注意到,当我在visual studio中点击“开始调试”并选择发布配置时,程序将作为例外运行,但是如果我停止调试并尝试手动运行设备上部署的内容,则会得到空的MissingMethodException。如果我对调试版本执行相同的操作,即在VisualStudio中“启动调试”,然后停止调试并从设备手动运行应用程序,则应用程序运行正常

如果有人对此有任何想法,我们将不胜感激。我很困惑。

在注册表中,看看它说什么加载失败

编辑

首先,我要放弃CAB项目——这个工具太差劲了,只是给创建CAB文件的过程增加了太多的复杂性

您知道该应用程序可以工作,因为您可以从调试器运行它。将这些发布程序集放入文件夹中。Create(安装项目创建一个,如果您愿意,您可以将其用作“种子”),它描述了它们应该如何打包,然后使用该INF(或者创建一个BAT文件,我们就是这样做的)


几年前,我发现这是创造出租车的最简单的方法,你可以依靠它,它是可重复的,而且是自动化的。即使在编写之后,我仍然使用批处理文件和手动滚动的INF,这一事实很能说明问题。

如果我在调试和发布之间切换,CAB项目会给我带来问题。 查看cab项目中“文件”的属性。它们是指向您的bin\DEBUG还是bin\RELEASE?在切换构建目标后,CAB项目并不擅长切换。 在解决方案中使用共享项目时,这可能会导致MissingMethodException


尝试以您试图构建的模式(调试或发布)重新创建CAB项目。

听起来像是缺少依赖项,或者依赖于存在的程序集的不同版本。你能提供关于MissingMethodException的更多细节吗?仅此而已,它没有提供更多的信息。如果是代码,那就太好了,
ctor
中的工作太多了。把那项工作做了,现在很好。哦,这看起来很有希望!我在前面找到了“加载程序日志”,但说明并不像您在这里给出的链接中那样简洁。谢谢杰出的我将在稍后尝试这一点,因为我已经被其他优先事项压得喘不过气来。目前,我坚持使用调试版本。非常感谢您的关注!嗯,我搞砸了。在编辑inf后,我忘了点击save,所以我安装了另一个调试版本。正确的安装仍然失败,但我现在有一条更详细的MissingMethodException消息。根据我的调试经验,似乎静态字段在发布之前就初始化了,而在调试中,它们是根据请求初始化的。对不起,我昨晚尝试了这一点,但忘了更新我的帖子。实际上,我现在有两个安装项目。原始安装项目始终配置为引用“调试任何CPU”输出,该输出现在仅在调试配置中生成。现在,一个新的安装项目引用了“Relase Any CPU”输出,该输出只在发布配置中生成。