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