Универсальное приложение Windows — нет. Любая конфигурация ЦП для Windows 10?

Я обновляю проект Windows Universal, созданный с помощью

Windows Software Development Kit (SDK) для Windows 10 Техническая предварительная версия

to

Windows Software Development Kit (SDK) для Windows 10 Предварительная оценка Предварительный просмотр:

Таким образом, изменения в файле решения — это только VisualStudioVersion с 14.0.22609.0 на 14.0.22823.1.

Изменения в файле проекта также незначительны:

<TargetPlatformVersion>10.0.10030.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>

to

 <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>
 <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>

Проблема в том, что первоначально этот универсальный проект был успешно собран для конфигурации Любой процессор, но теперь я начал получать следующую ошибку:

Архитектура процессора создаваемого проекта «Любой ЦП» не поддерживается указанным пакетом SDK «Microsoft.NET.CoreRuntime, версия = 1.0». Рассмотрите возможность изменения архитектуры целевого процессора вашего проекта (в Visual Studio это можно сделать через Configuration Manager) на одну из архитектур, поддерживаемых SDK: "x86, x64, ARM".

Итак, сообщение ясно, что делать, просто хочу подтвердить:

Действительно ли любой процессор больше невозможен для универсальных проектов, начиная с «SDK для Windows 10 Insider Preview»?

Обновить

Для вновь созданного проекта также нет AnyCPU - по умолчанию используется x86.


person Sevenate    schedule 30.04.2015    source источник
comment
Имейте в виду, что вы используете SDK, который может и будет меняться, включая ошибки и все такое.   -  person SteveFerg    schedule 01.05.2015
comment
@SteveFerg, конечно. Интересно, насколько это может быть по дизайну или просто ошибка.   -  person Sevenate    schedule 01.05.2015
comment
меня это тоже удивляет, скорее похоже на требование, чем на ошибку. То же самое и с новым проектом File, без поддержки любого процессора.   -  person Quincy    schedule 01.05.2015
comment
@Куинси, точно! Первое, что я попробовал, это новый пустой универсальный проект, и для него не упоминался ни один процессор.   -  person Sevenate    schedule 01.05.2015
comment
ЭТИ НЕ ЕДИНСТВЕННЫЕ ИЗМЕНЕНИЯ В CSPROJ -- Пожалуйста, сделайте File›New в сборке RC, а затем объедините полученный .csproj с вашим существующим. Вы обнаружите, что вам также необходимо добавить ‹EnableDotNetNativeCompatibleProfile›true‹/EnableDotNetNativeCompatibleProfile› и дополнительно добавить ‹UseDotNetNativeToolchain›true‹/UseDotNetNativeToolchain› в каждую сборку Release.   -  person Lucian Wischik    schedule 22.05.2015
comment
@LucianWischik, спасибо за информацию - я думаю, я открыл страницу настроек проекта и просто сохранил ее, и упомянутые параметры были добавлены в файл проекта автоматически, потому что, когда я проверил разницу с недавно созданным образцом проекта некоторое время спустя - там были нет (основной) разницы между ними.   -  person Sevenate    schedule 22.05.2015


Ответы (3)


А вот и ответ:

  1. Откройте решение, содержащее универсальное приложение C# для Windows. Вы увидите, что файл вашего проекта (файл .csproj) необходимо обновить. Щелкните правой кнопкой мыши файл проекта и выберите редактирование этого файла.

  2. Найдите элемент <PropertyGroup>, содержащий <TargetPlatformVersion>... Затем установите значение элемента <Platform> на x86...

  3. Найдите <PropertyGroup> элементов, настроенных для платформы AnyCPU как часть атрибута Condition. Удалите эти элементы и все их дочерние элементы. AnyCPU не поддерживается для приложений Windows 10 в Visual Studio 2015 RC.

ОБНОВЛЕНИЕ 1

Из этого видео — Глубокое погружение в разработку универсальных приложений для Windows на XAML и .NET , вперед до 0:32:28 — похоже, есть (небольшой) шанс вернуть любой процессор в релизе:

Скриншот из видеоролика

ОБНОВЛЕНИЕ 2

Еще одно подтверждение от устраненных ошибок и известных проблем Visual Studio 2015 RC:

Конфигурация платформы AnyCPU не поддерживается для приложений Windows 10 Insider Preview, созданных с использованием C# и Visual Basic. Этот выпуск Visual Studio использует .NET Native для создания приложений Windows 10. .NET Native компилирует код C# и Visual Basic в машинный код и не зависит от процессора.

Так что, мне кажется, надежды на возврат AnyCPU конфига почти нет даже для VS2015 RTM.

ОБНОВЛЕНИЕ 3

Что ж, наконец-то готова RTM и, как и ожидалось, без AnyCPU:

Найдите элементы, настроенные для платформы AnyCPU как часть атрибута Condition. Удалите эти элементы и все их дочерние элементы. AnyCPU не поддерживается для приложений Windows 10 в Visual Studio 2015.

person Sevenate    schedule 05.05.2015
comment
Спасибо. Мы назвали это - AnyCPU не поддерживается! вау интересно - person Quincy; 06.05.2015
comment
Будет ли он поддерживаться в финальной версии VS2015? - person Rico Suter; 06.05.2015
comment
Спасибо, кажется, надежда еще есть... :) Мне нужен AnyCPU для моей библиотеки, mytoolkit.codeplex.com, иначе упаковка будет мучением.. - person Rico Suter; 07.05.2015
comment
Кажется действительно странным, что они удалили Любой ЦП в качестве цели. :-/ - person BrainSlugs83; 10.10.2016

Что ж, AnyCPU по-прежнему существует для типов проектов DLL и Windows Runtime Component. Отсутствие AnyCPU вызвано использованием .NET Native по умолчанию для универсальных приложений Windows в конфигурации Release. Как вы, возможно, знаете, .NET Native связывает приложение и все его зависимости в один EXE-файл, поэтому AnyCPU по-прежнему будет использоваться для библиотек DLL и компонентов WinRT.

Теперь я не уверен, но ребята из DevDiv, похоже, собирают отзывы о «стандартности» .NET Native, поэтому AnyCPU все еще может вернуться к тому времени или после RTM, если будет достаточно отзывов по этому поводу. Тем не менее, я считаю, что .NET Native того стоит, поскольку вы все равно развертываете свои приложения через Store.

person Alovchin    schedule 15.05.2015
comment
Я бы сказал, что обычно я развертываю мои приложения именно через стороннюю загрузку, а из Магазина развертываю чужие приложения. - person Sevenate; 15.05.2015
comment
Но в любом случае хорошо иметь AnyCPU хотя бы для проектов компонентов времени выполнения. - person Sevenate; 15.05.2015
comment
Я девдив. .NET Native является обязательным для приложений магазина. Единственное, что Унни упомянул о поиске отзывов, это то, что если вы достаточно любите AnyCPU, то, возможно, мы сможем его подделать — то есть сделать так, чтобы вы могли выбрать AnyCPU, и он опрашивает ваше целевое устройство, чтобы узнать, какая у него архитектура. , а затем неявно выбирает эту архитектуру. Само приложение никогда не может быть AnyCPU. - person Lucian Wischik; 22.05.2015
comment
Спасибо за информацию. Тем не менее, некоторая критика в адрес Microsoft: поддержка Native-компиляции на самом деле не кажется хорошим оправданием — в конце концов, это решаемая проблема (у Mac были собственные приложения, которые могли работать на PPC и Intel в течение длительного времени; они просто скомпилировали Fat Двоичные файлы, содержащие несколько исполняемых образов, скомпилированных в него). -- Кажется, было бы очень просто создать пакет для магазина Windows, содержащий несколько исполняемых файлов, по одному для каждой платформы. - person BrainSlugs83; 10.10.2016
comment
Я думаю, что это должен был быть принятый ответ, и я только что обнаружил отличную ссылку по адресу: blogs.windows.com/buildingapps/2015/08/20/ (думаю, можно опубликовать приложение Windows Store с несколькими EXE-файлами, хотя мне бы хотелось, чтобы они работали более плавно.) - person brodybits; 10.01.2017

Я предполагаю, что вы щелкаете правой кнопкой мыши по своему проекту, переходя в «Свойства». В верхней строке «Сборка» под платформой у вас есть ARM, x64, x86 и все платформы. Немного дальше в групповом поле «Общие» у вас есть «Цель платформы», которая дает вам любой процессор, x86, x64 и ARM.

Если вы смотрите в Диспетчер конфигураций (сборка-> Диспетчер конфигураций), вы правы, там только ARM, x64, x86, новый... и редактировать.... Если вы нажмете "Создать...", "Любой CPU» — это опция (по умолчанию), которую вы можете добавить, а затем вы можете вернуться и выбрать ее для своей конфигурации.

person SteveFerg    schedule 01.05.2015
comment
Очень надеялся, что это сработает, но, к сожалению, ошибка, указанная в вопросе, по-прежнему возникает даже после изменения конфигурации везде на любой процессор. Я подозреваю, что ключевыми словами здесь будут: ... Любой ЦП не поддерживается упомянутым SDK и ...одна из архитектур поддерживается SDK: x86 , x64, ARM. - person Sevenate; 04.05.2015