Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 720; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.008 с.) |