Как изменить версию .NET Framework в Visual Studio

Открыть проект в Visual Studio и обнаружить ошибку «The referenced project targets a different framework version» или предупреждение о несовместимости сборок — типичный сигнал, что целевую версию .NET Framework нужно изменить вручную. Чаще всего это делается через окно свойств проекта, где в выпадающем списке выбирается нужный фреймворк, но способ зависит от формата проекта: старый .NET Framework и современные SDK-style проекты настраиваются по-разному.

Ниже разберём все рабочие способы: через графический интерфейс, правку файла .csproj, а также что делать, если нужной версии нет в списке. Инструкции актуальны для Visual Studio 2017, 2019 и 2022 — расположение элементов меню в этих версиях практически одинаково.

Как проверить текущую версию .NET Framework проекта

Прежде чем что-то менять, стоит убедиться, какая версия задана прямо сейчас. Самый быстрый способ — открыть Обозреватель решений, кликнуть правой кнопкой по проекту и выбрать Свойства. На вкладке Приложение поле Целевая платформа (Target framework) покажет текущую версию, например .NET Framework 4.7.2.

Альтернативный вариант — заглянуть напрямую в файл проекта. Откройте .csproj в любом текстовом редакторе и найдите элемент <TargetFrameworkVersion> для классического формата или <TargetFramework> для SDK-style. Значение вроде v4.8 или net48 и есть целевая версия.

Изменение версии через свойства проекта

Это основной и самый безопасный метод, подходящий для классических проектов .NET Framework. Последовательность действий:

  • 🖱️ Кликните правой кнопкой мыши по проекту в Обозревателе решений и выберите Свойства (или нажмите Alt+Enter).
  • 📂 Перейдите на вкладку Приложение (Application).
  • 🔽 В поле Целевая платформа раскройте список и выберите нужную версию, например .NET Framework 4.8.
  • 💾 Сохраните изменения (Ctrl+S) и согласитесь на перезагрузку проекта, если IDE предложит.

После смены версии Visual Studio обычно предлагает перезагрузить проект — соглашайтесь, чтобы подтянулись корректные ссылки на сборки. Если проект содержит файл app.config, среда может автоматически обновить атрибут targetFramework в секции startup; проверьте это вручную, если приложение перестало запускаться.

☑️ Смена версии через свойства проекта

Выполнено: 0 / 5

⚠️ Внимание: при понижении версии (например, с 4.8 на 4.5) часть используемых API может оказаться недоступной, и проект перестанет компилироваться. Перед понижением сделайте копию проекта или убедитесь, что изменения зафиксированы в системе контроля версий.

Изменение версии через файл .csproj

Ручная правка файла проекта пригодится, когда нужно массово поменять версию в нескольких проектах или когда графический список недоступен. Для классического формата найдите в .csproj строку:

<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

Замените значение на требуемое — v4.7.2, v4.6.1 и т.д. Для проектов нового SDK-формата синтаксис другой:

<TargetFramework>net48</TargetFramework>

Здесь используются короткие идентификаторы: net48, net472, net461. Перед правкой выгрузите проект (правый клик → Выгрузить проект), иначе Visual Studio может перезаписать изменения. После сохранения перезагрузите проект и выполните полную пересборку решения через Сборка → Пересобрать решение.

Идентификаторы версий для SDK-style проектов

.NET Framework 4.8 → net48; 4.7.2 → net472; 4.7.1 → net471; 4.7 → net47; 4.6.2 → net462; 4.6.1 → net461; 4.6 → net46; 4.5.2 → net452. Для современных .NET используются net6.0, net7.0, net8.0 и далее.

Что делать, если нужной версии нет в списке

Если в выпадающем списке отсутствует, скажем, .NET Framework 4.8, причина почти всегда одна: на машине не установлен соответствующий Developer Pack (пакет разработчика). Сам рантайм, который ставится вместе с Windows, не добавляет в Visual Studio возможность выбирать версию как целевую — для этого нужен именно пакет разработчика.

Скачайте нужный Developer Pack с официального сайта Microsoft (страница загрузок .NET Framework) и установите его при закрытой Visual Studio. После перезапуска IDE версия появится в списке. Таблица ниже поможет сориентироваться, какие версии обычно доступны «из коробки»:

Версия .NET FrameworkНаличие в Windows 10/11Нужен Developer Pack для разработки
4.8 / 4.8.1Обычно предустановленаДа, отдельно
4.7.xЗависит от версии ОСДа
4.6.xМожет присутствоватьДа
4.5.x и нижеКак правило, нетДа, плюс может потребоваться включение компонентов Windows

⚠️ Внимание: версии .NET Framework 4.0–4.5.1 и ниже официально выведены из поддержки Microsoft. Перенос проекта на них возможен технически, но безопаснее рассматривать это как временную меру для совместимости со старым окружением.

📊 Какая версия .NET Framework нужна вашему проекту?
4.8 / 4.8.1
4.7.x
4.6.x
4.5.x и старше (legacy)

Миграция на современный .NET (5/6/7/8+)

Если цель — не просто сменить версию классического фреймворка, а перевести проект на современный .NET, простой правки списка недостаточно. Потребуется конвертация проекта в SDK-style формат: заменить содержимое .csproj на минимальный шаблон с <Project Sdk="Microsoft.NET.Sdk"> и указать <TargetFramework>net8.0</TargetFramework>.

Для сложных решений Microsoft предлагает инструмент .NET Upgrade Assistant — он устанавливается как расширение Visual Studio и автоматизирует часть рутинных шагов. Однако автоматика не гарантирует полной миграции: сторонние библиотеки, привязанные к классическому .NET Framework, и платформозависимый код (например, WCF-сервисы, WebForms) потребуют ручной доработки.

Типичные ошибки после смены версии

После изменения целевой платформы нередко всплывают проблемы. Разберём самые частые:

  • 🔴 Ошибки компиляции «тип или пространство имён не найдено» — признак того, что код использует API, отсутствующие в выбранной версии. Либо вернитесь на более новую версию, либо замените вызовы совместимыми аналогами.
  • 🟡 Предупреждения о несовпадении версий между проектами решения — библиотека, собранная под 4.8, не может использоваться проектом на 4.5. Выровняйте версии во всех проектах решения.
  • 🟠 Ошибки NuGet-пакетов — после смены версии выполните восстановление пакетов: правый клик по решению → Восстановить пакеты NuGet. Иногда помогает переустановка пакета через Update-Package -reinstall в консоли диспетчера пакетов.
  • 🔵 Приложение не запускается на целевой машине — убедитесь, что на компьютере пользователя установлен рантайм не ниже выбранной версии.

Если после всех действий проект ведёт себя странно, очистите папки bin и obj и выполните полную пересборку — устаревшие артефакты сборки часто маскируют реальное состояние проекта.

Часто задаваемые вопросы

Можно ли изменить версию .NET Framework без Visual Studio?

Да. Файл .csproj — обычный XML, его можно отредактировать в любом текстовом редакторе, изменив значение <TargetFrameworkVersion> или <TargetFramework>. Сборку затем можно выполнить через msbuild из командной строки.

Почему в списке нет .NET Framework 4.8?

Наиболее вероятная причина — не установлен .NET Framework 4.8 Developer Pack. Скачайте его с официального сайта Microsoft, установите при закрытой Visual Studio и перезапустите IDE.

Изменится ли версия в app.config автоматически?

Visual Studio обычно обновляет атрибут targetFramework в секции startup файла app.config при смене версии через свойства проекта, но не гарантирует этого во всех сценариях. Если приложение перестало запускаться после смены версии — проверьте этот файл вручную.

Можно ли понизить версию .NET Framework в проекте?

Технически да — тем же способом через свойства проекта. Но код, использующий API новых версий, перестанет компилироваться. Перед понижением зафиксируйте состояние проекта в системе контроля версий, чтобы можно было откатиться.

Чем .NET Framework отличается от .NET (Core)?

.NET Framework — классическая платформа только для Windows, последняя версия линейки — 4.8.x. Современный .NET (начиная с 5-й версии) — кроссплатформенный и активно развивается. Переход между ними — это миграция формата проекта, а не просто выбор пункта в списке.