如何在Windows CE和Winforms之间切换我的VS 2008解决方案的目标平台?

时间:2013-10-21 15:57:04

标签: winforms visual-studio-2008 compact-framework windows-ce project-properties

我正在从VS 2003移植旧版Windows CE / Compact Framework项目 在XP模式下使用.NET 1.1到VS 2008和.NET 3.5

由于调试是如此痛苦,试图瞄准手持设备(我没有针对我所针对的特定设备的模拟器,摩托罗拉3190),我想在针对Windows CE和Winforms之间切换我的项目(我将调试它通常作为Winforms应用程序,定期将其设置为Windows CE,以便构建和下载到设备)。我怎样才能做到这一点?我现在没有看到Visual Studio如何知道项目 是一个Windows CE / CF项目。

确实如此,因为Project Properties有一个Devices选项卡,而当我F5时,会调用一个模拟器(一种通用的模拟器)。

但是在项目属性“应用程序”选项卡上,“目标框架”下拉列表为空白 变灰了。输出类型是Windows应用程序。我认为将设定目标框架 到Windows CE或其他一些。显然它设置在某个地方,但在哪里?我怎样才能切换 它作为CE / CF和“普通的”Winforms项目运行?

选择项目>更改目标平台确实显示“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:似乎不适用于我的情况,因为这些格式不合适/ off-the-rails文件已经具有以下格式:

<resheader name="resmimetype">
  <value>text/microsoft-resx</value>
</resheader>

1 个答案:

答案 0 :(得分:2)

我不再这样做了(参见底部的*注释),但我过去常常将所有项目保存在一个解决方案中。

  • 我有我的主MDI应用项目。

  • 我有3个小型的单个表单项目(一个在服务器上,另外两个不同的标签打印应用程序)

  • 有2个Windows Mobile项目(一个名为Packout,一个名为Inspections)

这些项目已经在我的PC上共享文件位置,我有一个名为 Common 的文件夹,其中包含用于所有整个解决方案的类。

screenshot

采用上面显示的Database.cs类:无论我的项目是MDI表单,独立表单还是Windows Mobile应用程序,它们通常都将连接到同一公司数据库。

不是将文件添加到项目中(制作文件的副本,并将副本放在项目中),而是将文件添加为链接

screenshot add as link

我必须承认:在ctacke多年前向我指出之前,我从未注意到添加按钮是一个下拉菜单。

现在,每当您在一个项目中编辑此Database.cs文件时,它将自动在其链接的所有其他项目中更新。

警告!

但这确实存在问题!

有时您需要Windows Mobile中不支持的Windows窗体中的内容。听起来很疯狂,但这是真的。 Windows Mobile不会做到这一切。因此,在您的班级中包含一些#define语句,而不是被困在为最薄弱的链接(Windows Mobile)编写所有类中。

下面是一个WM5项目的屏幕截图,该项目现在已经System.ComponentModel注释掉了代码,因为Windows Mobile中未定义 BackgroundWorker 控件:

screenshot if ACP_SUITE

这对你有什么用?

现在,您可以在解决方案中拥有多个项目。根据您要测试代码的位置,只需右键单击该项目,然后选择设置为启动项目

screenshot Set as StartUp

现在,您可以测试和开发基本代码的Windows窗体应用程序或您喜欢的任何模拟器(只要它不是那些icky iPhone和Android设备之一),然后切换回旧的公司Clunker 进行最终测试和微调。

*由于我们获得了VS2010和VS2012,我无法将所有项目保留在一个解决方案中。但是,大多数文件仍然与单独的项目相关联。

相关问题