Не устанавливается нет фреймворк: Устранение неполадок заблокированных установок и удалений .NET Framework — .NET Framework

Установка NET Framework 3.5 без интернета.

Я недавно после установки Windows 10 20h3 (1607, LTSB, 1803, 1809, LTSC, 1909, Win8.1 … и другие) столкнулся с такой проблемой. Дело в том, что нужно было установить некоторые, скажем так, очень нужные, но чертовски дорогие программы. Так вот некоторые стали кричать и требовать NET.Framework версии 3.5, включая 3.0 и 2.0, а интернет без надежного файервола подключать нельзя. Ну слетят просто активации, сами знаете. ;))

Внимание! Статья была обновлена 20.11.2022 в связи с выходом новейших версий Windows. И будет обновляться по мере выхода новых редакций.
Для удобства общий архив был разделен на отдельные файлы по выпускам. Отдельно программа и руководство.
также статья решает ошибку 0x80072f8f windows 10/11 при установки .net framework 3.5 / 2.0 / 2.5
Так что, выбирайте своё 🙂

Дополнено: Исправление ошибка 0x80072f8f windows 10/11 при установки . net framework 3.5 / 2.0 / 2.5

Перечитал кучу информации в интернете. Всё друг у друга попереписанное 100-тыщ-500 раз. Сайтов 30, наверное, перечитал. Вразумительного ответа так и не получил, но представление об установке сложилось.

Но способ нашелся, чем с вами и поделюсь. Приступим.

На верхней картинке видно, что Framework установлен. Но чисто ради понтов к поисковикам Яндекса и Гугла: если вам не удается воспользоваться модемом от МТС на редакциях Windows после версии 1803, то можете почитать очень даже полезную статью о Windows 10: МТС модем. Подключение разорвано!

Ниже — там текст для более ранних версий. Ошибки — тоже ниже. Читайте.

Мы же сейчас поговорим о новых системах Windows. Эти подружки крайне упорно не хотят устанавливать и включать функции Framework 3.5, 3.0, 2.0.
Дело в том, что они требует фреймворк ИМЕННО из своего дистрибутива. Да еще и установщик.
Вообщем, распаковал я образ и извлек папку sources, а в ней не распакованная папка sxs. Всё лишнее выбросил за ненадобностью.
Теперь перемещаем папку sources с единственной папкой внутри sxs в корень любого диска(раздела), только не системного.
У меня вот так, на разделе D:

Теперь запускаем маленькую программку (архивчик качнете ниже), выбираем свой диск(раздел). Она сама строчкой ниже определит папки.
Жмем «Install»… Ну, чего проще -то ??
Программулька замечательная. Установки никакой не требует.Вот так она выглядит:

Короче: ближе к телу, как говорил Мопассан…))

Работоспособность проверена бесчисленное количество раз.

Итак.
1. Распакуйте архив в корень любого НЕ системного диска/раздела.
2. Запустите прилагаемую программу от имени администратора.
3. В первом окошке выберите из выпадающего списка диск/раздел, куда распаковали.
4. Во втором окошке должен появиться путь и справа зеленая надпись — (Found), т.е. найдено.

Чуть не забыл. При использовании нужной папки, сотрите цифры версии, т. е. «sources 1903» оставляем только «sources»

5. Жмем Install и ждем пару минут, в зависимости от скорости вашей машинки.
Ну и собственно — всё. ))

Папки sources для редакций Windows 10 + обновления оффлайн .NET Framework_1.1_2.0_3.0_3.5_4.0_4.8 + подробная инструкция и программа установки ниже.

Скачать напрямую с Яндекс.Диска

Программа, руководство и .NET Framework_1.1_2.0_3.0_3.5_4.0_4.8

Размер: 69.4 мБ

sources 1607, LTSB

Размер: 68.6 мБ

sources 1803, 1809, LTSC

Размер: 70.8 мБ

sources 1909, 1903

Размер: 70.7 мБ

sources 2004

Размер: 69.3 мБ

sources 8.1

Размер: 66.2 мБ

sources 20h3

Размер: 69.3 мБ

sources 21h3

Размер: 69.4 мБ

sources 22h3

Размер: 69.7 мБ
———————————————————————————————-

Ниже приводится тоже актуальная запись, но для систем вышедших ранее. А также установка Framework 3.5 для Windows 8.1

Для начала вам потребуется распакованный дистрибутив windows 8/8.1 или 10.
Скопируйте из него папку sources с вложенной в нее папкой sxs, в корень какого нибудь раздела на вашем диске. НЕ на диск С. Любой подойдет. Даже флешка. Кроме папки sxs, всё остальное выбросите в корзину. Оно не пригодится для нашей цели.

У меня эта скопированная папка на диске D. Соответственно путь до нее выглядит D:/sources/sxs

В папке sxs советуют распаковать архив microsoft-windows-netfx3-ondemand-package.cab
Я не распаковывал.

Теперь запустите командную строку от имени Администратора, скопируйте и введите команду ниже:

Dism /online /enable-feature /featurename:NetFx3 /All /Source:d:\sources/sxs /LimitAccess

Жмем ENTER и дожидаемся результата.

(на картинке ошибочно указан диск «С». Переустанавливать, право, лень:))

ОШИБКИ

Иногда возникает ошибка: «Не удается построить цепочку сертификатов для доверенного корневого центра сертификации. »
Либо — «Цепочка сертификатов обработана, но обработка прервана на корневом сертификате…»

Значит Вы не получаете автоматически обновления ;))
Я, например, намертво блокирую любые попытки обновления из Центра мелко-туды их-нах-мягких.
Что мне нужно для системы — скачиваю и устанавливаю автономно.

Так вот.
В случае появления таких ошибок — установите сертификат MicrosoftRootCertificateAuthority2011.cer

Сейчас напишу немного мутоты, в которой сам поначалу запутался, а в конце дам ссылку на свой собственный архив с инструкцией и всем — всем необходимым, где всё это уже проделано. Давно пользуюсь. Версия обновляется по мере выхода свежей.
Вы можете устранить ошибку буквально в 2 минуты.

Ну, поехали!
(Вообще надо сразу ставить этот сертификат, т.к. он и для 4.6; 4.7, 4.7.2, 4.8 … версий Framework.)

Нужно открыть мастер импорта сертификатов одним из описанных далее способом.

1. Установка через Internet Explorer:
Запустите iexplorer. В главном меню выберите Сервис / Свойства обозревателя.

2. Откройте «Свойства обозревателя» через меню Пуск / Панель управления.
Переключитесь на вкладку «Содержание».
Откроется окно «Сертификаты». Переключитесь на вкладку «Доверенные корневые центры сертификации».
Нажмите кнопку «Импорт».
Запустите файл сертификата как программу. Появится окно «Сертификат».
Нажмите кнопку «Установить сертификат».

3. Через консоль MS Windows.

Внимание! Данный вариант — ЕДИНСТВЕННЫЙ работоспособный для Windows 7!

1. Запустите консоль mmc, для этого выполните следующие действия: Войти в «Пуск / Выполнить», в строке «Найти программы и файлы» пропишите mmc, Разрешите внести изменения — кнопка Да.

2. Появится окно консоли. В главном меню выберите Консоль(Файл) / Добавить или удалить оснастку
Появится окно «Добавить или удалить оснастку».

3. В списке оснастки выберите «Сертификаты» и нажмите «Добавить».

4. В окне «Оснастка диспетчера сертификатов» оставьте значения по умолчанию и нажмите «Готово»
(Закройте окно «Добавить изолированную оснастку» (кнопка «Закрыть»)

5. В окне «(((Добавить или удалить оснастку)))» нажмите «ОК»

В дереве консоли появится запись «Сертификаты». Раскройте ее и найдите раздел «Доверенные корневые центры сертификации», «Сертификаты»

6. На строке «Сертификаты»(слева) нажмите правую кнопку мыши и в контекстном меню выберите Все задачи / Импорт

7. На шаге «Импортируемый файл» (Шаг может быть пропущен, в зависимости от варианта запуска мастера) с помощью кнопки «Обзор…» выберите корневой сертификат и нажмите «Далее >».

8. На шаге «Хранилище сертификатов» установите опцию «Поместить все сертификаты в следующее хранилище» и нажмите кнопку «Обзор».

9. В окне выбора хранилища установите флаг «Показать физические хранилища», раскройте «ветку» (+) «Доверенные корневые центры сертификации» и выберите место хранения сертификата:
«Реестр» — для пользования корневым сертификатом только текущим пользователем под данной операционной системой.
«Локальный компьютер» — для пользования корневым сертификатом всеми пользователями операционной системы.

10. После нажатия кнопок «Ок», «Далее» и «Готово» может появиться предупреждение о безопасности (зависит от внутренних настроек операционной системы) с вопросом «Установить данный сертификат?», нажмите «Да».

Появится сообщение — «Импорт успешно выполнен», корневой сертификат добавлен в доверенные корневые центры сертификации для вашей или для всех учетных записей.

Если все сделали пошагово правильно — ошибок не будет.
Единственное, может быть потребуется взять sources из другого дистрибутива.

Папка sources для Windows 8.1 + обновление Framewoek 3.5 от 09.10.2018 + подробная инструкция и программа установки ниже.

Скачать напрямую с Яндекс.Диска

Размер: 269МБ

На этом у меня все. Не получается? Пишите в комментариях.
————————————————————————————

У некоторых не получается включить функции Framework 3.5 средствами DISM.
Причины настолько разные , что все их описать невозможно.
Может быть, не в корень диска кинули, в пути присутствует кириллица (включая название компа и Админа)…
Ой… много нюансов…

Выкладываю весь собственный архив, которым пользуюсь не один год.
Читайте, смотрите, что вам подойдет в конкретном случае.

АРХИВ

Размер: 265 мБ
ВСЕМ ДОБРА!

Можете попутно, раз уж зашли, нажать на кнопочки — Вам 2 секунды, а мне очень приятно и полезно для сайта.
Спасибо!

А теперь…
А ТЕПЕРЬ ВАУ!!! Калейдоскоп! Подвигайте мышкой по картинке… ;))
В связи о полным отказом от flash-роликов — игрушки не воспроизводятся. Скоро будут другие…))
 

  

Как установить .NET Framework 3.5 на Windows 10

Наверняка многие слышали о библиотеках Microsoft .NET, которые часто являются основной различных приложений. Взаимодействие между софтом, использующим его, и самими библиотеками осуществляется посредством системных компонентов . NET Framework. Без них многие приложения просто не установятся.

Актуальными версиями .NET Framework считаются 4.6 и 4.7, которые включают в себя также старую редакцию 4.5. Они встроены в Windows 10, и никаких проблем с их установкой или использованием возникать не должно. По-другому дело обстоит с уже устаревшей версией 3.5. Она широко использовалась во времена Windows 7 и несовместима с .NET Framework 4.x. Так как по умолчанию редакция 3.5 не включена в состав Windows 10, многие старые программы просто не установятся.

Как скачать и установить .NET Framework 3.5 в Windows 10

Разработчики предусмотрели опцию установки старой версии .NET Framework в службе компонентов Windows 10. Для скачивания библиотеки понадобится интернет-соединение.

  1. Нажмите Win + R. Введите команду OptionalFeatures.exe и нажмите Enter.
  2. Поставьте галочку напротив пункта . NET Framework 3.5 (включает .NET 2.0 и 3.0) и нажмите ОК.
  3. Подтвердите скачивание необходимых файлов из Центра обновления.
  4. Дождитесь окончания загрузки и установки компонента.

Как скачать установщик .NET Framework 3.5 для Windows 10

Если по каким-то причинам вы не можете воспользоваться службой компонентов Windows, у вас есть возможность скачать и запустить онлайн-установщик .NET Framework 3.5.

  1. Пройдите по следующей ссылке. Нажмите кнопку Скачать.
  2. Запустите загруженный файл, согласитесь на поиск необходимых файлов в Центре обновления и дождитесь окончания операции.

Как установить .NET Framework 3.5 без интернета (офлайн)

Иногда при использовании веб-службы Центра обновления Windows возникают проблемы, и пользователи не могут установить .NET Framework 3.5 двумя способами, описанными выше. В таком случае вы можете использовать загрузочную флешку с образом Windows 10 для ручной установки компонента (без необходимости в интернет-соединении).

  1. Скачайте официальный образ Windows 10.
  2. Создайте загрузочную флешку с использованием этого файла.
  3. Вставьте накопитель в компьютер. Откройте Проводник и запомните букву, присвоенную флешке. Например, на скриншоте это — D.
  4. Нажмите Win + S. Введите в поисковую строку Командная строка.
  5. Кликните по результату правой клавишей мыши и выберите Запустить от имени администратора.
  6. Введите следующую команду и нажмите Enter (здесь X — буква, присвоенная флешке):
    Dism /online /enable-feature /featurename:NetFX3 /All /Source:X:\sources\sxs /LimitAccess
  7. Дождитесь окончания операции установки компонента.

Таким образом .NET Framework 3.5 можно установить и без использования интернет-подключения или служб Центра обновления Windows.

Ошибка Visual Studio 2010: «Project Target Framework не установлен» при открытии проекта .NET 4.0

Задай вопрос

спросил

Изменено
5 лет, 2 месяца назад

Просмотрено
33 тысячи раз

Я столкнулся с довольно неприятной проблемой с одной из моих машин для разработки, и я надеюсь, что кто-нибудь сможет мне помочь.

У меня есть большое решение Visual Studio 2010 VB, ориентированное на .NET Framework 4.0, которое открывается и работает только в многочисленных установках Visual Studio 2010, кроме одной. «Ошибка» (больше сообщение) при открытии решения говорит:

Целевая платформа проекта не установлена ​​

Проект VB нацелен на «. NETFramework, версия = v4.0»,
который не установлен на этой машине. Вы должны скачать это
framework, чтобы открыть и построить этот проект. Чтобы
продолжить, вы должны выбрать вариант ниже.

Вот скриншот с полным контекстом:

http://img507.imageshack.us/i/errorlc.jpg/

Пробовал:

  1. Восстановление (не помогло), удаление и переустановка Visual Studio (не исправлено)
  2. Восстановление (не помогло), удаление и повторная установка .NET Framework 4.0 (не помогло)

Повторная попытка выполнить шаг номер 1 после шага номер 2 (не помогло).

Временно сработало, когда я использовал средство удаления .NET Framework, чтобы удалить все следы .NET Framework 4.0 с компьютера (включая реестр), а затем снова установил .NET Framework 4.0. Однако ошибка вернулась.

Я не уверен, связано ли это с повреждением файла .NET Framework 4.0, с чем-то в Visual Studio или просто с тем, что Visual Studio не может найти .NET Framework 4. 0. (Я нашел несколько возможных «объяснений», но ничего, что могло бы решить эту проблему.

Машина работает под управлением Windows 7 (64-разрядная версия).

Буду рад любым идеям по устранению этой проблемы!

  • .net
  • visual -студия
  • визуальная студия-2010
  • рамки
  • цель

2

Я решил эту проблему для себя, загрузив соответствующий пакет для разработчиков. Я совершил ошибку, пытаясь загрузить версию Runtime, которая, по-видимому, не включает в себя необходимый вам подключаемый модуль Visual Basic.

Я использую .NET Framework 4.5.1, и это ссылка на страницу, с которой я скачал:

http://msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110% 29.aspx

1

обновить или переустановить рассматриваемую платформу. запустить настройку визуальной студии. нажмите восстановить настройки по умолчанию. найдет все установленные фреймворки и не изменит и не удалит плагины или лицензии.
Даже мои настройки сохранились.

У меня была та же проблема, и я попробовал обходной путь, указанный здесь.

Зашел в свойства и выбрал фреймворк 3.5 и ошибки ушли. У меня есть проблема: хотя проблема 4.0 установлена ​​на моем компьютере, Visual Studio не может ее найти, но я не использую какие-либо специальные функции 4.0, так что пока это работает. Если я выясню, почему фреймворк 4.0 не обнаруживается, я также обновлю этот пост, указав исправление для него.

Редактировать:

Я не знаю, ПОЧЕМУ возникла проблема, но после просмотра справки на этом форуме. Я использовал эту утилиту для полного удаления VS2010 и .NET Framework 4.0.

Затем я полностью переустановил И установил пакет обновления 1 для Visual Studio 2010, и все работает!

Надеюсь кому-нибудь поможет.

1

У меня была такая же проблема. У моего компьютера есть окна на небольшом SSD-накопителе, а также профили пользователей и обе папки Program Files на другом диске.
Я решил эту проблему, заметив, что даже я изменил записи реестра о расположении папок Program Files, установка FW по-прежнему помещала некоторые файлы в папку по умолчанию. Я скопировал их в нужное место, и, наконец, у меня снова FW 4.0 на целевых платформах 9.0003

Спасибо, Арис!

Мне было интересно, почему мой VS 2010 внезапно перестал распознавать .Net4.0, пока не наткнулся на ваш пост выше.

Я работал над скриптом vbs, который должен был ссылаться на системную переменную %PROGRAMFILES% , и меня раздражало, что независимо от того, какой из них использовался (64-битный или (x86)) я попадал в Program Files (x86 ) папка. Итак, я обнаружил, что запись реестра ProgramFilesDir и ProgramFilesDir (x86) под

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion
 

имеют одинаковое значение («Program Files (x86)»), поэтому интуитивно правильно измените значение, отличное от x86.
И это то, что испортило мой экземпляр VS 2010.
Откатил эту настройку, и теперь с VS все в порядке, хотя осталась проблема с vbs 😉

Надеюсь, это кому-нибудь поможет.

Я решил эту проблему, восстановив свою установку VS2010 с помощью исходного установщика.

Мне удалось решить проблему, заменив машину разработки на новую. Не совсем решение проблемы, но это сэкономило много времени на удаление/переустановку/восстановление снова и снова.

Об аналогичной проблеме сообщается в социальной сети MSDN. Неудачным решением было:

Я решил проблему самостоятельно, выполнив следующие действия:

а) поскольку моя проблема возникает в первый раз после обновления безопасности Windows для VS 2008, я выполнил восстановление системы, чтобы получить состояние до упомянутого обновления Win-Update

.

b) затем я удалил и переустановил VS 2010 (включая .NET Framework 4.0)

Я публикую это только потому, что столкнулся с той же ошибкой.

В вашем решении VS может быть проект (или несколько), который ссылается на что-то в полном профиле .NET 4.0, который вы, вероятно, имеете на своих машинах для разработки… за исключением, возможно, того, с которым у вас возникла проблема. Клиентский профиль .NET 4.0 определенно отличается и не поддерживает все, что вам может понадобиться.

Решения, требующие полной переустановки Visual Studio, работают, поскольку VS устанавливает полный профиль .NET, а не профиль клиента.

В другом месте я видел:
В VS 2010 Тег был изменен на , и мы больше не поддерживаем «Полный»; вот почему вы получаете ошибку. Пока мы не исправим это, вы можете просто удалить тег из файла проекта, и проект должен открыться правильно.

Если в файлах вашего проекта не указан TargetFrameworkProfile, то в MPF (по крайней мере) по умолчанию используется последняя версия. И может быть смущен тем, установлен ли он.

0

У меня была та же проблема, и мое решение было следующим:

  • Загрузите Multi-Targeting Pack для Microsoft .NET Framework 4.0.3 с https://www.microsoft.com/en-us/download/confirmation.aspx?id =29052
  • Установить

Проблема была решена немедленно (сообщение об ошибке исчезло).

2

Хорошо, что исторически мне помогало вручную удалить более новые версии .net, а затем установить Visual Studio.

В Windows 10 по умолчанию установлена ​​встроенная версия .net (я думаю), поэтому ее нельзя удалить (4.5? 4.7?), по крайней мере, я думаю, что это происходит, я, конечно, не могу удалить ее через «удалить «Я нажимаю на нее, и она просто остается в списке (то есть 4,5). Итак, мой старый ответ выше больше не работает.

Еще одна подсказка: когда вы устанавливаете Windows SDK 7.1, он говорит: «RTM .NET версии 4. .. эти компоненты не будут установлены».

Исправление состояло в том, чтобы удалить Windows SDK, а затем временно имитировать, что версия 4.7 не была установлена. Затем установите SDK. Теперь VS 2010 Express снова загружает мои проекты C++ (я предполагаю, что он успешно установил .net 4.0). Похоже, с этим работает либо автономный ISO, либо веб-версия.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Запуск приложений .

NET Core на платформе, отличной от скомпилированной версии?

Изменить это сообщение

Вот вопрос, который часто возникает:

У меня есть приложение, созданное и скомпилированное для .NET Core 2.1. Если я разверну приложение на компьютере, на котором установлена ​​только .NET Core 5.0, будет ли работать это приложение?

Краткий ответ на этот вопрос: Нет, не запустится . Или, по крайней мере, не в конфигурации запуска по умолчанию.

Для .NET Core требуется среда выполнения как минимум той же основной версии с версией среды выполнения как минимум равной или выше, чем у скомпилированного приложения. Кроме того, минорная версия приложения не может быть выше доступного времени выполнения.

Учитывая это, вот что вы получаете, когда пытаетесь запустить приложение .NET Core 2.1, когда среда выполнения 2. x не установлена, но когда доступны среды выполнения 3.x, 5.x и 6.x:

Не удается запустить из-за отсутствия среды выполнения .NET Core 2.1. Обратите внимание, что сообщение об ошибке очень полезно и показывает, что установлено и может работать, и где вы можете найти конкретную среду выполнения, необходимую для запуска приложения.

Тем не менее, вы можете запускать приложения с более низкой компиляцией младшая версия в среде выполнения той же основной версии, которая выше, чем эта младшая версия.

Здесь я запускаю приложение .NET Core 3.0, используя .NET Core 3.1:

, и это работает.

Совместимость среды выполнения .NET Core

Итак, что работает, а что нет?

Вот наиболее распространенные сценарии:

Сценарий Версия приложения Работает? Версия среды выполнения
Версии соответствуют Приложение . NET Core 5.0 Среда выполнения .NET Core 5.0
Накат основной версии Приложение .NET Core 3.0 ❌ ​​ Среда выполнения .NET Core 5.0
Второстепенная версия Прокат вперед Приложение .NET Core 3.0 Среда выполнения .NET Core 3.1
Откат дополнительной версии Приложение .NET Core 3.1 ❌ ​​ Среда выполнения .NET Core 3.0

Вкратце:

Работает

Вы можете запускать приложение в той же самой версии среды выполнения (основная.дополнительная), в которой оно, очевидно, скомпилировано.

Вы также можете запускать приложение, скомпилированное с более ранней версией, на более старшей минорной версии той же основной версии среды выполнения (т. е. скомпилированное для 3.0 и работающее на 3.1).

Нет

Вы не можете запускать приложение в основной версии, отличной от той, для которой оно было скомпилировано.

Любая целевая версия среды выполнения приложения, которая выше установленной версии среды выполнения (основная, дополнительная или исправление), не запускается.


Проще говоря: по умолчанию нет отката во время выполнения, а только вспомогательная версия во время выполнения по умолчанию.

Явное переопределение среды выполнения с помощью

dotnet --fxversion

Однако вы можете явно переопределить версию среды выполнения , указав версию среды выполнения либо в командной строке dotnet , либо в файле конфигурации среды выполнения.

Чтобы явно указать среду выполнения, вы можете запустить приложение с помощью команды dotnet и аргумента команды --fx-version , чтобы указать версию среды выполнения .NET, которая должна соответствовать установленной версии.

Опять же, здесь я запускаю скомпилированное консольное приложение 2.1, используя одну из установленных сред выполнения 5. 0:

 dotnet --fx-version "5.0.7" .\DotnetCoreVersionCompatibility.dll
 

Это работает и запускает приложение:

Явные переопределения с файлами .runtimeconfig.json

Вы можете добавить в свой проект файл runtimeconfig.template.json , который предоставляет переопределения политики времени выполнения. В этом файле вы можете указать конкретную версию, которую приложение должно использовать во время выполнения.

Вы также можете указать политику rollForward , указав младший или основной .

Вот что говорят об этом документы Microsoft:

Параметры конфигурации среды выполнения .NET Core

В двух словах можно указать версию и rollForwardPolicy . В этом первом примере выполняется накат для основной версии

 {
  "параметры времени выполнения": {
    "tfm": "netcoreapp3.0",
    "rollForward": "незначительный",
    "каркасы": [
      {
        "имя": "Microsoft. NETCore.App",
        "версия": "3.0.1"
      }
    ]
  }
}
 

Это означает, что это приложение, предназначенное для 3.0.1 , также может работать на .NET Core 3.1, но не будет работать на .NET 5.0.

Чтобы использовать основную версию rollForward:

 {
  "параметры времени выполнения": {
    "tfm": "netcoreapp3.0",
    "каркасы": [
      {
        "имя": "Microsoft.NETCore.App",
        "версия": "3.0.1",
        "rollForward": "основной"
      }
    ]
  }
}
 

Здесь приложение 3.0.1 может работать на 5.0.

Хотя вы можете выполнить повтор транзакций, имейте в виду, что это может вызвать проблемы, поскольку основные версии могут иметь критические изменения, включая изменения во время выполнения, которые могут быть несовместимы с предыдущими версиями. Это означает, что ваш код может нормально компилироваться, но не сможет привязаться к подписям членов во время выполнения, если API были изменены. Используйте это очень осторожно, если вообще используете, и обязательно тщательно протестируйте. Это будет нормально работать в тестовом консольном приложении hello world, но, скорее всего, в нем будет много маленьких девяток.0362 артефакта в полном приложении.

Как насчет SDK?

Еще одна важная вещь, о которой следует помнить, это то, что SDK — инструменты, которые вы используете для создания и компиляции приложений, — полностью отделены от среды выполнения, даже несмотря на то, что SDK устанавливают среду выполнения вместе с ними. Таким образом, когда вы устанавливаете пакет SDK для .NET Core 5.0, вы одновременно устанавливаете несколько сред выполнения. Например, в Windows SDK устанавливает: .NET App Runtime, ASP.NET Core и Windows Desktop Runtime.

Однако, когда вы создаете свое приложение, вы можете собирать его для любого из предыдущих выпусков из текущих SDK, а не только для текущей установленной версии SDK.

Это означает, что я могу создать приложение .NET Core 2.0, даже если у меня установлен только пакет SDK для . NET Core 5.0.

Как это может работать? Да, я тоже так думал — в конце концов, компилятору нужно знать, что доступно для компиляции во время выполнения, верно?

Кэтлин Доллард помогла мне объяснить:

SDK загрузит соответствующие справочные пакеты , которые являются заполнителями, сборками метаданных, а не полными средами выполнения, если они еще не представлены или соответствующая среда выполнения доступна локально. Затем он скомпилирует ваше приложение по этим эталонным сборкам, чтобы заставить его собираться, но не запускаться.

Вы можете видеть это на моем первом снимке экрана: я создал приложение с помощью пакета SDK для .NET Core 5.0, используя dotnet build , который работал нормально. Но когда я потом пытаюсь запустить либо с dotnet run или dotnet .dll происходит сбой с отсутствующей ошибкой времени выполнения, показанной на снимке экрана, поскольку целевая платформа .NET Core 2.1 недоступна.

Использование загруженных справочных пакетов разумно и очень полезно, поскольку это означает, что вам действительно нужно установить только один пакет SDK для .NET Core на локальном компьютере для сборки любых (2.x и более поздних) версий .NET Core. .

Вот если бы каждая версия Visual Studio не настаивала на установке своей собственной фиксированной версии SDK.

Ад распространения во время выполнения?

Теперь эти вопросы постоянно возникают в отношении распространения приложений и в основном для клиентских приложений, а не для серверных приложений. Серверами легко управлять, но приложения, которые отправляются клиентам для установки, — это совсем другое дело.

Если вы уже давно являетесь разработчиком .NET, вы, возможно, помните, что имели дело с установками среды выполнения .NET Framework и устанавливали среды выполнения из ранних версий .NET, предшествующих версии .NET 4.0. В то время для запуска приложений необходимо было установить более высокую версию среды выполнения. Но — Full Framework фреймворк обратно совместим, поэтому он вполне способен запускать приложение .NET 2.0 в среде выполнения 4.0.

Не так со средами выполнения .NET Core, которые тесно связаны с основной версией, что означает, что вы не можете запускать приложения, скомпилированные в более старой версии среды выполнения, в более высокой (или более низкой) версии среды выполнения.

Это означает, что каждая основная версия среды выполнения должна быть установлена ​​рядом с другими. В результате вы почти наверняка столкнетесь с огромным беспорядком сред выполнения с небольшими различиями в версиях патчей, установленных на вашей машине. Если вы посмотрите на мой второй снимок экрана, вы увидите большое пятно времени выполнения — это мои «очистил» папку среды выполнения, которую я стараюсь обрезать только до последних версий. Перед очисткой у меня было установлено 3 страницы среды выполнения и SDK — в основном из Visual Studio или других установок инструментов разработчика.

Хорошей новостью является то, что параллельные установки не очень велики и в основном представляют собой установки из одной папки без кучи инфраструктуры, разбросанной по всей машине. И их можно уничтожить, просто удалив папки среды выполнения, но будьте осторожны с этим, так как это может привести к поломке приложений, которые полагаются на определенную версию. Я склонен очищать свои среды выполнения, чтобы оставить только самую высокую версию, и это, кажется, сохраняет относительный разум.

Тем не менее, это определенно отстой, что вы в конечном итоге с кучей сред выполнения, установленных на ваших машинах, без четкого представления о том, какие среды выполнения все еще используются другими приложениями, а какие больше не нужны.

Автономная среда выполнения

Если доступность среды выполнения является серьезной проблемой для вашего приложения, всегда есть возможность доставки среды выполнения как части приложения в автономном приложении. Здорово, что этот вариант существует, и он отлично работает.