Что делать, если не установлена 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