0

是否有一个工具/过程可以让我反编译两个 .exe(其中一个在手持设备上运行,另一个不在手持设备上运行),以便我可以了解不同之处/问题可能是什么?

当然,看到一个有“00xA”而另一个有“00xB”对我没有帮助。我的意思是一种查看不同代码的方法,或者更可能是编译资源或配置文件的差异,或者一些构建选项等等?

我几乎肯定这个问题与代码本身(if/while/switch 语句等)无关,而是与项目设置有关。

我无法比较工作源,因为它不存在 - 我只有它来自的 .exe。我可用的来源是它的“合理传真”,但不完全相同,至少在项目设置和配置等方面不完全相同。

更新

回复:这个页面,我不熟悉一些术语;具体来说,它在哪里谈论“FLATRELEASEDIR” - WTH?

这是否可以在我的 PC 上测试我的 CE 绑定 * .exe:

Run depends.exe*
Open my CE-bound** .exe
Stare in wonder at the amazing plethora of errata and data

?

*据说不要与“成人尿布”混淆

**“绑定”如“这就是它的去向”

更新 2

这是在我的应用程序上运行 Dependency Walker 时看到的内容:

在此处输入图像描述

...但请注意我的困境。

更新 3

以下是我为尽可能在我的 PC 上复制我的手持环境所做的工作:

我只想复制整个爸爸烧掉的东西(Windows Explorer 中的整个手持设备表示),但它不允许我这样做 - 它不可复制,所以我只复制了“程序文件”文件夹(其中包含我的应用程序的子文件夹和我不知道对我们来说是标准或自定义/特殊的几个其他文件夹)。

这是来自有问题的 .exe确实运行正常的手持设备,因此显然(理论上?)不应该缺少模块 - Dependency Walker 应该运行它并说一切都很好。

但是,它没有;我得到与上面 p[a,o]sted 相同的结果。

注意:即使在选择“选项 > 配置模块搜索顺序... > 应用程序目录 > 在 Dependency Walker 中上移”后也是如此。

因此,由于即使是运行良好的 .exe 测试都显示为“还没有为 CE 时间做好准备”,我如何使用它来准确测试缺少哪些必要的文件(如果有的话)?

我是否也需要复制其他文件夹,还是什么?

更新 4

因此,(据说?)缺少的模块是:

API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL

如果属实,那么为什么 .exe 会在手持设备上运行?

注意:掌上电脑上的其他文件夹有:

Application Data => only contains "desktop.ini"
BTExplorer
My Documents => contains a "desktop.ini" and several SQLCE databases (*.SDF)
profiles => contains an empty "default" folder
Recycled => contains a single ".lnk" file
Temp => contains a handful of ".tmp" files
Windows => contains a slew of folders and files, including several .DLLs, but none of those listed above

“Program Files”文件夹有一个“.NET Compact Framework”子文件夹,但它是空的。

在 \Windows\AppMgr 文件夹中,有一些有趣的文件,例如:

Microsoft .NET Compact Framework.DAT
Microsoft .NET Compact Framework.DLL
...several other DAT/DLL pairs, including:
Symbol Managed Class Libraries.DAT (no corresponding DLL)
...and even a pair:
SSCS HHS.[DAT,DLL]

-- 这是我们公司的缩写(SSCS)和项目名称(HHS)

是什么产生了这些?他们是从哪里引用的??

另一个可能的难题是 .exe无法运行的手持设备没有 \Windows\AppMgr 文件夹,因此没有上面列出的那些 .DAT/.DLL 文件......

更新 5

另一个怪事:

阅读此内容后:Andy Wiggly 等人的“Microsoft .NET Compact Framework”一书中的“安装在 GAC 中的文件进入 \Windows 目录”,我尝试将 Windows 文件夹从手持设备复制到我的位置PC 下名为“3910ProgramFilesFolderCopy”的文件夹在资源管理器中如下所示:

C:
    3910ProgramFilesFolderCopy
        Program Files
        Windows <= tried to copy the "Windows" folder from the handeld on top of "3910ProgramFilesFolderCopy" so it would end up here

...但它只在 borborygmas 发生之前复制了几个文件(即电子 borborygmas),它告诉我,“系统找不到指定的文件”

Murgratroid 的天堂!?!为什么它会找到一些但不是全部?在 Windows 资源管理器中查看手持设备上的 Windows 文件夹,我看到许多宝贵的 DLL 都显示为灰色:

在此处输入图像描述

Arggh、双参数和 (&c)

4

2 回答 2

1

您可以尝试使用依赖漫游器来了解他们需要的 DLL/API,并检查您的设备是否支持这些 DLL/API。 http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2011/02/02/using-dependency-walker.aspx

于 2014-04-25T15:51:22.420 回答
1

对于 PC,您可以尝试 .NET Reflector。
http://www.red-gate.com/products/dotnet-development/reflector/

于 2014-04-24T16:38:52.777 回答