В следующей статье мы рассмотрим ядро .NET. Это бесплатный кроссплатформенный фреймворк с открытым исходным кодом, разработанный Microsoft для создания настольных приложений, мобильных приложений, веб-приложений, игровых приложений и т. д.
Если вы разработчик .NET, работающий на платформе Windows, ядро .NET поможет вам легко настроить среду разработкив любой операционной системе Gnu / Linux и Unix. В следующих строках мы увидим, как установить Microsoft .NET Core SDK в Ubuntu 18.04 и как написать первое приложение с помощью донета.
- 1 Установите Microsoft .NET Core SDK в Ubuntu 18.04
- 2 Создание вашего первого приложения с помощью dotnet
- 3 Редактор кода Microsoft Visual Studio
Установите Microsoft .NET Core SDK в Ubuntu 18.04
Ядро .NET совместимо с GNU / Linux, Mac OS и Windows. Его можно установить в самых популярных операционных системах GNU / Linux, включая: Debian, Fedora, CentOS, Oracle Linux, RHEL, SUSE и Ubuntu.
Visual Studio 2022 не может найти платформу .NET. Что делать?
Для начала мы собираемся открыть терминал (Ctrl + Alt + T) и ввести следующие команды:
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
также нам нужно будет включить репозиторий «Вселенная», если он еще не включен. Это можно сделать, набрав в терминале:
sudo add-apt-repository universe
Теперь вы можете установить .NET core SDK используя команды:
sudo apt install apt-transport-https
sudo apt update sudo apt install dotnet-sdk-2.2
После установки мы можем проверьте установленную версию печатать:
dotnet —version
Создание вашего первого приложения с помощью dotnet
Как видите, .NET core SDK был правильно установлен в нашей Ubuntu. Пришло время создать первое приложение с использованием dotnet.
В качестве примера я создам новое приложение под названием ‘ubunlogApp’. Для этого вам просто нужно открыть терминал (Ctrl + Alt + T) и запустить:
dotnet new console -o ubunlogApp
Как вы можете видеть на скриншоте выше, dotnet создал новое приложение консольного типа. Параметр -o создает каталог с именем ‘ubunlogApp’где хранятся данные приложения со всеми необходимыми файлами.
Что такое .NET
Если мы перейдем в каталог ubunlogApp, мы найдем что-то вроде следующего:
Есть два файла с именами ubunlogApp.csproj и Program.cs и каталог с именем obj. По умолчанию, файл Program.cs будет содержать код для запуска программы ‘Привет мир’на консоли. Мы можем взглянуть на программный код, набрав:
cat Program.cs
Если мы хотим запустите приложение, которое мы только что создали, вам просто нужно написать следующую команду:
dotnet run
«Привет, мирТипичный вариант — это так просто. Сейчас же, любой может написать свой код в файле Program.cs и запустите его таким же образом.
Еще мы можем создать новый каталог, например, мой код, используя команды:
mkdir ~/.micodigo cd ~/.micodigo/
… И оттуда мы можем сделать этот каталог наша новая среда разработки выполнив следующую команду:
dotnet new console
Приведенная выше команда создаст два файла с именами mycode.csproj и Program.cs, а также каталог с именем obj. Теперь мы можем открыть файл Program.cs в редакторе и удалить или изменить существующий код hello world с помощью нашего собственного кода.
После того, как код, который мы хотим, написан, нам просто нужно сохранить и закрыть файл Program.cs. После этого мы можем запустить приложение:
dotnet run
Он может обратитесь в справку dotnet печатать:
dotnet —help
Редактор кода Microsoft Visual Studio
Для написания кода у каждого есть свой любимый редактор. Но надо сказать, что У Microsoft есть собственный редактор под названием ‘Код Microsoft Visual Studio’с поддержкой .NET. Это кроссплатформенный редактор кода, поэтому его можно использовать как в Windows, GNU / Linux, так и в Mac OS X.
Это легкий и мощный редактор исходного кода с открытым исходным кодом. Он поставляется со встроенной поддержкой JavaScript, TypeScript и Node.js и имеет богатую экосистему расширений для других языков, таких как C ++, C, Python, PHP или Go.
Если вы заинтересованы в использовании этого редактора кода для разработки своих приложений с .NET, вы можете обратиться к статье, написанной вашим коллегой, в которой он указал как установить Visual Studio Code в Ubuntu.
En la Документация Microsoft мы сможем найти несколько базовых руководств по использованию инструментов .NET Core и .NET Core SDK с помощью редактора кода Visual Studio.
к узнать больше о dotnet, вы можете проконсультироваться официальная страница проекта.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Убунлог » Ubuntu » Dotnet, работайте с .NET на Ubuntu 18.04 и создайте свое первое приложение
Источник: ubunlog.com
1.1. Создание первого проекта
В случае с созданием проекта на данный момент есть небольшая разница, потому что в Windows нужно выбрать меню File -> New -> Project, а в macOS версии нужно выбрать меню File -> New Solution. Казалось бы, есть большая разница, но в реальности, когда в Windows мы выбирает создание нового проекта, будет создан не только проект (Project), но и решение (Solution)
Та же песня и в macOS – хотя мы выбрали создание решения, будет так же создан и проект.
Проект – это код одного файла – библиотеки, исполняемого файла или сайта. Решение – это как папка для нескольких проектов. В одно решение может входить сразу несколько проектов – несколько библиотек и исполняемый файл или web сайт.
Итак, после выбора меню создания проекта/решения, вы увидите это окно в macOS. Опять же, в Windows оно будет отличаться, но идея будет та же:
Слева можно выбирать категории проектов, мы в этой книге будем говорить про .NET Core приложения. Выбрав категорию, в центральной части окна можно выбрать шаблон. Я выбрал ASP .NET Core Web App.
Если нажать далее, то в macOS версии вторым шагом мастера будет выбор версии .NET Core. В Windows вторым шагом идет выбор более конкретного шаблона. Для Web их есть несколько – пустой, MVC, Angular и так далее. Выберите пустой, чтобы не было ничего сгенерировано для нас, а только пустой проект. Сверху окна будет выпадающий список, в котором можно будет выбрать версию .NET.
В мак версии VS после выбора ASP .NET Core Web App весь второй шаг мастера посвязен выбору версии. Третий шаг – это настройки:
Здесь у нас имя проекта и имя решения. В случае с Web очень часто выбирают одно и то же – название сайта. Нужно так же указать путь, где будут сгенерированы файлы и если вы знаете, что такое git, то можно включить и его.
git – это система управления исходными кодами. Хотя у Microsoft есть своя система TFS, они везде стали поддерживать бесплатный и открытый git. О нем вы можете почитать в моей статье https://www.flenov.info/story/show/git—sovremennoe-upravlenie-kodom
В правой части окна можно увидеть, какие файлы будут созданы. Давайте нажмем кнопку Create и посмотрим на результат.
У меня вдоль левой кромки окна распложена панель Solution Explorer – это где вы будете управлять файлами. В Windows это окно по умолчанию растянуто вдоль правой кромки.
В корне нашего дерева находиться имя решения — MyWebSite. Сразу под ним идет имя проекта MyWebSite. Самое интересное находится в проекте. У него несколько подразделов:
Dependencies — зависимости. Здесь будут библиотеки, которые необходимы для работы приложения. Visual Studio и .NET Core по умолчанию используют менеджер пакетов NuGet. Сразу после создания проекта этот менеджер пакетов полезет в сеть и скачает все необходимое. У меня пустой проект, поэтому ничего пока особого нет, а по умолчанию есть только одна зависимость Microsoft.AspNetCore.App 2.1.1
Итак, у меня остался конструктор, который получает в качестве параметра IServiceCollection, через который мы можем работать с конфигурацией. Если вы знаете паттерн Dependency Injection – это как раз он. В .NET Core используют паттерны очень даже хорошо, особенно в MS полюбили Инъекцию, которая поддерживается из коробки и используется оттуда же.
Метод ConfigureServices я оставил, но не использую пока, о нем мы поговорим позже.
Единственное, что я реально использую – это метод Configure в котором и происходит вся логика сайта. Сначала проверяем, если мы работаем в режиме разработки, то любые ошибки будут показываться в подробном виде.
if (env.IsDevelopment())
Ну и запуск метода, который будет выполняться в ответ на любой входящий запрос:
app.UseEndpoints(endpoints => < endpoints.MapGet(«/», async context =>< await context.Response.WriteAsync(«Hello World!»); >); >);
До пятой пятой версии этот код выглядел так:
app.Run(async (context) => < await context.Response.WriteAsync(«Hello from .NET Core»); >);
Так что если вы увидите где-то этот код, то не пугайтесь, это просто старый подход. Раньше мы запускали приложение app.Run, а сейчас настраиваем точки входа для приложения app.UseEndpoints. И в принципе это имеет смысл, ведь Web сайт — это не просто приложение, это множество различных URL, которые выполняют различные действия. И вот каждый URL может быть отдельной точкой входа и с помощью UseEndpoints мы можем сразу же настраивать все в более удобном виде.
Этот код говорит, что нужно записать в результат Response строку. Контекст context – это специальная переменная, типа HttpContext, через которую мы можем получить информацию о запросе, который направил пользователь и через свойство Response мы можем записать ответ, который будет отправлен пользователю.
Теперь если запустить приложение, то оно будет писать на с странице указаную строку. Какой бы запрос вы не отправили серверу, он будет всегда отвечать одно и то же.
Это наверно самый минимальный код, который можно использовать для запуска собственного сайта. Можно уще правда убрать конфигурирование ошибки. Ну ладно, не самый минимальный, можно его еще немного ужать. Но главное, что он минимально прост и мы создали с помощью .NET Core первое Hello World приложение.
Источник: www.flenov.info
Портирование desktop приложений на .NET Core 3.0
В этой статье мы рассматриваем, как перенести desktop приложение с .NET Framework на .NET Core. Мы выбрали приложение WinForms в качестве примера. Шаги для приложения WPF схожи, и мы опишем, что нужно сделать для WPF по-другому. Мы также покажем, как вы можете продолжать использовать конструктор WinForms в Visual Studio, даже если он находится в стадии разработки и еще не доступен для проектов .NET Core.
О примере:
Автор для портинга использует настольную игру Memory-style. Она юзает интерфейс WinForms (MatchingGame.exe) и библиотеку классов с игровой логикой (MatchingGame.Logic.dll), обе из которых предназначены для .NET Framework 4.5. Вы можете скачать образец здесь. Мы будем переносить проект приложения на .NET Core 3.0 и библиотеку классов на .NET Standard 2.0.
Использование .NET Standard вместо .NET Core позволяет мне повторно использовать игровую логику для предоставления приложения для других платформ, таких как iOS, Android или веб. Мы рекомендуем выполнить миграцию в отдельной ветке или если вы не используете контроль версий, создать копию своего проекта, чтобы у вас был бекап, к которому можно вернуться при необходимости. Прежде чем портировать приложение на .NET Core 3.0, нам нужно сначала подготовиться.
Подготовка к портированию:
- Установите .NET Core 3 и Visual Studio 2019 Preview версии (Visual Studio 2017 поддерживает только до .NET Core 2.2).
- Начните с рабочего решения. Убедитесь, что решение открывается, собирается и запускается без проблем.
- Обновите NuGet пакеты. Всегда рекомендуется использовать последние версии пакетов NuGet перед любой миграцией. Если ваше приложение ссылается на какие-либо пакеты NuGet, обновите их до последней версии. Убедитесь, что ваше приложение успешно собрано. В случае каких-либо ошибок NuGet, понизьте версию и найдите последнюю версию, которая не нарушает ваш код.
- Запустите анализатор портирования.NET, чтобы определить, существуют ли какие-либо API, от которых зависит ваше приложение и которые отсутствуют в .NET Core. Если таковые имеются, вам необходимо провести рефакторинг своего кода, чтобы избежать зависимостей от API, не поддерживаемых в .NET Core. Иногда можно найти альтернативный API, который обеспечивает необходимую функциональность.
- Замените packages.config на PackageReference. Если ваш проект использует пакеты NuGet, вам нужно добавить те же пакеты NuGet в новый проект .NET Core. Проекты .NET Core поддерживают только PackageReference для добавления пакетов NuGet. Чтобы переместить ваши ссылки NuGet из packages.config в файл проекта, в обозревателе решений щелкните правой кнопкой на packages.config -> Migrate packages.config в PackageReference.
Портирование главного проекта:
1. Создаем новое приложение того же типа (Console, WinForms, WPF, Class Library), что и приложение, которое вы готовы портировать, для .NET Core 3. Для создание проекта используем такую консольную команду:
dotnet new winforms -o MatchingGame.Core
2. В файле проекта скопируйте все внешние ссылки из старого проекта, например:
3. Build. На этом этапе, если пакеты, на которые вы ссылаетесь, поддерживают только .NET Framework, вы получите предупреждение NuGet. Если вы не обновили до последних версий пакетов NuGet на шаге 3, попробуйте найти, доступна ли последняя версия, поддерживающая .NET Core (.NET Standard), и выполните обновление.
Если более новой версии нет, пакеты .NET Framework все еще можно использовать, но вы можете получить ошибки времени выполнения, если эти пакеты имеют зависимости от API, не поддерживаемых в .NET Core. Microsoft рекомендует сообщить автору пакета NuGet, что вас заинтересовало бы обновление пакета до .NET Standard. Вы можете сделать это через контактную форму в галерее NuGet.
Быстрый способ (заменить существующий файл проекта)
Первое, давайте попробуем быстрый способ портирования. Убедитесь, что у вас есть копия вашего текущего файла .csproj, возможно, вам придется использовать его в будущем. Замените ваш текущий файл .csproj файлом .csproj из проекта, который вы создали на шаге выше, и добавьте в верхнюю :
false
Запустите build своего приложения. Если ошибок нет — поздравляю, вы успешно перенесли свой проект в .NET Core 3. Для портирования зависимого (UI) проекта см. Раздел «Портирование пользовательского интерфейса», чтобы узнать, как использовать Designer, ознакомьтесь с разделом «Использование дизайнера WinForms для проектов .NET Core».
Медленный путь (мануальное портирование)
Если вы получили ошибки, это означает, что вам нужно внести дополнительные коррективы. Вместо быстрого способа, описанного выше. Шаги ниже также помогут лучше понять процесс миграции, поэтому, если быстрый способ сработал для вас, но вам интересно узнать все «почему», продолжайте читать 🙂
1. Миграция SDK. Чтобы переместить мое приложение в .NET Core, сначала мне нужно изменить файл проекта в формате SDK, поскольку старый формат не поддерживает .NET Core. Кроме того, формат в стиле SDK намного проще и с ним легче работать. Убедитесь, что у вас есть копия вашего текущего файла .csproj. Замените содержимое файла .csproj следующим:
Для приложения WinForms:
WinExe net472 true false
Для WPF приложения:
WinExe net472 true false
Обратите внимание,на то что установлено в false.
В проектах нового типа AssemblyInfo.cs генерируется автоматически по умолчанию. Вам нужно отключить автогенерацию или удалить файл AssemblyInfo.cs.Теперь скопируйте и вставьте все ссылки из старой версии файла .csproj в новую. Например:
NuGet package reference
Существует также сторонний инструмент CsprojToVs2017, который может выполнить преобразование автоматически. Но после его использования вам все равно может понадобиться удалить некоторые ссылки вручную, например:
2. Переход от .NET Framework к .NET Standard или .NET Core
После успешного преобразования библиотеки, мы можем изменить таргет для нее. В нашем случае мы хотим, чтобы библиотека классов предназначалась для .NET Standard вместо .NET Core. Таким образом, он будет доступен из любой реализации .NET. Для этого нам нужно заменить
net472
netstandard2.0
Соберите свое приложение. Вы можете получить некоторые ошибки, если вы используете API, которые не включены в .NET Standard. Если вы не получили никаких ошибок с вашим приложением, вы можете пропустить следующие два шага.
3. При необходимости добавьте Windows Compatibility Pack. Некоторые API, которые не включены в .NET Standard, доступны в пакете совместимости Windows. Если вы получили ошибки на предыдущем шаге, вы можете проверить, может ли пакет Windows Compatibility Pack помочь вам в решении этих ошибок
4. Установите API Analyzer. API Analyzer, доступный в виде пакета NuGet под названием Microsoft.DotNet.Analyzers.Compatibility, будет показывать вам предупреждения при использовании устаревших API или API, которые не поддерживаются на всех платформах (Windows, Linux, macOS).
Если вы добавили Windows Compatibility Pack, я рекомендую добавить API Analyzer, чтобы отслеживать все случаи использования API, которые не будут работать на всех платформах. На этом мы заканчиваем миграцию библиотеки классов на .NET Standard. Если у вас есть несколько проектов, ссылающихся друг на друга, перенесите их «снизу вверх», начиная с проекта, который не зависит от других проектов. В примере у нас также есть проект WinForms MatchingGame.exe, поэтому теперь мы выполним аналогичные шаги для переноса. что к .NET Core.
Портирование UI
1. Добавте .NET Core UI проект. Добавляем такой проект с помощью dotnet CLI
dotnet new winforms -o MatchingGame.Core
Для WPF проектов:
dotnet new wpf -o MatchingGame.Core
2. Ссылка на проекты. Сначала удалите все файлы из нового проекта (прямо сейчас он содержит общий код Hello World). Затем свяжите все файлы из существующего проекта пользовательского интерфейса .NET Framework с проектом пользовательского интерфейса .NET Core 3.0, добавив в файл .csprojfile следующую команду.
***.cs» /> ***.resx» />
Если у вас есть приложение WPF, вам также необходимо включить файлы .xaml:
MSBuild:Compile MSBuild:Compile
3. Выравняйте пространство имен по умолчанию и имя сборки. Поскольку вы ссылаетесь на файлы, созданные дизайнером (например, Resources.Designer.cs), вы, как правило, хотите убедиться, что версия вашего приложения .NET Core использует то же пространство имен и то же имя сборки. Скопируйте следующие параметры из вашего проекта .NET Framework:
4. Отключите генерацию AssemblyInfo.cs . Как мы уже упоминали ранее, в проектах нового типа AssemblyInfo.cs генерируется автоматически по умолчанию. В то же время файл AssemblyInfo.cs из старого проекта WinForms будет скопирован и в новый проект, потому что мы связали все файлы ** *. Cs на предыдущем шаге. Это приведет к дублированию AssemblyInfo.cs. Чтобы избежать этого в файле проекта MatchingGame.Core, мы установили для GenerateAssemblyInfo значение false.
false
5. Запустите новый проект и убедитесь что все работает.
6. Скопируйте или оставьте ссылку. Теперь вместо связывания файлов вы можете скопировать их из старого проекта пользовательского интерфейса .NET Framework в новый проект пользовательского интерфейса .NET Core 3.0. После этого вы можете удалить старый проект.
Использование дизайнера WinForms для проектов .NET Core
Как мы уже упоминали выше, дизайнер WinForms для проектов .NET Core еще не доступен в Visual Studio. Однако есть два способа обойти это:
- Вы можете сохранять свои файлы связанными (просто не выполняя предыдущий шаг) и копировать их, пока не будет доступна поддержка дизайнера. Таким образом, вы можете изменить файлы в вашем старом проекте .NET Framework WinForms, используя конструктор. И изменения будут автоматически отражены в новом проекте .NET Core WinForms — поскольку они связаны между собой.
- В одном каталоге с вашим проектом WinForms может быть два файла проекта: старый файл .csproj из существующего проекта .NET Framework и новый файл .csproj в стиле SDK нового проекта .NET Core WinForms. Вам просто нужно выгрузить и перезагрузить проект с соответствующим файлом проекта в зависимости от того, хотите ли вы использовать дизайнер или нет.
Итог:
В этом посте мы рассмотрели, как перенести desktop приложение, содержащее несколько проектов, из .NET Framework в .NET Core. В типичных случаях недостаточно просто перенастроить свои проекты на .NET Core. Мы описали потенциальные проблемы, с которыми вы можете столкнуться и способы их решения. Кроме того, мы продемонстрировали, как вы все еще можете использовать дизайнер WinForms для своих портированных приложений, пока он еще не доступен для проектов .NET Core.
Источник: bool.dev