Компиляция приложения из командной строки
Что делать, если не установлена Visual Studio, но так хочется что-нибуль скомпилировать.
Если установлена платформа NET и установлен .NET SDK, то это не проблема. Приложения можно скомпилировать из командной строки, воспользовавшись утилитой csc.exe . Найти эту утилиту можно в каталоге C:\Windows\Microsoft.NET\Framework\[Требуемая версия].
Для начала напишем в любом текстовом редакторе простое приложение и сохраним его в файл HelloWorld.cs:
Теперь скомпилируем и запустим его. Допустим, путь в командной строке установлен на текущий каталог нашего файла HelloWorld.cs. Тогда введем в командную строку следующую команду (в данном случае у меня установлен 4-й фреймворк в папке v4.0.30319):
Если ошибок при компиляции не возникло, то в одном каталоге с HelloWorld.cs мы увидим скомпилированный файл HelloWorld.exe.
Параметры компиляции
Компилятор может принимать следующие выходные параметры:
Присваивает имя выходной сборки. По умолчанию присваивается то же имя, что и у файла кода cs
C# — Учебный курс
Для написания программ на С# годится любой текстовый редактор, например стандартный Блокнот (Notepad). Откройте блокнот и напишите следующее:
Файлы исходного кода С# имеют расширение .cs («с sharp»). Сохраните файл с написанным текстом как project01.cs. Вы написали код для самой простой консольной программы. Но это еще не сама программа. Для создания программы используется так называемый компилятор.
Компилятор
Компилятор С#, который служит для создания исполняемых файлов EXE, называется csc.exe. Чтобы получить исполняемый файл, скомпилируйте файл project01.cs такой командной строкой:
Компилятор создаст файл project01.exe, который можно запускать из командной строки.
Флаги компиляции компилятора командной строки C#
На самом деле компилятор имеет несколько флагов, позволяющих создавать различные типы файлов /doc Комментарии из исходника будут записаны в файл в формате XML /out Указывается имя создаваемого двоичного файла. Если параметр опущен, то имя будет таким же, как у файла с исходным кодом (с расширением .cs) /target:exe Тип создаваемого файла — консольное приложение. Принят по умолчанию, поэтому можно не указывать /target:library Создание файла в виде библиотеки DLL с содержанием манифеста /target:module Создание DLL без манифеста. /target:winexe Стандартное оконное приложение
При компиляции флаг /target ставится до указания имени файла
Параметр /target можно сократить до /t
Ссылки на внешние сборки
Бывает так, что создаваемое приложение использует типы, которые находятся во внешних, совершенно отдельных сборках С#. В нашем примере используемый класс System.Console был расположен в библиотеке базовых типов mscorlib.dll, к которой компилятор обращается автоматически. Однако иногда нужные нам классы расположены в других сборках. Ситуацию, которая при этом возникает, лучше продемонстрировать на примере. Предположим, что наше приложение TestApp не только выводит строки на системную консоль, но и генерирует графическое окно сообщения.
Листинг файла TestApp.cs
Обратите внимание, что теперь в коде приложения мы обращаемся к классу в пространстве имен System.Windows.Forms. Чтобы компилятор смог обнаружить класс MessageBox, нам потребуется явно указать внешнюю сборку System.Windows.Forms.dll в командной строке. Для указания внешних сборок используется параметр /reference:имя_внешней_сборки (/reference можно сократить до /r). В нашем случае командная строка компилятора должна выглядеть так:
Компиляция нескольких исходных файлов
При создании всех предыдущих вариантов нашего приложения использовался единственный исходный файл. Однако бывает ситуация, когда исходный код распределен по нескольким файлам. Давайте создадим такую ситуацию сами. Создадим дополнительный исходный файл HelloMsg.cs с классом HelloMessage.
Пример файла HelloMsg.cs
И изменим предыдущий файл
При компиляции приложения мы можем явно указать все исходные файлы:
Однако есть и еще один способ компилировать приложение из нескольких исходников. Компилятор csc.exe поддерживает символ подстановки (*). При использовании этого символа мы сообщаем компилятору, что ему необходимо включить в приложение все файлы с указанным нами расширением, которые находятся в текущем каталоге:
Поскольку компилятор уже не сможет воспользоваться именем приложения по умолчанию, при использовании подстановочного символа (*) нам придется обязательно использовать параметр /out.
А что делать, если в нашем приложении используются классы сразу из нескольких внешних сборок? Просто перечислить все эти сборки через точку с запятой, вот так:
В нашем приложении сборка System.Drawing.dll не нужна, мы добавили ее лишь для примера. Как вы, наверное, догадываетесь, в CSC предусмотрено множество других параметров командной строки. Для знакомства с ними мы рекомендуем использовать MSDN.
Полученный EXE-файл — 3 или 4 Кб в зависимости от того, помещает ли в него компилятор отладочную информацию. Исполняемый файл состоит из операторов MSIL (Microsoft Intermediate Language). При запуске программы среда CLR (Common Language Runtime) компилирует промежуточный язык в «родной» машинный код компьютера и подключает соответствующие DLL .NET. Например, если вы используете компьютер архитектуры Intel, то исполняющая среда будет генерировать 32-битный машинный код Intel x86. Посмотреть на MSIL можно, запустив дизассемблер Intermediate Language Disassembler (ildasm.exe):
C# чувствителен к регистру. Точка входа в программу на С# — функция Main (пишется с заглавной буквы). Пустые скобки показывают, что Main не имеет параметров, а ключевое слово void — что ОНЕ не возвращает значения. Ключевое слово public не является здесь строго необходимым; программа будет компилироваться и запускаться и без него. Main располагается внутри определения класса. Класс — основной структурный и организационный элемент объектно-ориентированных языков программирования, подобных С#. Проще всего сказать, что класс — совокупность связанных между собой кода и данных. У файла будет такое же имя, как и у класса, но с расширением .cs. Это соглашение об именах не является необходимым в С#; эта концепция появилась в Java и достаточно удобна.
System.Console.WriteLine напоминает вызов функции, и это, действительно, так. Данная функция принимает один параметр — текстовую строку — и показывает ее на консоли, в окне командной строки. Если вы скомпилируете и запустите программу, она покажет строку: и завершит работу.
- System — пространство имен
- Console — класс, определенный в этом пространстве имен
- WriteLine — метод, определенный в этом классе; метод — то же самое, что и функция, процедура или подпрограмма
Использование пространств имен позволяет уменьшить объем ввода с клавиатуры. Для этого предназначено ключевое слово using. Пространство имен указывается один раз в операторе using, затем это пространство имен можно не вводить при обрашении к его классам. Вот альтернативный вариант программы:
Compiling/Executing a C# Source File in Command Prompt
How do you compile and execute a .cs file from a command-prompt window?
17 Answers 17
CSC.exe is the CSharp compiler included in the .NET Framework and can be used to compile from the command prompt. The output can be an executable «.exe», if you use «/target:exe», or a DLL; If you use /target:library, CSC.exe is found in the .NET Framework directory,
e.g. for .NET 3.5, c:\windows\Microsoft.NET\Framework\v3.5\ .
To run, first, open a command prompt, click «Start», then type cmd.exe .
You may then have to cd into the directory that holds your source files.
Run the C# compiler like this:
(all on one line)
If you have more than one source module to be compiled, you can put it on that same command line. If you have other assemblies to reference, use /r:AssemblyName.dll .
Ensure you have a static Main() method defined in one of your classes, to act as the «entry point».
To run the resulting EXE, type MyApplication , followed by <ENTER> using the command prompt.
This article on MSDN goes into more detail on the options for the command-line compiler. You can embed resources, set icons, sign assemblies — everything you could do within Visual Studio.
If you have Visual Studio installed, in the «Start menu»; under Visual Studio Tools, you can open a «Visual Studio command prompt», that will set up all required environment and path variables for command line compilation.
While it’s very handy to know of this, you should combine it with knowledge of some sort of build tool such as NAnt, MSBuild, FinalBuilder etc. These tools provide a complete build environment, not just the basic compiler.
Компиляция / выполнение исходного файла C # в командной строке
Как скомпилировать и запустить файл .cs из окна командной строки?
задан 16 фев ’09, 10:02
15 ответы
CSC.exe — это компилятор CSharp, включенный в .NET Framework, и его можно использовать для компиляции из командной строки. Результатом может быть исполняемый файл «.exe», если вы используете «/ target: exe», или DLL; Если вы используете / target: library, CSC.exe находится в каталоге .NET Framework,
например, для .NET 3.5, c:\windows\Microsoft.NET\Framework\v3.5\ .
Чтобы запустить, сначала откройте командную строку, нажмите «Пуск», затем введите cmd.exe .
Затем вам может потребоваться cd в каталог, в котором хранятся ваши исходные файлы.
Запустите компилятор C # следующим образом:
(все в одной строке)
Если у вас есть более одного исходного модуля для компиляции, вы можете поместить его в ту же командную строку. Если у вас есть другие сборки для ссылки, используйте /r:AssemblyName.dll .
Убедитесь, что в одном из ваших классов определен статический метод Main (), который действует как «точка входа».
Чтобы запустить полученный EXE, введите MyApplication , с последующим <ENTER> с помощью командной строки.
Эта статья в MSDN более подробно рассматриваются параметры компилятора командной строки. Вы можете встраивать ресурсы, устанавливать значки, подписывать сборки — все, что вы могли делать в Visual Studio.
Если у вас установлена Visual Studio, в меню «Пуск»; в инструментах Visual Studio вы можете открыть «командную строку Visual Studio», в которой будут настроены все необходимые переменные среды и пути для компиляции из командной строки.
Хотя это очень удобно знать, вы должны объединить это со знанием какого-либо инструмента сборки, такого как NAnt, MSBuild, Финалбилдер и т.д. Эти инструменты предоставляют полную среду сборки, а не только базовый компилятор.
На Mac
На Mac синтаксис аналогичен, только назван только компилятор C sharp csc :