我正在将带有 .NET 1.1 的 XP 模式下的 VS 2003 中的旧版 Windows CE / Compact Framework 项目移植到 VS 2008 和 .NET 3.5
由于尝试以手持设备为目标进行调试非常痛苦(我所针对的特定设备没有模拟器,摩托罗拉 3190),我想在目标 Windows CE 和 Winforms 之间切换我的项目(我将调试它作为Winforms 应用程序正常,定期将其设置为 Windows CE 以便构建并下载到设备)。我怎样才能做到这一点?我现在不明白 Visual Studio 如何知道该项目是Windows CE / CF 项目。
确实如此,因为项目属性有一个设备选项卡,并且当我按 F5 时,会调用一个仿真器(一种通用的)。
但在项目属性 Application 选项卡上,Target Framework 下拉列表为空白且灰显。输出类型是 Windows 应用程序。我认为目标框架将设置为 Windows CE 或类似的。显然它设置在某个地方,但在哪里?如何在它作为 CE / CF 和作为“普通旧”Winforms 项目运行之间切换?
选择 Project > Change Target Platform 确实将“Windows CE”显示为当前值,但“更改为:”下拉列表仅包含:
Pocket PC 2003
Windows Mobile 5.0 Pocket PC SDK
Windows Mobile 5.0 Smartphone SDK
Windows Mobile 6 Professional SDK
项目属性 Devies 选项卡在“目标设备:”下拉列表中有更多选项,但对我来说似乎没有任何价值。
如果我卸载项目并选择“编辑 bla.csproj,我会在该 .csproj 文件中看到以下条目:
<NativePlatformName>Windows CE</NativePlatformName>
. . .
<PlatformFamilyName>WindowsCE</PlatformFamilyName>
. . .
<Reference Include="Microsoft.WindowsCE.Forms">
<Name>Microsoft.WindowsCE.Forms</Name>
</Reference>
. . .
<Import Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
...并且可能至少其中一个在这里很重要(不是双关语),但如果是这样,我应该将其更改为什么,如果我应该更改它,我应该直接还是间接地更改它?如果是后者,怎么做?
更新
尝试将所有 *.cs 和 *.resx 文件添加到 Winforms 项目,并以这种方式攻击二元性,我在某些但不是所有 *.resx 文件上收到以下错误:
Resx 文件无效。ResX 输入无效。找不到 ResX 读取器和写入器类型名称的有效“resheader”标签。
这意味着什么?此处的解决方案C# resx file error : 似乎不适用于我的情况,因为 out-of-kilter / off-the-rails 文件已经具有以下格式:
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>