Reflection Windows CE程序集使用的.NET运行时版本是否必须与CF版本匹配?
我想知道是否有一个工具可以告诉我使用哪个版本的紧凑框架来构建我们离职/离职的前同事留下的exe遗迹,我发现 我按照tsandhol的建议下载了ILSpy,但没有看到TargetFramework条目。这就是它所包含的内容(一些字符串被混淆以保护所谓的无辜者): 这里的相关信息是“运行时:.NET 1.1”吗 我是否可以由此推断TargetFramework是CF 1.0版。* 更新 我确实在为最新和最好的应用程序(不是CF/CE应用程序)构建的应用程序上获得了TargetFramework: 更新2 尝试另一个建议(Corflags),它给了我: …但这让我想到了,搜索“CF 1.0.3316.00”似乎把它搞糊涂了 更新3 奇怪的是,dotPeek声称这个应用程序的.Net框架是v4.5 更新4 我得到了三个不同的故事:有问题的.exe使用哪些DLL dotPeek显示的唯一参考是:Reflection Windows CE程序集使用的.NET运行时版本是否必须与CF版本匹配?,reflection,windows-runtime,compact-framework,windows-ce,ilspy,Reflection,Windows Runtime,Compact Framework,Windows Ce,Ilspy,我想知道是否有一个工具可以告诉我使用哪个版本的紧凑框架来构建我们离职/离职的前同事留下的exe遗迹,我发现 我按照tsandhol的建议下载了ILSpy,但没有看到TargetFramework条目。这就是它所包含的内容(一些字符串被混淆以保护所谓的无辜者): 这里的相关信息是“运行时:.NET 1.1”吗 我是否可以由此推断TargetFramework是CF 1.0版。* 更新 我确实在为最新和最好的应用程序(不是CF/CE应用程序)构建的应用程序上获得了TargetFramework: 更
mscorlib (all of these are version 1.0.50000.0)
System
System.Data
System.Data.SqlServerCe
System.Drawing
System.Windows.Forms
System.Xml
ILSpy提供的参考资料:
coredll.dll
CoreDll.DLL
CoreDll.dll
HUtilCE
mscorlib
OpenNETCF
OpenNETCF.Windows.Forms
Symbol
Symbol.Barcode
Symbol.StandardForms
System
System.Data
System.Data.Common
System.Data.SqlServerCe
System.Drawing
System.Windows.Forms
System.Windows.Forms.DataGrid
System.Xml
设备上的DLL,在\Program Files\HHS中:
HUtilCE
OpenNETCF
OpenNETCF.Drawing
OpenNETCF.Windows.Forms
Symbol
Symbol.Barcode
Symbol.BarcodeForms
Symbol.Printing
Symbol.StandardForms
System.Data.SqlClient
System.Data.SqlServerCe
这三个列表中只有System.Data.SqlServerCe
否则,共同点是:
Both in ILSpy and on the device: HUtilCE, OpenNETCF, OpenNETCF.Windows.Forms, Symbol, Symbol.Barcode
Both in dotPeek and ILSpy: System, System.Data, System.Drawing, System.Windows.Forms, and System.Xml
更新5
根据ctacke关于使用.NET Reflector的建议,我看到了关于.exe的问题:
// Assembly Reference mscorlib
Version: 1.0.5000.0
Name: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes
因此,我拥有的是一台有CF 1.0.3316.00的设备,该.exe在其上运行(因为它针对的是版本1,我想,虽然版本不完全匹配),还有另一台设备,它既有CF版本2,也有CF版本3.5,但既没有运行该.exe,也没有基于针对版本2的相同代码的设备
更新6
在使用.NET Reflector导出一些由它反汇编的源代码时。它遇到一些无法自动解析引用程序集的情况:
在这方面的前几个实例中,我能够找到文件并添加它们。但对于“system.windows.forms.datagrid”来说,这是不可能的——它们不在我的系统中
那么,在这种情况下,我应该“跳过”,还是这会阻止我构建反汇编的源代码(我假设需要“system.windows.form.datagrid”,否则它将被“取消引用”到项目之外)
我继续跳过,因为我无法访问这两个文件:
system.windows.forms.datagrid
system.data.common
跳过这些文件后,我打开了创建的源反射器。项目清洁良好;当我尝试构建时,它向我提供了一个保存sln文件的对话框(Reflector只生成了一个csproj文件)
生成失败,出现35个错误,例如:“意外字符$”,此处:
3090上也不存在这两个丢失的文件!如何要求它们生成/反汇编,但它们甚至不存在于运行.exe的设备上?请使用.NET Reflector并查看参考资料中程序集使用的mscorlib版本 此程序集使用CF的2.0(我可以通过公钥令牌判断它是CF,而不是桌面或Mono): 以及针对3.5的相同组件构建:
// Assembly Reference mscorlib
Version: 1.0.5000.0
Name: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes
system.windows.forms.datagrid
system.data.common
if (((obj2 = this.fieldList[col - 1]) != null) && ((obj2 = <PrivateImplementationDetails>.$$method0x60002ec-1[obj2]) != null))
System.Data.Common == version 1.0.5000.0
System.Windows.Forms.DataGrid is also version 1.0.5000.0