Net framework c: Начало работы с .NET Framework — .NET Framework

Язык C# и .NET Framework

1145

C# спроектирован и разработан специально для применения с .NET Framework. Назначение .NET Framework — служить средой для поддержки разработки и выполнения сильно распределенных компонентных приложений. Она обеспечивает совместное использование разных языков программирования, а также безопасность, переносимость программ и общую модель программирования для платформы Windows. .NET Framework предлагает несколько готовых API-интерфейсов для разработки веб-приложений (ASP.NET), десктопных приложений (WPF), веб-апплетов (Silverlight), работы с базами данных (ADO.NET) и т.д.

ASP.NET

ASP.NET является основной технологией для построения серверных элементов веб-приложений от Microsoft. Заинтересовать разработчиков в ASP.NET совсем нетрудно. Без преувеличения, ASP.NET является наиболее полной платформой для веб-разработки из всех, которые когда-либо создавались. Обширная поддержка шаблона проектирования MVC только прибавляет ASP. NET популярности.

C# 5.0 и платформа .NET 4.5

В этом разделе приводится простое руководство C#, описывающее базовые синтаксические конструкции языка, а также простые API-интерфейсы .NET Framework — работа со сборками и рефлексией, использование многопоточности, файлов и сети.

WPF

Windows Presentation Foundation (WPF) представляет собой обширный API-интерфейс для создания настольных графических программ имеющих насыщенный дизайн и интерактивность. В отличие от устаревшей технологии Windows Forms, WPF включает новую модель построения пользовательских приложений (в основе WPF лежит мощная инфраструктура, основанная на DirectX).

Темы WPF

Темы WPF представляют собой наборы стилизованных шаблонов элементов управления WPF. Здесь я представляю разработанные мною темы.

Silverlight

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

ADO.NET

Как и следовало ожидать, платформа .NET определяет возможности, которые позволяют непосредственно взаимодействовать с локальными и удаленными базами данных с помощью ADO.NET и Entity Framework.

LINQ

Мощное расширение языка C# для работы с коллекциями в разных контекстах — с объектами C# (LINQ to Objects), с XML-документами (Linq to XML), с ADO.NET (LINQ to DataSet и SQL), с Entity Framework (LINQ to Entities).

Expression Blend 4

Программа Expression Blend, разработанная корпорацией Microsoft, предназначена для создания приложений WPF и Silverlight на промышленном уровне. Это инструментальное средство предоставляет пользователю развитый графический интерфейс, в котором можно создавать и настраивать настольные программы (WPF API) и веб-приложения (Silverlight API). При этом вся необходимая XAML-разметка формируется автоматически.

Entity Framework 6

Entity Framework предоставляет возможность работы с базами данных через объектно-ориентированный код C#. Благодаря этому, вместо построения сложных и подверженных ошибкам инструкций SQL, можно использовать язык запросов LINQ.

SQL Server 2012 и T-SQL

Система управления базами данных SQL Server является наилучшим выбором для широкого диапазона конечных пользователей и программистов баз данных, работающих над созданием бизнес-приложений. Transact-SQL (T-SQL) — язык реляционной базы данных системы SQL Server, который обладает несколькими нестандартными свойствами, которые неизвестны пользователям, знакомым только с языком SQL.

Приложения Windows Store

В операционно системе Windows 8 появился новый API-интерфейс для приложений Windows Store, который называется Windows Runtime. Эти приложения представлены общим стилем Metro, имеют графический интерфейс в виде плиток и разрабатываются в основном для планшетных устройств и смартфонов, хотя так же хорошо работают и на десктопных компьютерах. Приложения Windows Runtime можно разрабатывать используя три разных подхода: с использованием JavaScript и HTML, C++ и XAML или C# и XAML. Мы будем использовать последний вариант в этом руководстве.

Перенос консольного приложения c .NET Framework 4.7.2 на NET Core 3.1

По мере изучения основ C# я пробую также переписать один из моих проектов с Delphi на C#.  Пишу я пока без всяких изысков вроде визуального интерфейса, так как программа хоть и большая, но максимум, что пока от неё требуется — это собрать csv-файл из рассчитанных данных и визуализировать кое-какие моменты работы в Google Earth при помощи kml-файла. Когда я писал часть про логические операции, то мне понравилось использование выражения switch вместо одноименной конструкции — коротко,  понятно и лаконично.   Однако , эта  возможность доступна для использования только с версии  C# 8.0, а у меня приложение разрабатывалось на .NET Framework 4.7.2 и C# 7.3, соответственно. А так как кода было написано уже достаточно много, то пришлось думать над тем, как перенести моё консольное приложение с .NET Framework 4.7.2 на NET Core 3.1.

Содержание

  • Смена версий языка C# в Visual Studio 2019 не работает
  • Простой вариант переноса консольного приложения с .NET Framework 4.7.2 на NET Core 3.1
    • Шаг 1. Запуск Portability Analyzer
  • Шаг 2. Миграция .csproj в SDK-стиле
  • Использование System.Windows в .NET Core

Смена версий языка C# в Visual Studio 2019 не работает

Первое, что я предпринял для того, чтобы как можно более безболезненно сменить C# 7.3 на C# 8.0 — это попробовал  изменить версию языка в Visual Studio. Судя по найденным на просторах Интернет инструкциям, делалось это через свойства проекта: надо было дважды кликнуть по Properties в обозревателе решений, затем, в открывшемся окне перейти на вкладку «Сборка», кликнуть кнопку «Дополнительно…» и, в открывшемся окне выбрать необходимую версию языка. Однако, в Visual Studio 2019 такой «фокус»не прошел:

Microsoft позаботился о том,  чтобы разместить под неактивным списком выбора версии C# пояснение того, почему на данный момент нельзя сменить версию языка. Судя по полученной информации, компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта, интерфейс смены версии C# теперь не работает, а новые функции C# 8.0 поддерживаются только на .NET Core 3.x. Так что, чтобы «пощупать» новинки в C# 8.0 пришлось искать вариант того, как быстро мигрировать с .NET Framework 4.7.2 на NET Core 3.1.

Простой вариант переноса консольного приложения с .NET Framework 4.7.2 на NET Core 3.1

Вариант перехода с .NET Framework 4.7.2 на NET Core 3.1 нашелся относительно быстро на Хабре в блоге Microsoft (кто бы подумал), правда для консольного приложения пришлось его совсем чуточку доработать и добавить в этот вариант ещё один шаг. В конце этой статьи я приведу ссылку на первоисточник информации, чтобы соблюсти все правила цитирования.

Шаг 1. Запуск Portability Analyzer

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

Запускаем Portability Analyzer и указываем расположение исходного кода проекта:

Portability Analyzer

После этого откроется файл Excel с отчётом по проверке. У меня этот файл выглядел следующим образом:

Лист Portability Summary

Оказалось, что используемая в моем проекте сборка SharpKml не на все 100% поддерживается в .NET Standard 1.2, но для .NET Core 3.1 подходит. Значит всё хорошо, можно переходить к следующему шагу. Если бы анализатор показал меньше 100% совместимости с .NET Core 3.1, то пришлось бы искать либо другую версию SharpKml или же искать альтернативу.

Шаг 2. Миграция .

csproj в SDK-стиле

В Обозревателе решений  необходимо кликнуть правой кнопкой мыши по своему проект и посмотреть есть ли в контекстном меню пункт «Изменить файл проекта». Вот так выглядит этот пункт в Visual Studio 2019:

А вот так будет выглядеть контекстное меню проекта без пункта:

Если пункт «Изменить файл проекта» имеется, то можно переходить к следующему шагу. Если же пункта нет, то делаем следующее:

  1. Смотрим, есть ли в проекта файл packages.config. В «Обозревателе решений» он выглядит вот так:

Если файл имеется, то кликаем на нем правой кнопкой мыши и выбираем пункт «Перенести packages.config в PackageReference…«:

Появится окно в котором необходимо нажать «Ok»

2. Выгружаем проект. Для этого кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Выгрузить проект»

После выгрузки проект в «Обозревателе решений» будет выглядеть вот так:

Снова кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Изменить название_проекта. cproj«. В моем случае этот пункт выглядел вот так:

Откроется XML-файл примерно такого содержания:

Содержимое этого файла необходимо скопировать в «Блокнот».  Теперь необходимо удалить всё из файла в Visual Studio. Согласен с автором первоисточника данной инструкции, что звучит такой пункт, мягко говоря, угрожающе. Но, на деле, ничего страшного не произойдет. Удаляйте — не переживайте (копия лежит в «Блокноте»).

Вместо только что удаленного текста вставьте следующий код необходимый для консольного приложения(здесь небольшое расхождение с первоисточником):

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>
</Project>

Теперь переходим в Блокнот и ищем там строку PackageReference. Если ничего не нашли — двигаемся дальше. Если нашли PackageReference, то копируем весь узел ItemGroup, содержащий PackageReference, в файл проекта, открытого в Visual Studio. Вставлять скопированный текст необходимо перед закрывающим тегом </Project>, а не в конец файла, как это было сказано в первоисточнике. Скопированный блок должен выглядеть так:

<ItemGroup>
    <PackageReference Include="SharpKml.Core">
        <Version>5.1.2</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
</ItemGroup>

У меня такой блок оказался всего один, поэтом итоговый файл *.cproj стал выглядеть вот так:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3. 1</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="SharpKml.Core">
            <Version>5.1.2</Version>
        </PackageReference>
    </ItemGroup>
</Project>

Теперь делаем то же самое, что и выше, но только для ProjectReference. Нашли  ProjectReference — копируем весь ItemGroup в конец файла перед закрывающим тегом </Project>. У меня в Блокноте таких строк не оказалось, поэтому я перешел к следующему шагу — сохраняем все и перезагружаем проект кликнув правой кнопкой мыши по названию проекта и выбрав пункт «Перезагрузить проект». Теперь наш проект в «Обозревателе решений» стал выглядеть немного по другому:

В принципе, на этом переход с .NET Framework 4.7.2 на NET Core 3.1 закончен — можно попробовать запустить проект и убедиться, что все работает. Однако у меня при попытке запуска приложения посыпались ошибки вида:

Ошибка CS0579 Повторяющийся атрибут «System. Reflection.AssemblyCompanyAttribute» ConsoleApp3 J:\CSharp Sources\Mrr2017_recovery\Mrr2017\ConsoleApp3\obj\Debug\netcoreapp3.1\ConsoleApp3.AssemblyInfo.cs

Помогло удаление файла AssemblyInfo.cs

То, что удаление файла AssemblyInfo.cs помогло мне — не значит, что поможет вам. Если не жалко проект — можете повторить мои действия, но лучше проконсультироваться со специалистами.

После этого проект запустился, работоспособность не нарушилась. Однако встретилась другая проблема.

Использование System.Windows в .NET Core

До перехода на .NET Core для работы с координатами точек, полигонами и так далее я использовал стандартные классы Windows из пространства имен System.Windows (добавив предварительно ссылку в Зависимости). Однако, в .NET Core Visual Studio «ругнулась» на то, что в этом пространстве имен классов типа Point и Rect не существует и пометила using System.Windows  серым цветом с предложением удалить неиспользуемые директивы:

Решение нашлось на StackOverflow. Для того, чтобы использовать стандартные примитивы из Windows типа Point и Rect для приложения на .NET Core 3.x необходимо установить пакет System.Runtime.WindowsRuntimeчерез менеджер пакетов NuGet. Для этого кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Управление пакетами NuGet»

В окне менеджера пакетов переходим на вкладку «Обзор» и забиваем в строку поиска System.Runtime.WindowsRuntime.

Жмем кнопку установить и ждем пока NuGet установит пакет. После установки пакета проект в «Обозревателе решений» станет выглядеть вот так:

Теперь необходимо добавить в проект пространство имен:

using Windows.Foundation;

И можно пользоваться классами Point и Rect:

Вот так простое человеческое желание использовать в работе новейшие возможности языка C# привели к переносу проекта c .NET Framework 4.7.2 на NET Core 3.1. Надеюсь, что вам эта небольшая инструкция пригодиться.

Источники информации:

  1. Статья на Хабре: Перенос десктопных приложений на .NET Core
  2. StackOverflow: Using System.Windows in .NET Core

Что такое .NET? Платформа для разработчиков с открытым исходным кодом.

.NET — это платформа разработчиков с открытым исходным кодом, созданная Microsoft для создания множества различных типов приложений.

.NET

.NET — это бесплатная кроссплатформенная платформа с открытым исходным кодом для разработчиков, предназначенная для создания различных типов приложений.

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

Языки

Вы можете писать приложения .NET на C#, F# или Visual Basic.

  • C# — это простой, современный, объектно-ориентированный и типобезопасный язык программирования.
  • F# — это язык программирования, который упрощает написание лаконичного, надежного и производительного кода.
  • Visual Basic — это доступный язык с простым синтаксисом для создания типобезопасных объектно-ориентированных приложений.

Узнайте о языках .NET

Кросс-платформенный

Независимо от того, работаете ли вы на C#, F# или Visual Basic, ваш код будет выполняться изначально в любой совместимой операционной системе. С помощью .NET можно создавать множество типов приложений. Некоторые из них являются кроссплатформенными, а некоторые предназначены для определенного набора операционных систем и устройств.

Один согласованный API

.NET предоставляет стандартный набор библиотек базовых классов и API, общих для всех приложений .NET.

Каждая модель приложения может также предоставлять дополнительные API, характерные для операционных систем, в которых оно работает, или предоставляемых им возможностей. Например, ASP.NET — это кроссплатформенная веб-инфраструктура, предоставляющая дополнительные API для создания веб-приложений, работающих в Linux или Windows.

Узнайте о стандартных библиотеках .NET

Библиотеки

Для расширения функциональности Microsoft и другие компании поддерживают здоровую экосистему пакетов .NET.

NuGet — это диспетчер пакетов, созданный специально для .NET и содержащий более 100 000 пакетов.

Модели приложений

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

Web

Создавайте веб-приложения и сервисы для Linux, Windows, macOS и Docker.

Mobile

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

Рабочий стол

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

Микросервисы

Создавайте независимо развертываемые микросервисы, работающие в контейнерах Docker.

Облако

Используйте существующие облачные службы или создавайте и развертывайте свои собственные.

Машинное обучение

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

Разработка игр

Разработка 2D- и 3D-игр для самых популярных настольных компьютеров, телефонов и консолей.

Интернет вещей

Создавайте приложения IoT со встроенной поддержкой Raspberry Pi и других одноплатных компьютеров.

100 000+
Вклад OSS
3700+
Авторы компании OSS

Активное сообщество и открытый исходный код

.NET имеет открытый исходный код и находится под управлением .NET Foundation. .NET Foundation — это независимая организация, способствующая открытой разработке и сотрудничеству в рамках экосистемы .NET.

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

Получите быстрые ответы на вопросы от активного сообщества разработчиков на Stack Overflow.

Присоединяйтесь к сообществу .NET

Инструменты

Семейство продуктов Visual Studio обеспечивает отличные возможности разработки .NET в Linux, Windows и macOS.

В Visual Studio Marketplace есть тысячи расширений редактора от Microsoft и других компаний.

Если вы предпочитаете использовать другой редактор, для многих популярных редакторов существуют инструменты командной строки и подключаемые модули .NET.

Узнайте об инструментах для .NET

Почему стоит выбрать .NET?

Узнайте, почему клиенты во всем мире в самых разных отраслях доверяют .NET.

Почему стоит выбрать .NET?

Загрузить .NET (Linux, macOS и Windows)

Бесплатно. Кроссплатформенность. Открытый исходный код.

Для Linux

.NET 7.0

Стандартный срок поддержки

рекомендуемые

Инструкции по установке .NET в Linux
Версия 7.0.0, выпущенная 8 ноября 2022 г.

Все загрузки .NET 7.0
Все версии .NET

.NET 6.0

Долгосрочная поддержка

Инструкции по установке .NET в Linux
Версия 6.0.11, выпущенная 8 ноября 2022 г.

Все загрузки .NET 6.0

Что нового в .NET 7?

Улучшения .NET 7 включают общее повышение производительности, новые инструменты для кроссплатформенной разработки с .NET MAUI, обновления для ASP.NET Core и облачной разработки, поддержку ARM64 и многое другое.

Учить больше

Другие загрузки .NET

.NET Framework

Ищете предыдущие загрузки .NET Framework для Windows?

Скачать .NET Framework

Пакет кодирования .NET

Пакет кодирования . NET для VS Code содержит все необходимое для начала написания кода на C#.

Загрузить пакет кодирования .NET

Docker

Найдите официальные образы для .NET и ASP.NET Core в реестре артефактов Microsoft.

Исследуйте образы .NET

Исследуйте все, что может предложить .NET

Интернет

Создавайте веб-приложения и службы для macOS, Windows, Linux и Docker.

Мобильный

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

Рабочий стол

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

Микросервисы

Создавайте независимо развертываемые микросервисы, работающие в контейнерах Docker.

Облако

Использовать существующие облачные службы или создавать и развертывать собственные.

Машинное обучение

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

Разработка игр

Разрабатывайте 2D- и 3D-игры для самых популярных настольных компьютеров, телефонов и консолей.

Интернет вещей

Создавайте приложения для Интернета вещей со встроенной поддержкой Raspberry Pi и других одноплатных компьютеров.

Расширьте возможности .NET

Ознакомьтесь с дополнительными инструментами

Visual Studio

Полнофункциональная интегрированная среда разработки (IDE) в Windows для создания приложений .NET любого типа.

Скачать визуальную студию

Visual Studio Code

Разрабатывайте в Linux, macOS или Windows для создания кроссплатформенных веб-сайтов и сервисов. Установите расширение C#, чтобы получить наилучшие впечатления.