Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Компиляция нескольких файлов исходного кодаСодержание книги
Поиск на нашем сайте
В текущем примере приложение LC_Console.exe создавалось с использованием единственного файла исходного кода *.cs. Хотя определять все типы.NET в одном файле *.cs вполне допустимо, в большинстве случаев проекты формируются из нескольких файлов *.cs для придания кодовой базе большей гибкости. Чтобы стало понятнее, давайте создадим новый класс и сохраним его в отдельном файле по имени HelloMessage.cs:
// Класс HelloMessage using System; using System.Windows.Forms;
class HelloMessage { public void Speak() { MessageBox.Show("Привет!!"); } }
Изменим исходный класс Program так, чтобы в нём использовался класс этого нового типа:
using System; using System.Windows.Forms;
namespace LC_Console { class Program { static void Main() { int a = 10; Console.WriteLine(a); Console.WriteLine("Привет, мир!"); HelloMessage v = new HelloMessage(); v.Speak(); } } }
Чтобы скомпилировать файлы исходного кода на С#, необходимо их явно перечислить как входные файлы:
Рис. 5. 1. Применение команды (csc /r:System.Windows.Forms.dll LC_Console.cs HelloMessage.cs) для новой компиляции LC_Console.exe
В качестве альтернативного варианта компилятор С# позволяет использовать групповой символ (*) для включения в текущую сборку всех файлов *.cs, которые содержатся в каталоге проекта:
Рис. 5. 1. Вариант команды (csc /r:System.Windows.Forms.dll *.cs) для новой компиляции LC_Console.exe
Вывод, получаемый после запуска этой программы, идентичен предыдущей программе. Единственное отличие между этими двумя приложениями связано с разнесением логики по нескольким файлам.
6. Работа с ответными файлами в C#
Как не трудно догадаться, для создания сложного приложения С# из командной строки потребовалось бы вводить утомительное количество входных параметров для уведомления компилятора о том, как он должен обрабатывать исходный код. Для облегчения этой задачи в компиляторе С# поддерживается использование так называемых ответных файлов (response files). В ответных файлах С# размещаются все инструкции, которые должны использоваться в процессе компиляции текущей сборки. По соглашению эти файлы имеют расширение *.rsp (сокращение от response — ответ). Чтобы посмотреть на них в действии, давайте создадим ответный файл по имени LC_Console.rsp, содержащей следующие аргументы (комментарии в данном случае обозначаются символом #):
# Это ответный файл для примера
# LC_Console.exe /r:System.Windows.Forms.dll # Параметры вывода и подлежащие компиляции файлы /target:exe /out:LC_Console.ехе *.cs
Теперь при условии сохранения данного файла в том же каталоге, где находятся подлежащие компиляции файлы исходного кода на С#, все приложение можно будет создать следующим образом (обратим внимание на применение символа @):
Рис. 6. 1. Применение команды (csc @LC_Console.rsp) для новой компиляции LC_Console.exe
В случае необходимости допускается также указывать и несколько ответных RSP-файлов в качестве входных параметров (например, csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp). При таком подходе, однако, следует иметь в виду, что компилятор обрабатывает параметры команд по мере их поступления. Следовательно, аргументы командной строки, содержащиеся в поступающем позже файле *.rsp, могут переопределять параметры из предыдущего ответного файла. Последним моментом, связанным с ответными файлами, о котором необходимо упомянуть, является то, что с компилятором С# ассоциирован ответный файл csc.rsp, который используется по умолчанию и размещен в том же самом каталоге, что и файл csc.ехе (обычно это С:\Windows\Microsoft.NET\Framework\<Bepсия>, где на месте элемента <Bepсия> идёт номер конкретной версии платформы). Открыв файл csc.rsp в программе Блокнот, можно увидеть, что в нём с помощью флага /r: указано множество сборок.NET, в том числе различные библиотеки для разработки веб-приложений, программирования с использованием технологии LINQ и обеспечения доступа к данным и прочие ключевые библиотеки (помимо, конечно же, самой главной библиотеки mscorlib.dll):
Рис. 6. 2. Содержимое файла csc.rsp
При создании программ на С# с применением csc.ехе ссылка на этот ответный файл добавляется автоматически, даже когда указан специальный файл *.rsp. Из-за наличия такого ответного файла по умолчанию, рассматриваемое приложение LC_Console.ехе можно скомпилировать и c помощью следующей команды (поскольку в csc.rsp уже содержится ссылка на System.Windows.Forms.dll): Рис. 6. 3. Вариант команды (csc /out:LC_Console.exe *.cs) для новой компиляции LC_Console.exe
Стоит отметить, что в случае добавления с помощью опции /r ссылок на сборки, которые на самом деле не используются, компилятор их проигнорирует. Поэтому беспокоиться по поводу «разбухания кода» не нужно.
ГЛАВА 3. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C#
|
||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 569; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.1.100 (0.01 с.) |