Компиляция приложения из командной строки

Последнее обновление: 02.06.2012

Что делать, если не установлена Visual Studio, но так хочется что-нибуль скомпилировать.

Если установлена платформа NET и установлен .NET SDK, то это не проблема. Приложения можно скомпилировать из командной строки, воспользовавшись утилитой csc.exe. Найти эту утилиту можно в каталоге C:\Windows\Microsoft.NET\Framework\[Требуемая версия].

Для начала напишем в любом текстовом редакторе простое приложение и сохраним его в файл HelloWorld.cs:

using System;
namespace HelloWorld
{
	class HelloWorld
	{
		static void Main()
		{
			Console.Write("Введите свое имя:");
			string name = Console.ReadLine();
			Console.WriteLine("Привет {0} !", name);
			Console.ReadLine();
		}
	}
}

Теперь скомпилируем и запустим его. Допустим, путь в командной строке установлен на текущий каталог нашего файла HelloWorld.cs. Тогда введем в командную строку следующую команду (в данном случае у меня установлен 4-й фреймворк в папке v4.0.30319):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe HelloWorld.cs

Если ошибок при компиляции не возникло, то в одном каталоге с HelloWorld.cs мы увидим скомпилированный файл HelloWorld.exe.

Параметры компиляции

Компилятор может принимать следующие выходные параметры:

Параметр

Описание

/out

Присваивает имя выходной сборки. По умолчанию присваивается то же имя, что и у файла кода cs

/target:exe

Создает консольное приложение. Используется по умолчанию

/target:library

Позволяет создать библиотеку dll

/target:winexe

Позволяет создать графическое приложение. При этом консоль скрывается.

/target:module

Позволяет создать модуль

Теперь создадим простейшее графическое приложение:

using System;
using System.Windows.Forms;
namespace HelloWorld
{
	public class Program
	{
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new Form1());
		}
	}
	class Form1 : Form
	{
		TextBox textBox1;
		Button button1;
		
		public Form1()
		{
			//Создаем текстовое поле
			textBox1=new TextBox();
            textBox1.Location = new System.Drawing.Point(50, 50);
			this.Controls.Add(textBox1);
			//Создаем кнопку
			button1 = new Button();
			button1.Location = new System.Drawing.Point(60, 90);
			button1.Text = "Кнопка";
			button1.Click+=button1_Click;
			this.Controls.Add(button1);
		}
		
		private void button1_Click(object sender, EventArgs e)
		{
			if(textBox1.Text=="")
			{
				MessageBox.Show("Введите текст в текстовое поле");
			}
			else
			{
				MessageBox.Show(textBox1.Text);
			}
		}
	}	
}

Скомпилируем его с помощью строки:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:winexe WindowWorld.cs. И после запуска мы увидим нашу форму. Если бы мы не использовали target:winexe, то также скомпилировали бы графическое приложение, только тогда при запуске была видна также и консоль.

При компиляции у нас может быть ситуация, когда у нас несоклько исходных файлов, и нам нужно создать из них одно приложени. Тогда все эти файлы либо перечисляются при компиляции (csc.exe WindowWorld.cs File1.cs File2.cs File3.cs), либо если надо включить все файлы текущего каталога, то можно использовать следующую запись: csc.exe *.cs.

Также при компиляции может возникнуть необходимость включить ссылку на другую сборку. В предыдущем примере использовались ссылки из сборки System.Windows.Forms.dll. Однако все ссылки на нее, как и на еще несколько распространенных сборок, компилятр включает по умолчанию. Ссылки на большинство других сборок придется включать с помощью записи типа:csc.exe /reference:System.Windows.Forms.dll WindowWorld.cs. Если нужно включить несколько сборок, то они перечисляются друг за другом через точку с запятой:

csc.exe /reference:System.Windows.Forms.dll;System.Drawing.dll  WindowWorld.cs
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850