我正在从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>
答案 0 :(得分:2)
我不再这样做了(参见底部的*注释),但我过去常常将所有项目保存在一个解决方案中。
我有我的主MDI应用项目。
我有3个小型的单个表单项目(一个在服务器上,另外两个不同的标签打印应用程序)
有2个Windows Mobile项目(一个名为Packout,一个名为Inspections)
这些项目已经在我的PC上共享文件位置,我有一个名为 Common 的文件夹,其中包含用于所有整个解决方案的类。
采用上面显示的Database.cs
类:无论我的项目是MDI表单,独立表单还是Windows Mobile应用程序,它们通常都将连接到同一公司数据库。
不是将文件添加到项目中(制作文件的副本,并将副本放在项目中),而是将文件添加为链接:
我必须承认:在ctacke多年前向我指出之前,我从未注意到添加按钮是一个下拉菜单。
现在,每当您在一个项目中编辑此Database.cs
文件时,它将自动在其链接的所有其他项目中更新。
但这确实存在问题!
有时您需要Windows Mobile中不支持的Windows窗体中的内容。听起来很疯狂,但这是真的。 Windows Mobile不会做到这一切。因此,在您的班级中包含一些#define
语句,而不是被困在为最薄弱的链接(Windows Mobile)编写所有类中。
下面是一个WM5项目的屏幕截图,该项目现在已经System.ComponentModel
注释掉了代码,因为Windows Mobile中未定义 BackgroundWorker 控件:
现在,您可以在解决方案中拥有多个项目。根据您要测试代码的位置,只需右键单击该项目,然后选择设置为启动项目。
现在,您可以测试和开发基本代码的Windows窗体应用程序或您喜欢的任何模拟器(只要它不是那些icky iPhone和Android设备之一),然后切换回旧的公司Clunker 进行最终测试和微调。
*由于我们获得了VS2010和VS2012,我无法将所有项目保留在一个解决方案中。但是,大多数文件仍然与单独的项目相关联。