Измените C++ / проект CLI к другой платформе, чем 4,0 с vs2010

Так как я обновил свой проект до Visual Studio формат проекта 2010 года, мой C++ / проект CLI предназначен к платформе .NET 4.0.

Легко переключить версию платформы на другую версию из проекта C#, но у меня нет подсказки, как сделать это в C++ / проект CLI, я не вижу установки для этого на страницах свойства проекта.

153
задан Ciro Santilli 新疆改造中心法轮功六四事件 21 August 2013 в 07:06
поделиться

2 ответа

Это появляется, когда вы нажимаете F1 в диалоговом окне Framework and References:

По умолчанию для новых проектов целевая платформа установлена ​​на .NET Framework 4. IDE не поддерживает изменение целевой платформы, но вы можете измените его вручную. В файле проекта (.vcxproj) целевая платформа по умолчанию представлена ​​элементом свойства v4.0. Чтобы изменить целевую платформу, выгрузите проект, используйте текстовый редактор, чтобы открыть файл проекта, а затем измените значение элемента свойства с v4.0 на другую версию, установленную на вашем сервере. Например, если вы укажете v3.5, который представляет .NET Framework v3.5, Visual Studio 2008 SP1 должен быть установлен . Сохраните и закройте файл, перезагрузите проект и убедитесь, что целевая платформа отображается на странице свойств. *

Это не очень точно для преобразованных проектов, вам придется добавить элемент себя. Поместите его в PropertyGroup с пометкой «Globals»:

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

Ситуация отличается, когда вы используете VS2012 и выше, первую версию VS, которая получила настройку Platform Toolset на странице свойств General. Затем вы должны выбрать «v90», чтобы получить правильную сборку, ориентированную на 3.5. Однако это неуклюже, у вас должны быть установлены все промежуточные версии VS на машине, чтобы этот выбор был доступен.

Зачем вам нужно установить VS2008, нужно объяснять само по себе. Основная проблема заключается в том, что библиотека времени выполнения C (msvcrt100.dll и выше) содержит код .NET для поддержки управляемого выполнения кода.Важнейшей деталью является инициализатор модуля, который обеспечивает правильную инициализацию CRT в программе, использующей код C ++ / CLI. Этот код всегда нацелен на .NET 4, и, поскольку он встроен в msvcrt100.dll (и выше), у вас всегда есть жесткая зависимость от среды выполнения v4.0.30319. У вас может быть только чистая зависимость v2.0.50727, когда вы используете старую среду выполнения C, msvcrt90.dll. Вы можете быть уверены, что у вас есть зависимость от msvcrt90.dll, только когда вы используете файлы компилятора #include VS2008.

Холодный твердый факт, что в ближайшее время необходимо перейти на .NET 4, и если вы этого не сделаете, вы столкнетесь с подобными проблемами сборки. Практических препятствий для этого очень мало, .NET 4 широко доступен бесплатно для всех целей, которые вы можете себе представить. Преодоление FUD, связанного с переходом на более высокую версию среды выполнения, обычно является только реальной проблемой. Никаких поводов для опасений и сомнений, стабильно.

189
ответ дан 23 November 2019 в 22:06
поделиться

Да, можно изменить целевой объект даже для управляемых проектов C ++:

Изменение целевой .NET Framework для C ++ / CLI (VS 2010) Чтобы изменить версия .NET Framework для Проекты C ++ / CLI (VS 2010)

Щелкните правой кнопкой мыши проект в Solution Проводник и нажмите "Выгрузить проект". Щелкните правой кнопкой мыши выгруженный проект в Обозреватель решений и выберите Изменить. .vcxproj В XML проекта узел поиска файла В этом узле найдите узел (если узел не может быть найден, добавьте его) Внутренний текст узла определяет цель фреймворк. Это может быть v2.0, v3.0, v3.5 или v4.0 Сохраните файл vcxproj и закройте его Щелкните правой кнопкой мыши выгруженный проект в Обозреватель решений и нажмите "Обновить". Пример проекта v3.5

Примечание. Эти шаги применимы только для Visual Studio 2010, поскольку он использует новые формат файлов проекта C ++.

Источник на MSDN: Как изменить целевую платформу .NET Framework

18
ответ дан 23 November 2019 в 22:06
поделиться