Измените проект С++/CLI на другую структуру, чем 4.0 с помощью vs2010

Поскольку я обновил проект до визуального дизайна студии 2010, мой проект С++/CLI нацелен на .NET Framework 4.0.

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

Ответ 1

Это отображается, когда вы нажимаете F1 в диалоговом окне "Структура и ссылки":

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

Это не очень точная версия преобразованных проектов, вам придется добавить элемент <TargetFrameworkVersion> самостоятельно. Поместите его в 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 для поддержки выполнения управляемого кода. Важнейшей деталью является инициализатор модуля, который обеспечивает правильную инициализацию ЭЛТ в программе, использующей код С++/CLI. Этот код всегда нацелен на .NET 4, и поскольку он жестко завален в msvcrt100.dll(и выше), у вас всегда есть жесткая зависимость от времени выполнения v4.0.30319. У вас может быть только чистая зависимость v2.0.50727, когда вы используете старую C runtime, msvcrt90.dll. Вы можете только быть уверены, что у вас есть зависимость msvcrt90.dll, когда вы используете файлы компилятора #include VS2008.

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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