|
Компоновка типов в модуль
В этом разделе я покажу, как сделать из файла исходного текста с разными типа-
ми файл, пригодный для развертывания. Для начала рассмотрим такое простое
приложение:
public class App {
static public void Nain(System.String[] args) {
System.Console.WriteLine("Hi");
}
}
|
Это приложение определяет тип Арр с единственным статическим открытым
методом Main. Внутри метода Main находится ссылка на другой тип — System. Console
— тип, реализованный Microsoft. Код на языке IL, реализующий методы этого типа, находится в файле MSCorLib.dll. Таким образом, наше приложение определяет свой тип, а также использует тип, созданный другой компанией.
Чтобы скомпоновать это приложение-пример, сохраните показанный выше код.
скажем, в файле App.cs и исполните в командной строке:
csc.exe /out:App.exe /t:exe /nMSCorLib.dll App.cs
Эта команда приказывает компилятору С# создать исполняемый файл Арр.ехе (имя задано переключателем /out; Арр. ехе). Тип создаваемого файла — консольное приложение Win32 (задан переключателем /t[arget]:exe).
При обработке файла с исходным текстом компилятор С# видит ссылку на метод
WriteLine типа System. Console. На этом этапе компилятор хочет убедиться, что такой тип где-то существует и что у него есть метод WriteLine. Компилятор также проверяет, что типы аргументов, ожидаемых методом WriteLine, совпадают с предоставленными программой. Чтобы компилятор Си остался доволен, ему нужно дать набор сборок, при помощи которых он сможет разрешить все ссылки на
внешние типы, (Определение сборки будет дано чуть ниже, а сейчас можно считать, что сборка — это набор из одного или нескольких DLL-файлов). В показанной выше команде переключатель /r[eference]:HSCorLib.dll приказывает компилятору вести поиск внешних типов в сборке, идентифицируемой файлом MSCorLib.dll.
MSCorLib.dll — это особый файл, в нем находятся все основные типы, представляющие байты, целочисленные, символьные, строковые и другие значения, Фактически эти типы используются так часто, что компилятор С# ссылается на эту
сборку автоматически. Иначе говоря, следующая команда (в ней опущен переключатель /r) даст тот же результат, что и предыдущая:
csc.exe /out:App.exe /t:exe App.cs
Более того, поскольку значения, заданные переключателями командной строки
/ o u t : A p p . e x e и /t:exe, совпадают со значениями, которые компилятор С# назначает по умолчанию, следующая команда тоже даст аналогичный результат:
csc.exe App.cs
Если вы почему-то не хотите, чтобы компилятор С# ссылался на сборку MSCorLib.dll, примените переключатель /nostdlib. Так, во время исполнения следующей
команды при компиляции файла App.cs генерируется ошибка, поскольку тип
System. Console определяется в сборке MSCorLib.dll:
csc.exe /out:App.exe /t:exe /nostdlib App.cs
А теперь приглядимся к файлу App.exe, созданному компилятором С#. Что же это за файл? Для начинающих поясню: это стандартный РЕ-файл (файл в формате РЕ — portable executable). Это значит, что машина, работающая под управлением 32- или 64-разрядной версии Windows, способна загрузить этот файл и что-то с ним сделать. Windows поддерживает два типа приложений: консольные (COI)
и с графическим интерфейсом (GUI). Поскольку я указал переключатель /t: ехе, компилятор С# создает консольное приложение. Чтобы заставить компилятор
сделать приложение с графическим интерфейсом, используйте переключатель /t:winexe.
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (1 - 1 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
|
|