Решение и проект. Пространства имен. Менеджер пакетов NuGet
Проекты в Visual Studio
Проекты в Visual Studio
Отличие .NET Core и .NET Framework
Менеджер пакетов NuGet
Поток пакетов между создателями, узлами и потребителями
Совместимость пакета с разными целевыми платформами
Управление зависимостями
Хранение пакетов на компьютере
.NET Standard
Совместимость приложений .NET
Структуризация классов при разработке
Пространства имен
Пространства имен
Пространства имен
Способы объявления переменной
Проекты в Visual Studio
104.17K
Категория: ПрограммированиеПрограммирование

7 Проект и решение (1)

1. Решение и проект. Пространства имен. Менеджер пакетов NuGet

Алгоритмизация и программирование

2. Проекты в Visual Studio

Проект - это основная единица, с которой работает программист. Он выбирает тип
проекта, а Visual Studio создает скелет проекта в соответствии с выбранным типом.
Решение содержит один или несколько проектов, ресурсы, необходимые этим
проектам, возможно, дополнительные файлы, не входящие в проекты. Один из
проектов решения должен быть выделен и назначен стартовым проектом. Выполнение
решения начинается со стартового проекта.
Проекты одного решения могут быть зависимыми или независимыми. Изменяя
стартовый проект, получаем возможность перехода к нужному примеру. Заметьте,
стартовый проект должен иметь точку входа - класс, содержащий статическую
процедуру с именем Main, которой автоматически передается управление в момент
запуска решения на выполнение. В уже имеющееся решение можно добавлять как
новые, так и существующие проекты. Один и тот же проект может входить в несколько
решений.

3. Проекты в Visual Studio

4. Отличие .NET Core и .NET Framework

.NET Framework — программная платформа, выпущенная компанией Microsoft в
2002 году. Основой платформы является общеязыковая среда исполнения
Common Language Runtime (CLR), которая подходит для разных языков
программирования. Функциональные возможности CLR доступны в любых
языках программирования, использующих эту среду.
.NET Core — это модульная платформа для разработки программного
обеспечения,
с
открытым
исходным
кодом.
Совместима
с
такими
операционными системами как Windows, Linux и macOS. Каждый её компонент
обновляется через менеджер пакетов NuGet, а значит можно обновлять её
модули по отдельности, в то время как .NET Framework обновляется целиком.

5. Менеджер пакетов NuGet

Это ключевой инструмент для любой современной платформы разработки — это
механизм, с помощью которого разработчики могут создавать, передавать друг другу и
использовать полезный код. Часто такой код распределен по "пакетам", включающим
скомпилированный код (в виде библиотек DLL) и другое содержимое, необходимое
использующим эти пакеты проектам.
Пакет NuGet представляет собой отдельный ZIP-файл с расширением .nupkg, который
содержит скомпилированный код (DLL), другие файлы, связанные с этим кодом, и
описательный манифест, включающий такие сведения, как номер версии пакета.
Разработчики, у которых есть код, к которому нужно предоставить общий доступ,
создают пакеты и публикуют их на закрытых или открытых узлах. Потребители получают
эти пакеты из соответствующих узлов, добавляют их в свои проекты, а затем вызывают
функции пакета в коде своего проекта.

6. Поток пакетов между создателями, узлами и потребителями

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

7. Совместимость пакета с разными целевыми платформами

"Совместимый" пакет означает, что он содержит сборки, созданные по меньшей мере
для одной целевой платформы .NET, совместимой с целевой платформой
используемого проекта. Разработчики могут создавать пакеты, которые относятся к
одной платформе, как и элементы управления универсальной платформы Windows
(UWP), или они могут поддерживать более широкий набор целевых объектов. Для
максимальной совместимости пакета разработчики используют версию .NET Standard,
которую поддерживают все проекты .NET.
Разработчики пакетов, которым требуется API вне .NET Standard, с другой стороны,
создают отдельные сборки для различных требуемых версий .NET Framework, которые
они будут поддерживать, и включают все эти сборки в один пакет (который называется
пакетом многоплатформенного нацеливания). Когда потребитель устанавливает такой
пакет, NuGet извлекает только сборки, нужные в проекте.

8. Управление зависимостями

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

9. Хранение пакетов на компьютере

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

10. .NET Standard

.NET Standard — это официальная спецификация для API .NET, которые должны
быть доступны во всех реализациях .NET. .NET Standard была создана для того,
чтобы повысить согласованность в экосистеме .NET.
Различные реализации .NET реализуют конкретные версии .NET Standard.
Каждая
версия
реализации
.NET
ориентирована
на
использование
максимальной поддерживаемой ею версии .NET Standard. Это также означает,
что она поддерживает и предыдущие версии. Например, .NET Framework 4.6
реализует .NET Standard 1.3, то есть предоставляет все API, определенные в
стандартах .NET Standard версий 1.0–1.3. Аналогичным образом .NET Framework
4.6.1 реализует .NET Standard 1.4, а .NET 5.0 — .NET Standard 2.1.

11. Совместимость приложений .NET

.NET Standard
1.0
1.1
1.2
1.3
2.0
2.1
.NET Core и .NET 5
1.0
1.0
1.0
1.0
2.0
3.0
.NET Framework
4.5
4.5
4.5.1
4.6
4.6.12
N/A
Mono
4.6
4.6
4.6
4.6
5,4
6.4
Xamarin.iOS
10.0
10.0
10.0
10.0
10.14
12.16
Xamarin.Mac
3.0
3.0
3.0
3.0
3.8
5.16
Xamarin.Android
7.0
7.0
7.0
7.0
8.0
10.0
Универсальная платформа Windows
10.0
10.0
10.0
10.0
10.0.16299 TBD
Unity
2018.1 2018.1 2018.1 2018.1 2018.1
TBD

12. Структуризация классов при разработке

Число классов библиотеки FCL велико (несколько тысяч). Поэтому
понадобился способ их структуризации. Логически классы с близкой
функциональностью объединяются в группы, называемые пространством имен
(Namespace).
Основным пространством имен библиотеки FCL является пространство
System, содержащее как классы, так и другие вложенные пространства имен.
Так, примитивный тип Int32 непосредственно вложен в пространство имен
System и его полное имя, включающее имя пространства - System.Int32.
Пространство System.Windows.Forms содержит классы, используемые при
создании Windows-приложений. Класс Form из этого пространства задает форму
- окно, заполняемое элементами управления, графикой, обеспечивающее
интерактивное взаимодействие с пользователем.

13. Пространства имен

Рассмотрим первую строку программы:
using System;
Эта строка означает, что в программе используется пространство имен System. В
C# пространство имен определяет область объявлений. Благодаря пространству
имен одно множество имен отделяется от других. По существу, имена,
объявляемые в одном пространстве имен, не вступают в конфликт с именами,
объявляемыми в другом пространстве имен. В анализируемой программе
используется пространство имен System, которое зарезервировано для
элементов, связанных с библиотекой классов среды .NET Framework,
применяемой в C#. Ключевое слово using просто констатирует тот факт, что в
программе используются имена в заданном пространстве имен.

14. Пространства имен

Использование данной строки в программе не обязательно, т.к. в C# можно
всегда полностью определить имя с помощью пространства имен, к которому
оно принадлежит. Например, строку
Console.WriteLine("Hello, World!");
можно переписать следующим образом
System.Console.WriteLine("Hello, World!");
Однако указывать пространство имен System всякий раз, когда используется
член этого пространства, — довольно утомительное занятие, и поэтому
большинство программистов на C# вводят директиву using System в начале
своих программ.

15. Пространства имен

С помощью ключевого слова namespace объявляется пространство имен, с
которым должен быть ассоциирован класс. Весь код в последующих фигурных
скобках рассматривается как принадлежащий этому пространству имен.
Оператор using специфицирует пространство имен, которое должен
просматривать компилятор в поисках классов, упомянутых в коде, но не
определенных в текущем пространстве имен. Это служит тем же целям, что
оператор import в Java и using namespace в С++.
Псевдоним
using Project = PC.MyCompany.Project;
Создание псевдонима using упрощает определение идентификатора для
пространства имен или типа. Правая часть директивы using alias должна всегда
быть полным именем, независимо от предшествовавших ей директив using.

16. Способы объявления переменной

int a = 0;
// Самый удобный синтаксис
System.Int32 a = 0; // Удобный синтаксис
int a = new int(); // Неудобный синтаксис
System.Int32 a = new System.Int32(); // Самый неудобный синтаксис

17. Проекты в Visual Studio

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