Common Intermediate Language
Определения
.
|
|
Задачи Сборок
| ||||||
| ||||||
Виды сборок
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
Статические сборки
В большинстве случаев приложения .NET воспринимаются системой как родные именно за счет PE формата файлов, в которых они размещаются.
Вызовы между системой и такими приложениями идут при помощи стандартных интерфейсов предоставляемых форматом PE:
Основные элементы файлов статических сборок
Классификация сборок по расположению
Состав файла . NET сборки (однофайловой)
Сборка из одного файла
Сборка из нескольких файлов
Преимущества многофайловых сборок
Манифест сборки
Хранит следующие данные.
Способы хранения манифеста сборки.
Назначение Манифеста сборки
В манифест сборки включается:
· Имя сборки
· Сведения о версии
· Сведения о культуре
· Данные строгого имени
· Список файлов сборки
· Сведения о типах ссылок
· Сведения о ссылочных и зависимые сборки
Код MSIL, содержащихся в сборке не может быть выполняется непосредственно. Вместо этого выполнение кода MSIL осуществляется с помощью среды CLR. По по умолчанию, при создании сборки, сборка является закрытой для приложение. Для создания общей сборки необходимо назначить строгое имя для сборки, а затем опубликовать ее в глобальной сборки кэш
Окно утилиты ildasm.exe
Информацию о манифесте можно просмотреть используя IL листинг данной сборки (он может быть получен при помощи утилиты ildasm.exe
Отображения на Экране
|
Компилятор командной строки
Настройка csc
|
| ||||||||||||
|
| ||||||||||||
C:\Windows\Microsoft.NET\Framework\ v4.0.30319
Настройка csc
3. Как еще вызвать компилятор С#
Причины, по которым освоение csc может оказаться полезным:
Необходимость csc.ехе
позволяет обрести навыки и чувствовать себя более уверенно при работе с другими инструментами командной строки, входящими в состав .NET Framework 4.0 SDK, так как целый ряд важных утилит работает исключительно в режиме командной строки
Работа с ответными файлами
ответные файлы (response files) - файлы С#, в которых размещаются все инструкции, необходимые в процессе компиляции текущей сборки.
расширение *.rsp (
Создание ответного файла
Имя- TestApplication.rsp,
# Это ответный файл для примера
# TestApplication.exe
/r:System.Windows.Forms.dll
# Параметры вывода и подлежащие компиляции файлы
/target:exe /out:TestApplication.ехе *.cs
С:\111>csc @TestApplication.rsp
несколько ответных *.rsp файлов:
csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp
Недостаток компилятора С#:
Компилятор обрабатывает параметры команд по мере их поступления.
Аргументы командной строки, содержащиеся в поступающем позже файле *.rsp, могут переопределять параметры из предыдущего ответного файла.
Ответный файл csc.rsp
· используется по умолчанию
· размещен в том же каталоге, что и файл csc.ехе
· Открывается Notepad (Блокнот),
· Содержит множество сборок .NET, в том числе различные библиотеки для разработки веб-приложений, программирования с использованием технологии LINQ и обеспечения доступа к данным
· ссылка на этот ответный файл добавляется автоматически
· Не содержит mscorlib.dll:
Т.к. в csc.rsp уже содержится ссылка на System.Windows.Forms.dll, то команда компоновки:
С:\111>csc /out:TestApplication.exe *.cs
Л9- Тailings and refunds
9.1. XML -комментарии в С#
Пример кода с XML-комментариями:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
/// <summary>
/// Класс Program
/// основной класс программы
/// выводящий текст "Hello, World!"
/// </summary>
class Program
{
/// <summary>
/// Метод Main() является
/// входной точкой работы программы
/// </summary>
/// <param name="args"> Аргумент метода Main()</param>
static void Main(string[] args)
{ // Форматируем шапку программы
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("********************");
Console.WriteLine("**** Мой проект ****");
Console.WriteLine("********************");
// Основная программа
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine();
Console.WriteLine("Hello, World!");
// Ожидание Enter перед завершением работы
Console.ReadLine();
} } }
9.2. Настройки Build (VS-2008):
- клик ПКМ на имени проекта в окне построителя и Свойства:
Заполнить вручную путь XML-файл документации.
Получаем Hellodoc.xml:
<?xml version="1.0"?>
<doc>
<assembly>
<name>hellodoc</name>
</assembly>
<members>
<member name="T:hellodoc.Program">
<summary>
Класс Program
основной класс программы
выводящий текст "Hello, World!"
</summary>
</member>
<member name="M:hellodoc.Program.Main(System.String[])">
<summary>
Метод Main() является
входной точкой работы программы
</summary>
<param name="args">Аргумент метода Main()</param>
</member> </members> </doc>
9.3. Для DLL вычисления Sin (xml- файл ):
<?xml version="1.0"?>
<doc>
<assembly>
<name>libsin</name>
</assembly>
<members>
<member name="T:libsin.Class1">
<summary>
Выч Тригон.ф.
</summary>
</member>
<member name= "M:libsin.Class1.Sin(System.Double,System.Int32)">
<summary>
Sin(x)
</summary>
<param name="x"> угол в рад.</param>
<param name="n">показ.степени</param>
<returns>результат</returns>
</member>
</members>
</doc>
Результат работы программ:
Можно сделать то же и командой csc.
csc /t:library /doc:MyApplication.xml MyApplication.cs
9. 4 . .NET и C#
NET Framework
.NET Framework — программная платформа, выпущенная компанией Microsoftв 2002 году. – ответ Microsoft на платформу Java компании Sun Microsystems (ныне принадлежит Oracle).
NET Framework 1.0
· вышел 5 января 2002 года
· для Windows 98, NT 4.0, 2000 и XP.
· Расширенная поддержка –до 14 июля 2009 года[11].
NET Framework 1.1
· вышел 1 апреля 2003 года.
· первая версия, автоматически устанавливаемая вместе с операционной системой (Win Server 2003).
· расширенная поддержка до 8 октября 2013 года
Независимые проекты (Mono и Portable.NET),
NET Framework 2.0
выпущена одновременно с Visual Studio 2005, SQL Server 2005 и BizTalk 2006.
добавлена поддержка настраиваемых (обобщённых) (англ. generic) классов, анонимных методов, полная поддержка 64-битных платформ x64 и IA-64? Windows Forms, ADO .NET, ASP.Net.
расширенная поддержка до 12 апреля 2016 года
ASP (англ. Active Server Pages — «активные серверные страницы») — технология динамического создания страниц на стороне сервера,
ASP.NET — технологии создания веб-приложений, основанной уже на платформе Microsoft .NET.
ADO.NET
|
Отличительные особенности ADO.NET:
Назначение ADO.NET
| ||||
| ||||
|
Объект DataSet - это тип данных, представляющий локальный набор таблиц и информацию об отношениях между ними.
Включает РБД, такие как Microsoft SQL Server, Microsoft Access, Compact и др.
NET Framework 3.0
Первоначальное имя - WinFX
Использует CLR версии 2.0.
Новые компоненты
| |||||||
| |||||||
| |||||||
|
Поддержка, Майкрософт, до 12 июля 2011 года.
NET Framework 3.5
Использует CLR версии 2.0.
Новшества:
· C# 3.0 и VB.NET 9.0
· Добавлен язык LINQ и провайдеры LINQ to Objects, LINQ to XML и LINQ to SQL
· ASP.NET AJAX включён в поставку
· Расширена функциональность WF и WCF
· Добавлено пространство имён System.CodeDom
Взаимодействие с объектами
· посредством LINQ в виде LINQ to Entities,
· с использованием Entity SQL.
Для облегчения построения web-решений используется
· ADO.NET Data Services (Astoria),
· связка из Windows Communication Foundation и Windows Presentation Foundation, позволяющая строить многоуровневые приложения, реализуя один из шаблонов проектирования MVC, MVP или MVVM
NET Framework 4.0
29 сентября 2008 года
Первая бета-версия появилась 20 мая 2009 года, вместе с бета-версией Visual Studio 2010
Нововведения:
· Parallel Extensions — PLINQ (Parallel LINQ) и библиотеку параллельных задач (Task Parallel Library)[14], предназначенные для упрощения программирования для многопроцессорных и распределённых систем
· Нововведения в Visual Basic и C#
· Технологию Managed Extensibility Framework (MEF)
· Полную поддержку IronPython, IronRuby и F#
· Поддержку подмножеств .NET Framework и ASP.NET в варианте Server Core
· Поддержку Code Contracts
· Средства моделирования Oslo и язык программирования M, предназначенный для создания предметно-ориентированных языков и моделей
Окончательная версия .NET Framework 4.0 была выпущена 12 апреля 2010 года вместе с окончательной версией Visual Studio 2010.
NET Framework 4.5
!!! Не совместима с Windows XP и более ранними версиями Windows.
Нововведения:
· Возможность уменьшения количества перезапусков системы путем обнаружения и закрытия приложений платформы .NET Framework версии 4 во время развертывания.
· Поддержка массивов, размер которых превышает 2 гигабайта (ГБ) на 64-разрядных платформах.
· Улучшенная производительность благодаря фоновой сборке мусора для серверов. (включается автоматически).
· Фоновая компиляция по требованию (JIT), опционально доступна на многоядерных процессорах, для повышения производительности
· Возможность ограничить времени ожидания окончания работы обработчика регулярных выражений.
· Поддержка кодировки Юникод (UTF-16) в консоли; улучшения сжатия ZIP; повышение производительности при извлечении ресурсов;
· Поддержка определения и управления версиями культурных данных сортировки и сравнения строк.
· Возможность настраивать контекст отражения для переопределения поведения отражения по умолчанию
· Поддержка версии 2008 стандарта интернационализированных доменных имен
· Делегирование сравнения строк операционной системе, которая реализует Юникод 6.0, если платформа .NET Framework используется в Windows 8 (на других платформах платформа - Юникод 5.xx.)
· Возможность вычисления хэш-кода для строк на основе домена для каждого приложения.
Критика
· не рациональное использование ресурсов системы (по сравнению с другими технологиями).
· управляемый CIL-байткод, не подвергшийся обфускации, легко может быть декомпилирован в сравнении с естественным кодом, что может привести к потере коммерческой тайны или дать возможность обхода механизмов контроля соблюдения лицензионных соглашений.
· С технической точки зрения: отсутствие поддержки вызовов Streaming SIMD Extensions (SSE) в управляемом коде. Правда, в Mono решили эту проблему, добавив поддержку SIMD Extensions версии 2.2 в пространство имён Mono.Simd.
· поддержка стандартов, фактически ограничивающих кросс-платформенную реализацию .NET Framework, в результате чего полноценная реализация платформы присутствует лишь для Windows. Частично подобная труднопереносимость компенсируется разработкой нескольких версий платформы для мобильных устройств, а также урезанными версиями .NET Framework для других операционных систем. Однако, несмотря на близость стандартов, принятых при разработке этих версий, конечные реализации полной совместимостью не обладают
· версии платформы 3.5 и далее не предустанавливаются в версии Windows, предшествовавшие выходу Windows 7, что вынуждает пользователей тратить значительное время на их установку
Об’єктна модель ADO .NET
Модель об’єктів ADO .NET (ActiveX Data Objects .NET) – це набір класів, що реалізують програмні інтерфейси для полегшення підключення до баз даних та інших джерел даних.
| |||
Т ипи джерел даних
(множини класів)
Групи класів
Ієрархія класів ADO . Net
Призначення класів ADO.NET
- встановити з'єднання з базою даних;
- створити і заповнити даними об'єкт DataSet;
- відключитися від сховища даних;
- внести зміни в дані в об'єкті DataSet
- знову встановити з'єднання з базою даних і повернути внесені зміни назад в сховище даних.
Засоби роботи з ADO . Net
| |||||
| |||||
Создание новых таблиц в БД
|
|
| |||||||||||
|
|
|
Создаем таблицу: задаем поля, свойства, Имя таблицы
Например: Tab1
Имя столбца | Тип данных | Длина | Разрешить null |
CustomerID | nchar | 5 | Нет |
CompanyName | nvarchar | 40 | Нет |
ContactName | nvarchar | 30 | Да |
ContactTitle | nvarchar | 30 | Да |
Street | nvarchar | 60 | Да |
City | nvarchar | 15 | Да |
PostalCode | nvarchar | 10 | Да |
Country | nvarchar | 15 | Да |
Phone | nvarchar | 24 | Да |
Tab2
Имя столбца | Тип данных | Длина | Разрешить null |
OrderID | int | 4 | Нет |
CustomerID | nchar | 5 | Да |
EmployeeID | int | 4 | Да |
OrderDate | datetime | 8 | Да |
RequiredDate | datetime | 8 | Да |
ShippedDate | datetime | 8 | Да |
ShipVia | int | 4 | Да |
Freight | money | 19 | Да |
ShipName | nvarchar | 40 | Да |
4.Создание отношений между таблицами
Создание копии базы данных
Файл - Сохранить все.
Файл- Закрыть решение.
В папке Projects – SDB1. sdf - скопируйте его.
Перейдите к папке, в которой хотите сохранить базу данных, и вставьте копию в эту папку
Особенности ADO.NET
1. ADO расширяет концепцию объектов-наборов записей в базе данных новым типом DataSet,
DataSet - локальная копия сразу множества взаимосвязанных таблиц.
DataSet – пассивный контейнер для данных, который обеспечивает только их хранение.
При помощи объекта DataSet пользователь может локально производить различные операции с содержимым базы данных, будучи физически рассоединен с СУБД, и после завершения этих операций передавать внесенные изменения в базу данных при помощи "адаптера данных" (data adapter);
DataAdapter определяет, что нужно поместить в пассивный контейнер DataSet
2.
|
3. ADO.NET - это библиотека управляемого кода и взаимодействие с ней производится как с обычной сборкой .NET.
Обращение к типам ADO.NET (и их членам) производится практически одинаково вне зависимости от того, какой язык используется.
Объект DataSet
Объект DataSet – это тип данных, представляющий локальный набор таблиц и информацию об отношениях между ними.
Структура объекта DataSet
DataSet - набор связанных таблиц.
DataSet на клиенте = полная копия удаленной БД
После создания объекта DataSet и его заполнения данными можно программными средствами производить запросы к нему и перемещаться по таблицам, выполнять все операции, как при работе с обычными базами данных: добавлять в таблицы новые записи, удалять и изменять существующие, применять к ним фильтры и т.п.
После того, как клиент завершит внесение изменений, информация о них будет отправлена в хранилище данных для обработки.
Создание DataSet осуществляется при помощи управляемого провайдера ( managed provider ).
Управляемый провайдер
Управляемый провайдер - это набор классов, реализующих интерфейсы, определенные в пространстве имен System.Data.
Таблица 1. Пространства имен ADO.NET
Типы пространства имен System.Data предназначены для представления данных, полученных из источника (но не для установления соединения непосредственно с источником).
N-tier - архитектура
Технология ADO.NET ориентирована на приложения N-tier - архитектуры многоуровневых приложений, которая в настоящее время стала фактическим стандартом для создания распределенных систем.
N-уровневая архитектура приложения обеспечивает модель, согласно которой разработчики могут создавать гибкие и многоразового применения. Разделяя приложений на ярусы (слои), разработчики приобретают возможность изменения или добавление определенного слоя, вместо переработки всего приложения.
Трехуровневая архитектура
Термин "уровни" используется для описания физического распределения компонентов системы на отдельные серверы, компьютеры, или сети (обработка узлов).
Термин "слои" относится к логической группировке компонентов, которые могут или не могут быть физически расположены в одном узле обработки.
Состав объекта трехуровневой архитектуры:
· уровень представления,
· уровень доступа к данным (бизнес-логика),
· уровень данных.
Модель доступа данным
Среда передачи данных:
Правила работы с данными
1.Связь с БД активна только на период выполнения запроса или хранимой процедуры.
2.При исполнении команда возвращает либо данные (набор данных), либо код ошибки.
3.Если необходимо выполнить последовательность команд: Каждая команда выполняется отдельно, последовательно одна за другой. Между выполняемыми командами соединение с базой отсутствует.
4.Команды работы с данными могут содержать параметры (параметризированные запросы):
SELECT * FROM customers WHERE (customer_id=@customerid)
5.Значения параметров могут задаваться динамически, во время выполнения приложения.
ASP.NET
ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 4.5
ASP.NET —технология динамического создания Web-страниц с помощью кода на стороне сервера.
Для создания сайтов на ASP.NET нужно знать:
· С# (или VB.NET)
· HTML
· Java Script
ASP
ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам.
Технология:
1. Пишется программа, кладется в файл на сервере
2. Браузер клиента запрашивает файл
3. Файл сначала интерпретируется сервером, на выходе производится HTML-код
4. HTML посылается клиенту
Особенности ASP
2. Программные фрагменты заключаются в скобки <% %>.
4. Используются конструкции структурного программирования (if, while, case, etc)
5. Поддерживаются объекты– Object.Property, Object.Method
6. Реализована технология встроенных объектов:Request, Response, Session, Server, Connection, Recordset
6. Можно добавлять другие компоненты
7.Расширение .asp
Ввод - Вывод
Вывод :
Response.Write("<h2>Hello, world!</h2>").
Response.Buffer - регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы
Response.Redirect - перенаправляет браузер на другую страницу
Ввод
Программа на ASP получает данные из других страниц, либо через URL
Передаваемые параметры помещаются во входной поток и доступны через объект Request
передать переменную var в программу test.asp
test.asp?var=abc
получить значение этой переменной
var = Request("var")
Несколько переменных
test.asp?var1=abc&var2=def
Формы HTML
Начало формы
Конец формы
Код в вызывающей странице:
<form method="get" action="test.asp">
<input type=text name="var1" value="default">
<input type=hidden name="var2" value="var2value">
<input type=submit value="Submit Form">
</form>
Формы HTML используются для организации диалога с пользователем.
Поддерживаются стандартные элементы управления:
· INPUT (с параметром TYPE=)
· SELECT
· TEXTAREA
Сессия
Сессия – это еще один метод передачи данных между страницами. Одна страница пишет данные в сессию, другая – берет потом оттуда.
объект Session создается для каждого нового пользователя
Сессия стартует, когда новый пользователь обращается к любому asp-файлу приложения. Сессия заканчивается при отсутствии активности пользователя в течение 20 минут, либо по явной команде.
Записать данные в этот объект
Session("var") = var
Считать данные
var = Session("var")
Объект Application
Application существует в единственном экземпляре и может использоваться всеми страницами приложения.
Application("var") = var
var = Application("var")
Управление приложением
4 события: старт/стоп приложения и старт/стоп каждой сессии
Для реализации этих событий предназначен файл global.asa (должен располагаться в корневом каталоге приложения)
Стандарт global.asa
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnStart
END SUB
SUB Application_OnEnd
END SUB
SUB Session_OnStart
END SUB
SUB Session_OnEnd
END SUB
</SCRIPT>
Работа с базами данных
технологии: ODBC, OLE DB, ADO
пример:
<%
Dim Conn, RS, strSQL, strOut
strOut = ""
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Data-Source-Name"
Set RS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM AGENTS ORDER BY USER_ID"
RS.Open strSQL, Conn
RS.MoveFirst
strOut = strOut & "<P>Here is the data:"
strOut = strOut & "<TABLE BORDER=""1"">"
strOut = strOut & "<TR><TH>USER_ID</TH><TH>Name</TH></TR>"
Do While Not RS.EOF
strOut = strOut & "<TR>"
strOut = strOut & "<TD>" & RS.Fields("USER_ID") & "</TD>"
strOut = strOut & "<TD>" & RS.Fields("NAME") & "</TD>"
strOut = strOut & "</TR>"
RS.MoveNext
Loop
strOut = strOut & "</TABLE>"
strOut = strOut & "<HR>"
strOut = strOut & "That's it!"
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write strOut
%>
Принципы ASP.NET
Расширения
· ASP.NET AJAX
· ASP.NET MVC Framework
↑ Счет версий ASP.NET происходит параллельно с .NET Framework.
Пример манифеста.
// Metadata version: v2.0.50727 .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 2:0:0:0 } .assembly extern Microsoft.VisualStudio.HostingProcess.Utilities.Sync { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 9:0:0:0 } .assembly vshost { // пользовательские атрибуты (добавляются автоматически) .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2E C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20 // ..... Microsoft 43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 41 6C 6C // Corporation. All 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 // rights reserved 2E 00 00 ) // ... .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyDefaultAliasAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72 // ...Microsoft Cor 70 6F 72 61 74 69 6F 6E 00 00 ) // poration.. .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 24 4D 69 63 72 6F 73 6F 66 74 20 28 52 29 // ..$Microsoft (R) 20 56 69 73 75 61 6C 20 53 74 75 64 69 6F 20 28 // Visual Studio ( 52 29 20 32 30 30 38 00 00 ) // R) 2008.. .custom instance void [mscorlib]System.Resources.NeutralResourcesLanguageAttribute::.ctor(string) = ( 01 00 05 65 6E 2D 55 53 00 00 ) // ...en-US.. .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0B 39 2E 30 2E 33 30 37 32 39 2E 31 00 00 ) // ...9.0.30729.1.. .custom instance void [mscorlib]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 0B 39 2E 30 2E 33 30 37 32 39 2E 31 00 00 ) // ...9.0.30729.1.. .custom instance void [mscorlib]System.Resources.SatelliteContractVersionAttribute::.ctor(string) = ( 01 00 07 39 2E 30 2E 30 2E 30 00 00 ) // ...9.0.0.0.. .custom instance void [mscorlib]System.Reflection.AssemblyKeyFileAttribute::.ctor(string) = ( 01 00 25 66 3A 5C 64 64 5C 74 6F 6F 6C 73 5C 64 // ..%f:\dd\tools\d 65 76 64 69 76 5C 46 69 6E 61 6C 50 75 62 6C 69 // evdiv\FinalPubli 63 4B 65 79 2E 73 6E 6B 00 00 ) // cKey.snk.. .custom instance void [mscorlib]System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 01 00 00 ) // --- Следующий настраиваемый атрибут добавлен автоматически, не следует отменять преобразование в комментарий ------- // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$.............. 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........ 07 D1 FA 57 C4 AE D9 F0 A3 2E 84 AA 0F AE FD 0D // ...W............ E9 E8 FD 6A EC 8F 87 FB 03 76 6C 83 4C 99 92 1E // ...j.....vl.L... B2 3B E7 9A D9 D5 DC C1 DD 9A D2 36 13 21 02 90 // .;.........6.!.. 0B 72 3C F9 80 95 7F C4 E1 77 10 8F C6 07 77 4F // .r<......w....wO 29 E8 32 0E 92 EA 05 EC E4 E8 21 C0 A5 EF E8 F1 // ).2.......!..... 64 5C 4C 0C 93 C1 AB 99 28 5D 62 2C AA 65 2C 1D // d\L.....(]b,.e,. FA D6 3D 74 5D 6F 2D E5 F1 7E 5E AF 0F C4 96 3D // ..=t]o-..~^....= 26 1C 8A 12 43 65 18 20 6D C0 93 34 4D 5A D2 93 ) // &...Ce. m..4MZ.. .hash algorithm 0x00008004 .ver 9:0:0:0 } .module vshost.exe // MVID: {69704547-92AE-4E10-B632-1498EB2D0B50} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0002 // WINDOWS_GUI .corflags 0x00000009 // ILONLY // Image base: 0x017D0000 |
Описание директив манифеста
Директива IL | Описание |
assembly extern <имя Сборки> | Указывает внешнюю сборку, необходимую для работы данной (ссылка на общую библиотеку классов mscorlib) |
.publickeytoken <хеш> | Маркер открытого ключа подключаемой сборки. Необходим для точной идентификации сборки. |
.ver <версия> | Определяет необход.версию подключаемой сборки |
.assembly <имя сборки> | Указывает имя сборки. Текстовая строка |
.hash algorithm | Определяет алгоритм, по которому рассчитывался маркер открытого ключа данной сборки. |
.ver 0:0:0:0 | Определяет версию сборки. Основной и дополнительный номера версии, номер редакции и номер построения. |
.public | Открытый ключ, встраиваемый в сборку |
.culture | Указывает региональную принадлежность сборки и язык |
.module <имя файла> | Указывает имя основного модуля данной сборки. |
module extern<имя Файла> | Указывает имя внешнего модуля входящего в данную сборку, на который есть ссылки в коде данной сборки |
.imagebase <адрес> | Указывает адрес, по которому следует загружать данную сборку в адресное пространство приложения. |
.subsystem <константа> | Указывает на тип приложения. В нашем случае число 3 указывает на то, что приложение консольное. |
.file alignment <512> | Определяет выравнивание, использовавшееся компилятором при создании данного файла. |
.corflags <константа> | Директива является зарезервированной. |
.mresource public <название ресурса> | Указывает на то, что к сборке будет подключен общедоступный ресурс с заданным именем. |
.file <имя файла> | Определяет имя файла в котором располагается ресурс. |
stackreserve | Задает общий объем виртуальной памяти, выделяемой под стека в байтах. Для x86 и x64 по умолчанию 1 МБ. Используется для исполняемого файла. |
.entrypoint | Указывает на то, что точка входа в приложение будет располагаться в данном модуле. |
Сборка. Сведения о версии
Синтаксис Номера версии сборки :
<основная версия >.< дополнительная версия> .<номер построения>.<редакция>
Например, номер версии "2.3.1354.0"
число "2" -код основной версии, "3" — дополнительный (уточняющий) номер версии, "1354" — номер построения, а "0" — номер редакции.
Синтаксис Информационной версии сборки :
Представляет собой строку, которая добавляет к сборке дополнительные данные и служит только для информации. Не используется на этапе выполнения. Можно задать любой текст. Если строка имеет формат отличный от формата номера версии сборки или если она содержит подстановочные знаки, при компиляции появится предупреждение.
Например: "Среда CLR версии 2.0" или "Элемент управления NET 3.5".
В Microsoft Windows эта информация отображается в элементе "Версия продукта" на вкладке "Версии" в диалоговом окне свойств файла
С целью управления версиями среда выполнения разделяет обычные сборки и сборки со строгими именами. Проверка версий производится только для сборок со строгими именами.
Закрытые и общие сборки
Сборка считается закрытой ( private deployment ), если она не предназначена для использования другими приложениями.
Помещают в базовый каталог приложения или в его подкаталог
Проблемы безопасности:
· Коллизия имен (возможен такой вариант что ваша сборка использует типы с теми же именами, что используются в разделяемой сборке).
· Вопрос совместимости.
Сборка является общей (глобальной, разделяемой), если предполагается ее использование с другими приложениями.
Разделяемые сбороки размещают в поддереве файловой системе
( GAC - global assembly cache) - глобальном кеше сборок.
С:\Windows\Assembly\GAC ).
Глобальный кэш сборок — это кэш команд компьютера, предоставляемый структурой .NET Framework и используемый для хранения сборок, к которым требуется предоставить общий доступ для нескольких приложений на компьютере.
6.Способы развертывания сборки в глобальном кэше сборок:
· Использование программы установки, предназначенной для работы с глобальным кэшем сборок. Данный подход является предпочтительным при установке сборок в глобальный кэш.
· Использование инструмента разработчика под названием средство глобального кэша сборок (Gacutil.exe), предоставляемого в SDK (пакет средств разработки программного обеспечения) для Windows (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gasutil.exe)
· Использовать Windows Explorer для перетаскивания сборок в кэш.
Строгое имя состоит из удостоверения сборки, включающего ее простое текстовое имя, номер версии и сведения о языке и региональных параметрах (если они имеются), а также открытый ключ и цифровую подпись
Пример идентификации файла сборки
"MyTypes, Verslon=1.0.8123.О, Culture=neutral, PublicKeyToken=b77a5c561934e089" "MyTypes, Version=1.0.8123.О, Culture="en-US", PublicKeyToken=b77a5c561934e089" "MyTypes, Version=2.0.1234.0, Culture=neutral, PublicKeyToken=b77a5c561934e089-T "MyTypes, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" |
Формирование строгого имени
строгое имя состоит из набора взаимосвязанных данных, большая часть из которых указывается с помощью перечисленных ниже атрибутов уровня сборки:
· Дружественное имя сборки (которое представляет собой имя сборки без файлового расширения)
· Номер версии сборки (назначается в атрибуте [AssemblyVersion]).
· Значение открытого ключа (назначается в атрибуте [AssemblyKeyFile]).
· Значение, обозначающее культуру, которое является необязательным и может предоставляться для локализации приложения (присваивается в атрибуте [AssemblyCulture]).
· Вставляемая цифровая подпись, созданная с использованием хеш-кода по содержимому сборки и значения секретного ключа.
Утилита для генерации открытого и секретного ключей:
Sn.exe
Пример сборок, размещенных в Кэше
Common Intermediate Language
Определения
.
|
|
Задачи Сборок
| ||||||
| ||||||
Виды сборок
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
Статические сборки
В большинстве случаев приложения .NET воспринимаются системой как родные именно за счет PE формата файлов, в которых они размещаются.
Вызовы между системой и такими приложениями идут при помощи стандартных интерфейсов предоставляемых форматом PE:
Дата: 2019-02-25, просмотров: 238.