Слайд 2Сборка
Сборка является базовой структурной единицей в .NET, на уровне которой

проходит контроль версий, развертывание и конфигурация приложения.
Слайд 3Состав сборки
Манифест, который содержит метаданные сборки.
Метаданные типов. Используя эти метаданные, сборка определяет

местоположение типов в файле приложения, а также места размещения их в памяти
IL-код
Ресурсы
Слайд 4Дополнительные сведения о сборке
Сборки реализованы как EXE- или DLL-файлы.
Сборки можно поместить в

глобальный кэш сборок, чтобы обеспечить их использование несколькими приложениями. В глобальный кэш сборок могут быть включены только сборки со строгими именами.
Сборки загружаются в память только по мере необходимости. Если сборки не используются, они не загружаются.
Для программного получения сведений о сборках используется класс reflection.
Слайд 5Манифест сборки
Ключевым компонентом сборки является ее манифест. Если у сборки отсутствует манифест,

то заключенный в ней код MSIL выполняться не будет. Манифест может находиться в одном файле с исполняемым кодом сборки, а может размещаться и в отдельном файле.
Слайд 6Состав манифеста
Имя сборки
Номер версии: основной и дополнительный номера. Используется для управления версиями
Язык

и региональные параметры: информация о языке и региональных параметрах, которые поддерживает сборка
Информация о строгом имени: открытый ключ издателя
Список всех файлов сборки: хэш и имя каждого из входящих в сборку файлов
Список ссылок на другие сборки, которые использует текущая сборка
Список ссылок на типы, используемые сборкой
Слайд 7Директивы
Директива – это указание компилятору языка С# выполнить то или иное действие

в момент компиляции программы.
Список директив:
#define #error #import #undef #elif #if
#include #using #else #ifdef #line #endif
#ifndef #pragma
Слайд 8Размещение директивы
Знак решетки (#) должен быть первым не пробельным символом в строке,

содержащей директиву; между знаком решетки и первой буквой директивы пробельные символы допускаются.
Любой текст, следующий после директивы (за исключением аргумента или значения, представляющих собой часть директивы), должен предваряться разделителем однострочного комментария (//) или заключаться в разделители комментариев (/* */).
Слайд 9Директива #region #endregion
Директива #region позволяет указать блок кода, который можно разворачивать и

сворачивать с помощью функции структурирования в редакторе кода Visual Studio.
Слайд 10Директива #define
Директива #define позволяет определить символ, который при передаче его директиве #if

как выражения приведет к получению значения true.
Также можно определить символ с помощью параметра компилятора /define. Для отмены определения символа служит директива #undef.
Слайд 11Директива #if
При обнаружении компилятором директивы #if, за которой далее следует директива #endif,

компиляция кода между двумя директивами выполняется только в том случае, если определен указанный символ.
Слайд 12Пример использования
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug version");
#endif

Слайд 13Атрибуты
Атрибуты обеспечивают эффективный способ связывания метаданных или декларативной информации с кодом (сборками,

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

ограничить типы объявлений, в которых он допустим. В C++ атрибут задается путем размещения его имени, заключенного в квадратные скобки ([]), перед объявлением сущности.
Слайд 15Целевой объект атрибута
Целевым объектом атрибута является сущность, к которой относится атрибут.
Например,

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