繁体   English   中英

如何确定设备上安装的Compact Framework的版本?

[英]How can I determine the version of the Compact Framework that is installed on my device?

看来对我最近的手忙脚乱来说是一个解决方案,可以尝试在各种设备上整理不同版本的CF,以便它们都可以运行我的CE / CF应用程序。 这些问题可以在这里这里阅读。

该链接显示了一种为旧版本的CF构建应用程序的方法,以在安装了新版本的设备上运行。 但它说:

“确定当前安装的版本在Pocket PC上,使用文件资源管理器导航到\\ Windows目录,然后点击cgacutil文件。将出现一个消息框,其中显示了设备上安装的.NET Compact Framework的版本。”

但是,Windows资源管理器(我的Motorola 3190设备上没有“文件资源管理器”)在Windows文件夹中没有显示“ cgacutil”。 该文件夹的文件denizens从“ ceconfig”更改为“ charset”,而它们之间没有“ cg *”。

上面链接的URL还显示:

“要将应用程序设置为在版本3.5上运行,请确定设备上运行的.NET Compact Framework的版本号。”

我该如何确定? 据我所知,我可以将带有以下数据的文件[appName] .exe.config添加到手持设备,而所有这些将是彩虹炖煮的食物/大冰糖山:

<configuration>
  <runtime>
      <compatibilityversion major="2" minor="0"/>
  </runtime>  
  <startup>
      <supportedRuntime version="v3.5.7000"/>  // <= what value should this be/what is on my device?
  </startup>
</configuration>

但是“ v3.5.7000”实际上应该是什么? 我需要知道如何确定该版本值。

在“系统属性”中,我可以看到一些操作系统信息,但看不到CF版本。 例如,我看到:

MS Windows CE版本6.00

UPDATE

随便看看,我注意到设备上有一个名为“ Microsoft .NET CF 2.0.LOG.TXT”的文件

文件名表示安装了CF 2.0版本的IS 2.0

因此,由于在另一台设备上运行的.exe似乎是CF 1,我可以将其用作[appName] .exe.config文件的内容(文件内的内容更具体于版本号):

<configuration>
  <runtime>
      <compatibilityversion major="1" minor="0"/>
  </runtime>  
  <startup>
      <supportedRuntime version="v2.0.7045.00"/>  
  </startup>
</configuration>

有帮助吗?

更新2

文件“ Microsoft .NET CF 2.0.LOG文件包含一些有趣的信息:

25/04/2014 16:50:32: Entered Install_Init().
    First Call: Yes
    Previously Installed: No
    Installation folder is: '\Windows'.
25/04/2014 16:50:32: Build 2.0.7045.00 created on Feb 13 2007 at 22:23:41
25/04/2014 16:50:32: Device CPU: 'ARMV4I', 05020000 (84017152)
25/04/2014 16:50:32: MOTOROLA WinCE 6.00
25/04/2014 16:50:32: AKU string : ''
25/04/2014 16:50:32: OEM info   : 'MOTOROLA MC3100R'
25/04/2014 16:50:32: Our trust level is: 2
. . .
25/04/2014 16:50:32: Invoker's command line: '/noui \Windows\NETCFV2.wce5.armv4i.cab'
25/04/2014 16:50:32: Memory status, K --------------------------
25/04/2014 16:50:32:   Load           : 35
25/04/2014 16:50:32:   Physical       : 55616
25/04/2014 16:50:32:   Physical free  : 36440
25/04/2014 16:50:32:   Virtual        : 1048576
25/04/2014 16:50:32:   Virtual free   : 1047936
25/04/2014 16:50:32: Storage status, K -------------------------
25/04/2014 16:50:32:   Available to us: 17020
25/04/2014 16:50:32:   Total storage  : 30080
25/04/2014 16:50:32:   Available total: 17020
25/04/2014 16:50:32: -------------------------------------------
25/04/2014 16:50:32: About to process registry.
25/04/2014 16:50:32: Opened CF registry key OK. 
25/04/2014 16:50:32: Looking for upgradeable installations for version '2.0.7045.00'
25/04/2014 16:50:32: Got version value '3.5.7338.00'
25/04/2014 16:50:32: Side by side version '3.5.7338.00' found and skipped.
25/04/2014 16:50:32: Added new CF version value '2.0.7045.00'.
25/04/2014 16:50:32: CF registry key closed.
25/04/2014 16:50:36: Entered Install_Exit().
    Failed Dirs: 0
    Failed Files: 0
    Failed RegKeys: 0
    Failed RegVals: 0
    Failed Shortcuts: 0
. . .
25/04/2014 16:50:36: Processing alternative file: '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I'.
25/04/2014 16:50:36: Special file extension: '.-500~-500~ARMV4I'.
25/04/2014 16:50:36: File is intended for OS: -500 to -500, CPU: ARMV4I
25/04/2014 16:50:36: Device CPU: 'ARMV4I', 05020000 (84017152)
25/04/2014 16:50:36: CPU matches.
25/04/2014 16:50:36: Version MIN ignored.
25/04/2014 16:50:36: Version MAX ignored.
25/04/2014 16:50:36: Querying version of file '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I'.
25/04/2014 16:50:36: Version determined to be: 2.0.7045.0.
25/04/2014 16:50:36: Get version completed.
25/04/2014 16:50:36: Querying version of file '\Windows\cgacutil.exe'.
25/04/2014 16:50:36: Version determined to be: 3.5.7283.0.
25/04/2014 16:50:36: Get version completed.
25/04/2014 16:50:36: Suggestion: do not overwrite.
25/04/2014 16:50:36: Delete file '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I': done.
25/04/2014 16:50:36: Processing alternative file: '\Windows\.NET CF 2.0\mscoree.dll.-500~-500~ARMV4I'.
. . .
25/04/2014 16:50:36: Adding file 'mscorlib.dll': added.
25/04/2014 16:50:36: Adding file 'system.dll': added.
25/04/2014 16:50:36: Adding file 'system.drawing.dll': added.
25/04/2014 16:50:36: Adding file 'system.messaging.dll': added.
25/04/2014 16:50:36: Adding file 'system.web.services.dll': added.
25/04/2014 16:50:36: Adding file 'system.windows.forms.dll': added.
25/04/2014 16:50:36: Adding file 'system.windows.forms.datagrid.dll': added.
25/04/2014 16:50:36: Adding file 'system.xml.dll': added.
25/04/2014 16:50:36: Adding file 'system.net.irda.dll': added.
25/04/2014 16:50:36: Adding file 'system.data.dll': added.
25/04/2014 16:50:36: Adding file 'microsoft.visualbasic.dll': added.
25/04/2014 16:50:36: Adding file 'microsoft.windowsce.forms.dll': added.
25/04/2014 16:50:36: Adding file 'Microsoft.WindowsMobile.DirectX.dll': added.
25/04/2014 16:50:36: Adding file 'CustomMarshalers.dll': added

因此,新设备同时安装了2.0.7045.0版和3.5.7283.0版。

根据运行Windows \\ cgacutil.exe时显示的内容,旧设备已安装1.0.3316.00。

有问题的项目的框架版本设置为“ v2.0”

旧版本在旧设备上运行,但不在新设备上运行... ???

新版本的源代码都无法运行。 由于它以Framework 2.0版为目标,因此我现在了解了为什么新版本无法在旧设备上运行。 但是,为什么不使用新的呢? 它已安装CF 2,与项目所针对的Framework版本相对应。

更新3

我将文件[appName] .exe.config复制到了手持设备中与.exe相同的文件夹中

这是较新的(Motorola 3190)设备,据说它同时安装了CF版本2. *和3.5 *。

确实,尝试运行旧版(据说是为CF 1.0 *构建)的exe确实与那里的exe.config文件的行为有所不同。 我得到的不是永久的沙漏,而是:

**.NET CF Initialization Error**
to run this application, you must first install one of the following versions of the .NET Compact Framework:
v2.0.7045.00
Contact your application publisher for instructions about obtaining the appropriate version of the .NET Compact Framework.

因此它告诉我联系我自己,这没有多大用处。

为什么文本文件指示我已安装v2.0.7045.00,而这表明我未安装它?

更新4

文本文件指示设备上已安装版本2 *,这确实让我感到震惊/沮丧,但是尝试在该设备上运行最新版本(其“框架版本”属性为“ v2.0”)却无法运行。 没有bla.exe.config文件的沙漏,带有上面的err msg会失败...?!?

更新5

我还将最新版本的应用程序(针对Framework 2)复制到了较旧的设备(已安装Framework 1的设备)上。 我在其中添加了带有以下内容的.exe的[appName] .exe.config:

<configuration>
  <runtime>
      <compatibilityversion major="2" minor="0"/>
v2.0.7045.00
  </runtime>  
  <startup>
      <supportedRuntime version="1.0.3316.00"/>  
  </startup>
</configuration>

...但是尝试运行.exe只会导致短暂的沙漏-没有错误的消息,也没有乐趣。

更新6

进一步进行试验,我将项目遇到了相反的问题(框架版本为v3.5,可以在较新的设备上运行,但不能在较旧的设备上运行),并编辑了其.csproj文件,将<TargetFrameworkVersion>从“ v3.5 “()更改为” v2.0“(我首先尝试将其更改为” v1.0“,但收到错误消息:” 该项目需要.NET Compact Framework v1.0,该计算机未安装。 “从“ v1.0”到“ v2.0”

但是,这没有帮助-该版本也无法在(较旧的)手持设备上运行...

但是,错误消息msg告诉我,我以前从未需要创建Framework 1.0版,因为我什至没有在我的开发机上安装它(但是我以前已经构建了旧版应用程序的版本,该版本确实可以在两个版本上运行设备)。 因此,似乎设备本身已被“迷住了”(新版本的Compact Framework已被旧版本取代)。

更新7

注意:在通过.csproj文件将Framework版本从“ v3.5”更改为“ v2.0”之后,在较新设备上运行的小型.exe / utility仍然可以运行

更新8

为了进一步弄清(弄混?)发生了什么:

3090 Symbol手持设备已安装CF版本1.0.3316.00(根据Windows \\ cgacutil.exe)

3190 Motorola手持设备没有Windows \\ cgacutil.exe,但是具有一个文件,该文件指示在其上安装了Compact Framework的版本“ 2.0.7045.00”和“ 3.5.7338.00”

在现已失效的计算机上建立的最后一个exe文件/由已去世的开发人员开发,仅在3090上运行。 它大概以CF Framework 1为目标(因为它在安装了该版本CF的设备上运行)

确实如此是很奇怪的,因为在他离开之前,我们通过TFS共享了代码,而且我能够在设备上运行组合代码的结果(.exe),他也是如此。

我的源代码中的最新版本可以编译/构建,但不能在3090和3190上运行。它针对的是CF Framework 2.0版

我构建的一个简约实用程序仅在3190上运行。 它针对CF Framework 2.0版

所有这些都给任何人一个线索吗?

更新9

在下面的IowaEric答案中引用的此站点上 ,它说:“ .NET Compact Framework在每个设备上安装了一个名为cgacutil.exe的实用程序。”

我在一台设备上看到该文件(cgacutil.exe),但在另一台设备上看不到。

上面的链接还显示:“在Pocket PC或Smartphone设备上,您可以使用File Explorer”

...但是我也没有看到“文件资源管理器”应用[let]; 我有Windows资源管理器... ???

更新10

啊哈! 如该链接所述,进入开始>运行...> cgacutil确实可行。 它告诉我“ ... [3.5.7283.0,2.0.7045.0]”

(在3190上;在3090上显示为“ 1.0.3316.00”)

更新11

因此,这就是我能够确定设备上存在的内容的原因:

OS (Windows CE) version of 3090 == 05.00.1400
OS (Windows CE) version of 3190 == 06.00

CF versions installed on the devices:
Symbol 3090 == 1.0.3316.00
Motorola 3190 == 2.0.7045.0 & 3.5.7283.0

CF Version chart:
1.0.3316.0 == 1.0 SP2
2.0.7045.0 == 2.0 SP2   

老实说 我没看完你的全部问题。 但要回答标题问题,请检查此问题-以编程方式检查已安装的.NET Compact Framework版本

我认为WinMo设备可以安装多个版本的CF。

该站点有一张小表,可帮助您映射CF版本的运行时版本-http: //www.christec.co.nz/blog/archives/113

此信息也存储在注册表中。 要查看和编辑注册表,您应该在c:\\ program files \\ ce tools \\ bin \\中有一个注册表编辑器,我不确定该路径,因为我现在不在开发PC上。 它可能与Windows Mobile SDK之一一起安装,或者可能是电动玩具Windows CE的一部分。 谷歌,你会发现它。 然后在注册表中搜索这些版本号之一,您将获得注册表路径。 同样,如果我在开发机上,我可以告诉你。 如果您仍然遇到问题,我可以为您找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM