NETCF 3.9 выпущена?

Я пытался открыть один из моих старых проектов, собранных с помощью VS2008, и в нем есть библиотека классов, предназначенная для устройств Windows Mobile 6 (.NET Compact Framework 3.5). Со времен старого доброго VS2008 в VS, AFAK нет поддержки мобильных устройств. Теперь я могу везде читать, что VS2012 снова поддерживает CF3.9 и мобильные устройства и обратно совместим с CF 3.5. Думаю, теперь они называют это «Windows Embedded Compact» или что-то в этом роде. Но все это просто БЛОГИ.

Где я могу найти SDK для новой платформы Compact? Он уже выпущен или известна дата выхода CTP? Есть ли в настоящее время способ скомпилировать сборку для WM6 [.5] с VS2012?

Мне нужно перекомпилировать проект CF3.5.


person d.popov    schedule 11.01.2013    source источник


Ответы (2)


Не уверен, где это «везде», что вы читаете, но это неправильно. Compact Framework 3.9 еще не выпущен. Он будет выпущен, когда выйдет Windows Embedded Compact (Window CE) 2013, то есть в первой половине этого года (2013).

Даже когда он будет выпущен, вы по-прежнему не сможете использовать Visual Studio 2012 или Compact Framework 3.9 для более ранней версии Windows CE. Инструменты и компилятор будут только для 2013 года (не говоря уже о том, что я согласен или люблю это, просто сообщаю факты).

Если вы ориентируетесь на WinMo 6.x, ваш единственный вариант сегодня - CF 2.0 или CF 3.5 с Studio 2008, и я не подозреваю, что это изменится, даже когда будет выпущена новая версия CF .

person ctacke    schedule 11.01.2013
comment
Спасибо. Поэтому информации мало - она ​​еще не выпущена. Я видел это о «Windows Embedded Compact», но, когда слышу это впервые, я немного запутался ... Итак, MS продает тот же СТАРЫЙ продукт (WinCE), с новым ИМЯ и НИКАКОЙ обратной совместимости. Здорово!!! - person d.popov; 18.01.2013
comment
Не могли бы вы процитировать вопрос о необходимости VS2008 с CF 2.0 и CF 3.5? Мне очень нужен документ от Microsoft, содержащий эту информацию. - person Thomas; 13.01.2015
comment
Мне не известно о какой-либо конкретной положительной документации - вы получите только отрицательную документацию. Новые версии Studio не включают эту функцию, и обычно продукты не документируют то, чего они не делают. - person ctacke; 13.01.2015

Таким образом, вы можете получить сборку CF 3.5 в VS2012 с помощью нескольких настроек csproj. Сначала установите NETCFSetupv35.msi и NETCFv35PowerToys.msi. Возможно, вам понадобится использовать следующий хак reg, чтобы исправить 64-битные вещи.

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\\"

Затем вам нужно будет создать новый файл .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>

Затем вы можете включить свой новый файл целей и условные компактные цели фреймворка в свой csproj

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

Если вы хотите построить для WinCE, просто установите следующий параметр.

BuildForWinCE=true
person Aaron Stainback    schedule 25.05.2013
comment
Отличный обходной путь - возможно ли это также для VS2013? - person Sven; 01.04.2014
comment
Привет, VS 2013 выдает такую ​​ошибку при открытии моего старого решения: приложение, на котором основан этот тип проекта, не найдено. Для получения дополнительной информации попробуйте эту ссылку: go.microsoft .com / fwlink / Я что-то пропустил? - person deerchao; 31.05.2014
comment
И даже если я это сделаю, я все равно не могу использовать vs2013 для отладки на своих устройствах, верно? В таком случае я просто буду придерживаться VS2008. - person deerchao; 31.05.2014