Перенос консольного приложения c .net framework 4.7.2 на net core 3.1

Как я могу добавить .NET framework 5.0 в Visual Studio Professional 2019?

Но я хотел бы знать, добавить ли этот фреймворк в проект, созданный на Visual Studio 2019 16.8.0.

Я запустил установщик VS и искал новую структуру, но не могу ее найти

Я уже открыл: Проект -> Свойства -> Целевая платформа.

Но самый последний фреймворк, который у меня есть, — это .Net framework 4.8.

Как я могу добавить новую платформу в целевые платформы в Visual Studio 2019?

Обновить:

У меня сейчас конфликт, и я хотел бы знать, в чем разница между .NET framework SDK и .NET framework Developer pack, в этом я ошибаюсь.

Как упоминалось в упомянутой ссылке, в списке пакетов разработчика нет .NET framework 5.0.

Кто-нибудь может мне это объяснить?

Загрузите и установите пакет SDK для Visual Studio 2019 с сайта выпусков .NET Core .

.NET 5.0 является продолжением разработки .NET Core и больше не следует старому (.NET 4 и старше) целевому пакету. Вместо этого .NET 5 устанавливается как SDK в структуру каталогов .NET Core framework и sdk. Для людей, которые какое-то время занимались .NET Core, это кажется естественным, но, начиная с .NET 4, это ново.

Создайте новый тип проекта .NET Core и установите для версии .NET значение .NET 5.0 :

Unfortunately, there is no magic wizard to upgrade a .NET 4 project over to .NET 5. The step-by-step guidance can be found here:

Many ASP.NET folks have gone through these steps to move from .NET 4 to .NET Core in the past. There are many blog posts on the issues they bumped into and how they solved that. The process is very similar and there are some tools now to help you along the way.

The main steps are the same for every .NET 4 project:

  • Change your packages.config to <packageReference> format.
  • Change your project file to the new SDK project format.
  • Run the API Compatibility analyzers. This will tell you where to expect breaking changes.
  • Switch the target framework to .NET 5 in the project file
  • Update/change/add required nuget packages to the versions that support .NET Core/.NET 5.
  • Fix any build issues.
  • Create a new .NET 5 project of the desired target type.
  • Add the required project configurations etc.
  • Add the NuGet Packages you’re going to need.
  • Copy the sources over from your .NET 4 project. Or copy the project file into the folder where your existing project resides. It should automatically import all source files.
  • Fix build issues

Возможно, не будет пакет NuGet из 3 — я компонента партии , которые вы используете, которые совместимы с .NET 5. В этом случае вам нужно либо ждать один , чтобы быть освобождены или найти альтернативу. Конечно, в случае проектов с открытым исходным кодом вы можете помочь им, перенеся для них пакет и отправив запрос на перенос.

Приведенное выше руководство по миграции предлагает несколько подходов для достижения каждого шага.

Эта статья взята из Интернета, укажите источник при перепечатке.

.NET Everywhere

The open specifications of the .NET fundamental components were the first step towards the quick spread of the framework. Microsoft on one side and other independent developers on the other side brought the .NET Framework to different platforms.

When the .NET Framework was born, Microsoft also released the .NET Compact Framework. It was a reduced version of the framework designed to run on devices with limited computing capacity, such as PDAs, mobile phones, set-top boxes, etc.
In 2007, the .NET Micro Framework was launched: a more efficient version of the .NET Compact Framework that could also run directly on the hardware.

The same year, Silverlight brought .NET to the browser, providing developers with a framework for building rich Internet applications similar to Adobe Flash.

In 2009, the project started. It was the first attempt to port the Mono framework (that is, the Linux implementation of the .NET Framework) to iOS and Android. In a few years, the MonoTouch project became the foundation for Xamarin, the framework for building Android and iOS apps with C# (2013).

So, as early as 2013, .NET allowed you to build applications for Windows and Linux machines, for embedded devices, for the browser, and for iOS and Android devices.

You may think that it was amazing! However, the proliferation of different environments led to a fragmentation of the framework itself. That wasn’t much of a problem for those who were developing applications. Applications are usually platform-specific. This fragmentation was a big problem for library developers. In fact, a .NET assembly could theoretically be loaded in any .NET runtime. Unfortunately, it could break at any point if it calls an API that wasn’t supported by the platform it is running on.

The cross-platform dream had not yet come true.

А зачем что-то портировать?

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

Что же подталкивает разработчиков переносить свои наработки в новую среду, вместо того, чтобы написать там новый «чистый» код с нуля?

Скорость разработки

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

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

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

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

Чем больше готовых агрегатов вы сможете использовать в своём проекте, тем быстрее он будет реализован.

Зрелость технологии

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

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

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

Контейнеры широко применяются при реализации концепции микросервисов. Если ваши приложения, которые вы хотите использовать в режиме микросервисов, были изначально разработаны в Windows на основе .NET, у вас может возникнуть мысль упаковать их в контейнеры и запускать в Linux.

Опыт разработчиков

Есть ещё один, возможно, неожиданный фактор, влияющий на целесообразность портирования приложений в другую операционную систему. — Это накопленный опыт разработчиков.

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

Достаточно очевидно, что при наличии необходимых средств портирование будет намного быстрее и экономические эффективнее.

The .NET Framework Overview

This is a runtime environment for building Windows apps and web services. Windows Forms, WPF (Windows Presentation Foundation) and UWP (Universal Windows Platform) create Windows applications, and ASP.NET MVC is used to build web apps.

The framework includes two main components:

  1. The common language runtime (CLR) — the engine for running apps and providing memory management.
  2. The extensive class library — a set of ready-made tested reusable types of code for all development stages that any developer can use.

This technology provides the following services:

  • Language interoperability. Routine programs may be written in one language and then be compiled and become accessible to other languages.
  • Version compatibility. A later version of the framework can support apps developed in previous versions without modification (with rare exceptions).
  • Parallel execution. Multiple apps written in different languages can coexist and run on the Framework. Thus, version conflicts are eliminated.

Установка

Устанавливать среду выполнения вручную нужно только в тех случаях, когда версия на вашем ПК устарела и не позволяет запускать нужные пользователю программы. Обновляется автоматически, с помощью обновлений Windows, но вручную вы можете установить версии 4.x в Windows 7.

Скачайте .NET Framework с сайта Майкрософт.

Какие версии .NET Framework применяют в 2019 году

На 14 декабря 2019 года для загрузки предлагаются следующие версии:

  • 4.8
  • 4.7.2
  • 4.7.1
  • 4.7
  • 4.6.2
  • 4.6.1
  • 4.6
  • 4.5.2
  • 4.5.1
  • 4.5
  • 4.0
  • 3.5 SP1

Майкрософт рекомендует использовать самую свежую версию платформы.

Пользователям, не занимающимся созданием ПО, понадобится среда выполнения (Runtime). Инструментарий разработчика (Developer Pack) необходим программистам.

Прокрутите страницу. Выберите язык и перейдите по соответствующей ссылке. Скачивание стартует автоматически.

.NET Framework 3.5 в Windows 10

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

Скачайте 3.5 SP1. Запустите загруженный исполняемый файл с расширением EXE. Чтобы началась установка, пользователю придется позволить ПО вносить изменения на компьютере.

Необходимо дополнительно загрузить и поставить в систему .NET 3.5 (в комплекте: .NET 2.0 и 3.0).

На экране отображается прогресс выполнения загрузки, время которой зависит от скорости интернет-соединения.

Следующий этап — установка компонентов операционной системы осуществляется автоматически. Не требует вмешательства пользователя.

Для завершения установки нужно перезагрузить компьютер. Нажмите соответствующую кнопку (выделена на иллюстрации).

Не выключайте компьютер во время работы с обновлениями. Прогресс выполнения задачи динамически отображается на экране (в процентах).

Чтобы включить поддержку версии 3.5 в «десятке»:

  • Нажмите кнопку со значком-лупой на Панели задач
  • В строке напечатайте: «Включение или отключение компонентов Windows»
  • Щелкните по выведенному в качестве результата поиска параметру Панели управления

Щелчком мыши включите компонент, если его поддержка отключена. Отключено: белый квадрат слева от названия пуст. Включено: в нем располагается черный квадратик.

Обратите внимание, что поддержка версии 3.5, необходимой для совместимости со старым софтом, является дополнением к версии 4.x. Нажмите «OK»

Нажмите «OK».

Архитектура .NET [ править | править код ]

Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). В терминах .NET получается сборка, англ. assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Архитектура .NET Framework описана и опубликована в спецификации Common Language Infrastructure (CLI), разработанной Microsoft и утверждённой ISO и ECMA. В CLI описаны типы данных .NET, формат метаданных о структуре программы, система исполнения байт-кода и многое другое.

Объектные классы .NET, доступные для всех поддерживаемых языков программирования, содержатся в библиотеке Framework Class Library (FCL). В FCL входят классы Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation и другие. Ядро FCL называется Base Class Library (BCL).

Критика

Реализация платформы .NET Framework вызывала и вызывает множество нареканий.

  • Одним из главных объектов критики является менее рациональное использование ресурсов системы по сравнению с другими технологиями. Так, например, несколько приложений, выполняющихся в управляемой среде, стремятся захватить больше ресурсов, чем приложения того же типа, но обладающие более прямым доступом к ресурсам компьютера.
  • Недовольство разработчиков вызывает тот факт, что управляемый CIL-байткод, не подвергшийся обфускации, легко может быть декомпилирован в сравнении с естественным кодом, что может привести к потере коммерческой тайны или дать возможность обхода механизмов контроля соблюдения лицензионных соглашений.
  • С технической точки зрения платформа также подвергалась критике из-за отсутствия поддержки вызовов |Streaming SIMD Extensions (SSE) в управляемом коде. В Mono решили эту проблему, добавив поддержку SIMD Extensions версии 2.2 в пространство имён . В состав .NET Framework 4.6 входит новый JIT-компилятор RyuJIT, поддерживающий SIMD через пространство имён .
  • Ещё одним поводом для критики является поддержка стандартов, фактически ограничивающих кросс-платформенную реализацию .NET Framework, в результате чего полноценная реализация платформы присутствует лишь для Windows. Частично подобная труднопереносимость компенсируется разработкой нескольких версий платформы для мобильных устройств, а также урезанными версиями .NET Framework для других операционных систем. Однако, несмотря на близость стандартов, принятых при разработке этих версий, конечные реализации полной совместимостью не обладают.
  • Новые версии платформы (3.5 и далее) вызвали новую волну недовольства тем, что они не предустанавливаются в версии Windows, предшествовавшие выходу Windows 7, что вынуждает пользователей тратить значительное время на их установку.

Mono on the Stage

One interesting thing is that Microsoft published the specifications of the Common Language Infrastructure (CLI), that is, the .NET Framework runtime, and the C# language. Even better, they set them as open standards: ECMA-335 and ECMA-334. So pretty much anyone could implement the .NET runtime and the C# programming language.

In 2007, this paved the way for a project to port .NET to Linux: the Mono Project. Other attempts to port .NET on Linux were made: DotGNU and CrossNet, among others. However, only the Mono Project attracted significant interest and generated a production-ready framework.

However, not everything in the .NET Framework could be ported to Mono due to some strict dependencies on Windows. In addition, the state of Mono development was usually not so aligned with the current state of the .NET Framework. This actually created some friction with the real portability of .NET applications to Linux.

Можно ли отключать?

В принципе, как я понимаю — служба не основная. Она вроде как нужна именно для ускорения работы некоторых программ. Во-вторых отключение — действие, которое можно всегда исправить.

Поэтому не вижу причин чтобы не попробовать отключить

Внимание! На всякий случай перед отключением можно создать точку восстановления:

  1. Зажимаете Win + R, пишите команду sysdm.cpl, далее нажимаете ОК.
  2. Появится окошко, активируйте вкладку Защита системы.
  3. Выбираете системный диск. Нажимаете Создать. Если кнопка создать неактивна — нажимаете настроить и включаете защиту системы. Нажали создать > пишите название, советую назвать например До отключения NGEN.
  4. После создания точки уже можно службу отключать, а также при необходимости провести еще некоторые эксперименты, в случае проблем — при помощи точки вернетесь в прошлое))

Теоретически если процесс mscorsvw.exe грузит ПК — то отключение службы тоже может помочь..

Нашел полезную инфу:

Что это значит? Что после отключения некоторые приложения, написанные на платформе .NET — могут работать медленнее. Ничего критически опасного здесь нет, поэтому можно и обойтись без службы, учитывая что она способна создавать тормоза..

.NET Framework and .NET Core vs .NET Standard

Because .NET Framework and .NET Core are .NET implementations, therefore, we can compare them together against the .NET Standard.

.NET Framework and .NET Core

  1. The .NET Framework and .NET Core are implementations of .NET
  2. Both frameworks have runtime which manages the execution of applications
  3. The base class library is also a part of both frameworks
  4. We can create different types of projects in either framework

.NET Standard

  1. The .NET Standard is a specification and not a .NET implementation
  2. It specifies a set of APIs that all the .NET implementations have to implement
  3. We can create only class library type projects with it

.NET 5.0 — The Next Step on the Microsoft Roadmap

.NET 5 (no “core”, no “framework”) takes the best from .NET Framework, .NET Core, and Xamarin Development models to create an all-in-one framework. It will be simpler to use and introduces a broad spectrum of capabilities to the web development service domain. Therefore, one can say that there would be no .NET Framework vs .NET Core battle in the coming times as the gap between the two will be bridged.

Is .NET Core Dead?

Following 3.1, .NET 5 is the next major release of .NET Core, can be called as .NET Core 5. Microsoft chose to name the new release to be .NET 5 and not .NET Core 4.0 for the following two reasons:

  • To avoid confusions with .NET Framework 4.x
  • The word ‘Core’ is dropped to put emphasis on the point that this is the main implementation of .NET going forward.

Moreover, .NET 5 does not replace the .NET Framework, and .NET 4.X is still supported. Considering these points, it can be inferred that .NET Core or .NET Framework is not dead at all, instead .NET 5 is an extension of the .NET 3x series.

Prefer .NET 5 in the following cases:

  • You have cross-platform needs.
  • You’re targeting microservices architecture.
  • You’re using Docker containers.
  • You need high-performance and scalable systems.
  • You need side-by-side .NET versions per application.

Как узнать, какая версия NET Framework установлена

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

В связи с этим у пользователя может возникнуть необходимость узнать, какой NET Framework установлен в его Windows 7/10. Сделать это нетрудно – существует несколько способов выяснить, какая версия компонента имеется в системе.

С помощью Проводника и командной строки

Все пакеты NET Framework устанавливаются в каталоги C:/Windows/Microsoft.NET/Framework и /Framework64 (в 64-разрядных ОС). Каждой версии соответствует отдельная директория, название которой начинается на V (версия), например, v3.0, v3.5 и так далее. Соответственно, определить редакцию компонента не составит труда, если перейти в Проводнике по указанному адресу и посмотреть названия папок.

Как вариант, содержимое каталогов можно вывести в командной строке, выполнив команду dir %WINDIR%/Microsoft.Net/Framework/v* /O:-N /B. По итогам запроса в консоли будут показаны все установленные версии фреймворка за исключением версии 4.5, находящейся в папке v4.0.ХХХХ.

Через редактор реестра

Еще одна методика предполагает использование реестра. Запустив командой regedit редактор реестра, разверните в левой колонке ветку HKLM/SOFTWARE/Microsoft/NET Framework Setup/NDP. В последнем подразделе вы увидите папки, имена которых будут соответствовать имеющимся в Windows версиям NET Framework.

Чтобы определить, установлена ли в системе версия NET Framework 4.5 и выше, зайдите в расположение v4/Full и обратите внимание на параметры Install и Version. Значение 1 для первого параметра будет означать, что компонент установлен и активен, значение второго параметра содержит полный номер версии компонента

Это же касается и других редакций фреймворка. Отсутствие подкаталога Full укажет на то, что компонент NET Framework 4.5 или более поздней версии не установлен.

С помощью сторонних утилит

Тем, кто не желает утруждать себя копанием в реестре, рекомендуем воспользоваться сторонними инструментами. Скачайте с сайта разработчика www.asoft.be/prod_netver.html утилиту «ASoft .NET Version Detector» и запустите. Утилита выведет список установленных версий фреймворка в нижней части окна в поле с голубым фоном. Также тулза покажет обновления компонента.

In the Beginning Was the .NET Framework

In 2002, Microsoft promised one framework to build applications with any programming language: C# (born for that occasion), Visual Basic, and many other languages. The framework granted a common API set, language independence, interoperability with the underlying operating system and other non-.NET applications, portability (at least in perspective, at the time), and many interesting features.

Although the long-term idea was to make .NET a cross-platform framework, the .NET Framework only ran on Windows.

Don’t get me wrong. Even if I’m speaking in the past tense, the .NET Framework is still alive and operative. Its current version is 4.8, and it is the last version of the framework, as you will learn later. But a huge amount of code runs on it, so you cannot consider it a dead framework yet.

Несколько слов о .NET

Одна из существенных причин головной боли программистов — непредсказуемость условий, в которых будут запускаться написанные ими приложения. — Разная конфигурация аппаратной части, разные версии операционных систем, разные наборы библиотек, разные устройства, разные драйверы, …

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

Мощной и довольно успешной попыткой унификации программной среды в операционной системе Windows является платформа .NET («дот нет»), разработанная компанией Microsoft в начале 2000-х годов.

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

В рамках статьи мы не будем углубляться в технические детали этой прослойки. Желающие могут обратиться к её технической документации.

Очень упрощённо устройство .NET можно проиллюстрировать следующим рисунком.

Открытость

Как уже было сказано, платформа .NET является разработкой и собственностью компании Microsoft, но была и остаётся бесплатной в использовании.

В 2014 году для дальнейшей популяризации этой платформы была учреждена независимая организация: .NET Foundation. Программный код платформы был размещён в публичном репозитории GitHub и теперь распространяется как продукт с открытым исходным кодом.

Кроссплатформенность

Плохо ли, хорошо ли, но в компьютерном мире существует много разных операционных систем. Сегодня на потребительском рынке наиболее распространены три: Windows, macOS и Linux (с вариациями).

Разработчик удачного, востребованного пользователями приложения заинтересован в его распространении в разных операционных системах. Однако в большинстве случаев просто так запустить приложение, разработанное для другой операционной системы, невозможно — требуется его «портировать».

В каких-то ситуациях можно просто перекомпилировать исходный текст программы для новой операционной системы. Но в большинстве случаев такой трюк не проходит, и требуется переписывать программу целиком или какие-то её части. Именно так пришлось действовать компании Microsoft, когда в середине 90-х она захотела сделать свой Office доступным в MacOS.

Но адаптации исходного кода приложения можно избежать, если между ним и операционной системой будет находиться «стандартизирующая» прослойка. Например, … .NET. Тогда приложение, разработанное в одной операционной системе, можно будет без проблем запускать в другой. То есть вместо портирования отдельных приложений, можно портировать саму программную прослойку.

Так Microsoft и поступила. Правда, портировала она не текущую версию платформы .NET, существующую в ОС Windows, а некую производную от неё, которую назвала .NET Core.

В значительной степени её функциональность совпадает с функциональностью исходной .NET, но одновременно — в чём-то шире, а в чём-то уже. В целом, можно считать, что .NET и .NET Core совместимы друг с другом.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
3D-тест
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: