NETCF 3.9发布了吗?

d.p*_*pov 3 windows-mobile .net-cf-3.5 windows-embedded-compact

我试图打开一个用VS2008构建的旧项目,它有一个针对Windows Mobile 6设备的类库(.NET Compact Framework 3.5).自从老款VS2008以来,VS,AFAK中不支持移动设备.现在我可以随处阅读VS2012再次支持CF3.9和移动设备,并向后兼容CF 3.5.我认为他们现在称之为'Windows Embedded Compact',或者其他什么.但一切都只是博客.

在哪里可以找到适用于新Compact框架的SDK?它尚未发布,或者CTP发布日期是否已知?目前是否有办法用VS2012编译WM6 [.5]的程序集?

我需要重新编译CF3.5项目.

cta*_*cke 8

不确定你所阅读的"无处不在",但这是错误的.Compact Framework 3.9尚未发布.它将在Windows Embedded Compact(Window CE)2013发布时发布,该版本应该在今年上半年(2013年)发布.

即使它已发布,您仍然无法将Visual Studio 2012或Compact Framework 3.9用于早期版本的Windows CE.工具和编译器仅适用于2013年(不是说我同意或喜欢这样,只是报告事实).

如果您的目标是WinMo 6.x,那么今天唯一的选择是使用Studio 2008的CF 2.0或CF 3.5,即使新版本的CF发布,我也不会怀疑它会改变.


Aar*_*ack 5

因此,您可以通过一些csproj调整在VS2012中构建CF 3.5.首先安装NETCFSetupv35.msi和NETCFv35PowerToys.msi.您可能需要使用以下reg hack来修复x64位内容.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0]
"Language"="1033"
"Version"="3.5.7283"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\InstallRoot]
@="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PocketPC]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PocketPC\AsmmetaBinder]
"TypeName"="Microsoft.CompactFramework.Build.PocketPC.BindingService, Microsoft.CompactFramework.Build.Tasks, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, Custom=null"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PocketPC\AsmmetaBinder\4118C335-430C-497f-BE48-11C3316B135E]
"TypeName"="Microsoft.CompactFramework.Build.WM50PocketPC.BindingService, Microsoft.CompactFramework.Build.Tasks, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, Custom=null"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PocketPC\AssemblyFoldersEx]
@="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\WindowsCE\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PowerToys]
"Language"="1033"
"Version"="3.5.7338"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\PowerToys\InstallRoot]
@="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\Smartphone]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\Smartphone\AsmmetaBinder]
"TypeName"="Microsoft.CompactFramework.Build.SmartPhone.BindingService, Microsoft.CompactFramework.Build.Tasks, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, Custom=null"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\Smartphone\AsmmetaBinder\BD0CC567-F6FD-4ca3-99D2-063EFDFC0A39]
"TypeName"="Microsoft.CompactFramework.Build.WM50SmartPhone.BindingService, Microsoft.CompactFramework.Build.Tasks, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, Custom=null"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\Smartphone\AssemblyFoldersEx]
@="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\WindowsCE\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\WindowsCE]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\WindowsCE\AsmmetaBinder]
"TypeName"="Microsoft.CompactFramework.Build.WindowsCE.BindingService, Microsoft.CompactFramework.Build.Tasks, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, Custom=null"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetCompactFramework\v3.5.0.0\WindowsCE\AssemblyFoldersEx]
@="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\WindowsCE\\"
Run Code Online (Sandbox Code Playgroud)

然后,您需要创建一个类似于此的新.target文件.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(BuildForWinCE)' == 'true'">
    <MSBuildBinPathCF>C:\Windows\Microsoft.NET\Framework\v3.5</MSBuildBinPathCF>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <PlatformFamilyName>WindowsCE</PlatformFamilyName>
    <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
    <IntermediateOutputPath>obj\WinCE</IntermediateOutputPath>
    <OutputPath>bin\WinCE</OutputPath>
    <FrameworkRegistryBase>Software\Microsoft\.NETCompactFramework</FrameworkRegistryBase>
    <AssemblyFoldersSuffix>$(PlatformFamilyName)\AssemblyFoldersEx</AssemblyFoldersSuffix>
    <AssemblyFoldersExConditions>,OSVersion=$(OSVersion):Platform=$(PlatformID)</AssemblyFoldersExConditions>
    <TargetCompactFramework>true</TargetCompactFramework>
    <DefineConstants>$(DefineConstants);WindowsCE</DefineConstants>
    <NoStdLib>false</NoStdLib>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在csproj中包含新目标文件和条件紧凑框架目标

<Import Project="Compact.targets" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Condition="'$(BuildForWinCE)' == 'true'" Project="$(MSBuildBinPathCF)\Microsoft.CompactFramework.Common.targets" />
Run Code Online (Sandbox Code Playgroud)

如果要为WinCE构建,只需设置以下参数即可.

BuildForWinCE=true
Run Code Online (Sandbox Code Playgroud)