Изменить проект C ++ / CLI на другой фреймворк, чем 4.0 с vs2010 - PullRequest
152 голосов
/ 27 мая 2010

Поскольку я обновил свой проект до формата проекта Visual Studio 2010, мой проект C ++ / CLI нацелен на .net Framework 4.0.

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

Ответы [ 4 ]

188 голосов
/ 27 мая 2010

Отображается при нажатии клавиши F1 в диалоговом окне Framework and References:

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

Это не очень точно для конвертированных проектов, вам придется добавить элемент <TargetFrameworkVersion> самостоятельно. Поместите его в PropertyGroup с пометкой "Глобальные":

  <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, связанное с переходом на более высокую версию времени выполнения, как правило, является только реальной проблемой. Нет причин для страха и сомнений, он стабилен.

18 голосов
/ 27 мая 2010

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

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

Щелкните правой кнопкой мыши проект в Solution Проводник и нажмите «Выгрузить проект» Щелкните правой кнопкой мыши на незагруженном проекте в Обозреватель решений и выберите Редактировать <projectname>.vcxproj В проекте XML файл locate <PropertyGroup Label="Globals"> В этом узле найдите узел <TargetFrameworkVersion> (если узел не может быть найден, добавьте его) Внутренний текст узла определяет цель фреймворк. Это может быть v2.0, v3.0, v3.5 или v4.0 Сохраните файл vcxproj и закройте его Щелкните правой кнопкой мыши на незагруженном проекте в Обозреватель решений и нажмите Перезагрузить Пример проекта <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

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

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

5 голосов
/ 16 сентября 2011

от анонимного пользователя:

(Редактирование, так как я новый пользователь и не могу ответить на это, кто бы это не стеснялся, отправляет следующее). Изменение Toolset на v100 фактически заставляет VS2010 ориентироваться на .NET 4.0, даже если он все равно будет отображаться как целевой 3.5 в свойствах проекта. VS2010 действительно должен выдать предупреждение об этом, потому что в настоящее время он выглядит так, как будто вы можете настроить таргетинг на .NET 3.5 с помощью набора инструментов v100, чего вы не можете.

0 голосов
/ 15 сентября 2011

В VS 2010, если набор инструментов установлен, перейдите в свойства проекта-> свойства конфигурации-> общие и измените набор инструментов платформы с v90 на v100.

...