Компиляция / выполнение исходного файла C # в командной строке


Ответы:


140

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.
Затем вам может понадобиться перейти в каталог, в котором находятся ваши исходные файлы.

Запустите компилятор C # следующим образом:

  c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe 
            /t:exe /out:MyApplication.exe MyApplication.cs  ...

(все в одной строке)

Если у вас есть более одного исходного модуля для компиляции, вы можете поместить его в эту же командную строку. Если у вас есть другие сборки для справки, используйте /r:AssemblyName.dll.

Убедитесь, что у вас есть статический метод Main (), определенный в одном из ваших классов, который будет действовать как «точка входа».

Чтобы запустить полученный EXE-файл, введите MyApplication, а затем <ENTER>в командной строке.

В этой статье о MSDN более подробно рассматриваются параметры компилятора командной строки. Вы можете встраивать ресурсы, устанавливать значки, подписывать сборки - все, что вы можете делать в Visual Studio.

Если у вас установлена ​​Visual Studio, в «меню Пуск»; В Visual Studio Tools вы можете открыть «Командную строку Visual Studio», которая установит все необходимые переменные среды и пути для компиляции командной строки.

Хотя это очень удобно знать, вы должны сочетать его со знанием какого-либо инструмента сборки, такого как NAnt , MSBuild , FinalBuilder и т. Д. Эти инструменты предоставляют полную среду сборки, а не только базовый компилятор.

На Mac

На Mac синтаксис похож, только компилятор C sharp только назван csc:

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ...

Затем запустить его:

$ mono MyApplication.exe

1
если я правильно помню, вы можете скомпилировать и выполнить только если у вас есть статический класс с методом Main.
CJK

Компилятор предупреждает вас в эти дни, если вы этого не сделали, но хороший момент, я добавлю это к ответу, спасибо.
ясень

5
Это круто. Нужно было скомпилировать крошечное приложение на C # и не интересоваться прикосновением к Visual Studio. Спасибо!
ColinM

1
В Win10 я нашел свой там:C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe
TrakJohnson

17

Другой способ компиляции программ на C # (без использования Visual Studio или без его установки) состоит в создании пользовательской переменной в переменных среды, а именно «PATH».

Скопируйте следующий путь в эту переменную:

"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

или в зависимости от того, какой .NET ваш компьютер.

Таким образом, вам не нужно упоминать весь путь каждый раз, когда вы компилируете код. Просто используйте

"C: \ Users \ Имя пользователя \ Desktop> csc [options] filename.cs"

или где путь вашего кода.

Теперь вы готовы идти.


15

Вы можете скомпилировать программу на C #:

c:> csc Hello.cs

Вы можете запустить программу

c:> Привет


1
Что если я использую дополнительные библиотеки? Я получаю ошибки, что сборки не найдены ... Как это исправить?
Никас Лалиас

Сначала вы должны убедиться, что путь к компилятору находится в переменных окружения.
Дама Люнгдох,

@ NikasŽalias. Например, csc Hello.cs -langversion: последняя -ссылка: System.Net.Http.dll
Алекс Ноласко

8

Для получения последней версии сначала откройте окно Powershell, перейдите в любую папку (например c:\projects\) и запустите следующую

# Get nuget.exe command line
wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe

# Download the C# Roslyn compiler (just a few megs, no need to 'install')
.\nuget.exe install Microsoft.Net.Compilers

# Compiler, meet code
.\Microsoft.Net.Compilers.1.3.2\tools\csc.exe .\HelloWorld.cs

# Run it
.\HelloWorld.exe    

Пример HelloWorld.cs

using System;

public class HelloWorld {
    public static void Main() 
    {
        Console.WriteLine("Hello world!");
    }
}

Вы также можете попробовать новый интерпретатор C #;)

.\Microsoft.Net.Compilers.1.3.2\tools\csi.exe
> Console.WriteLine("Hello world!");
Hello world!

7

Хотя, безусловно, полезно знать, как строить из командной строки, для большей части работы проще использовать IDE. C # Express Edition является бесплатным и очень хорошим за деньги ;-p

Кроме того, такие вещи, как snippy, можно использовать для запуска фрагментов кода C #.

Наконец - обратите внимание, что командная строка зависит от реализации; для MS это csc; для моно это gmcsи друзья .... Аналогично, для выполнения: это просто «exename» для версии MS, но обычно «mono exename» для mono.

Наконец, многие проекты создаются с помощью инструментов сценариев сборки; MSBuild , NAnt и др.


3
Я использую IDE. Но мне нужно было знать. Это просто не правильно, не зная! Большое спасибо за ваш ответ.
DragonBorn

1
+1 за Нант! LINQPad очень хорош для экспериментов с фрагментами кода: linqpad.net
TrueWill

6

Вот как установить MSBuild с помощью отдельного компилятора C # 7.0, который больше не входит в последнюю версию .Net Framework 4.7:

Можно ли установить компилятор C # без Visual Studio?

Тогда просто беги

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe" MyApplication.cs

скомпилировать один исходный файл в исполняемый файл.

Также обратите внимание, что .Net Core не поддерживает компиляцию одного исходного файла без предварительно сконфигурированного проекта.


5

LinqPad - это быстрый способ протестировать некоторый код на C #, и он бесплатный.


2

Вы можете создавать файлы классов в командной строке VS (чтобы загружались все необходимые переменные среды), а не в окне командной строки Windows по умолчанию.

Чтобы узнать больше о сборке командной строки с помощью csc.exe (компилятор), см. Эту статью .


2

Если вы установили Visual Studio, то у вас есть командная строка разработчика для VS. Вы можете легко построить свою программу с помощью cscкоманды и запустить приложение с именем приложения в командной строке разработчика.

Вы можете открыть командную строку разработчика, как указано ниже.

Start => Командная строка разработчика для VS

Надеюсь это поможет!



1

Как только вы напишите код C # и сохраните его. Вы можете использовать командную строку, чтобы выполнить ее так же, как и другой код.

В командной строке введите каталог, в котором находится ваш файл, и введите

Компилировать:

mcs yourfilename.cs

Выполнить:

mono yourfilename.exe 

если вы хотите, чтобы ваш файл .exe отличался от другого имени, введите

Компилировать:

mcs yourfilename.cs -out:anyname.exe 

Выполнить:

mono anyname.exe 

Это должно помочь!


1

В системах Windows используйте команду csc <filname>.csв командной строке, пока текущий каталог находится в Microsoft Visual Studio \ <Year> \ <Version>

Есть два способа:

Используя командную строку:

  1. Пуск -> Командная строка
  2. Измените каталог на папку Visual Studio, используя команду: cd C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ <Version>
  3. Используйте команду: csc /.cs

Использование командной строки разработчика:

  1. Пуск -> Командная строка разработчика для VS 2017 (здесь каталог уже установлен в папку Visual Studio)

  2. Используйте команду: csc /.cs

Надеюсь, поможет!


0

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn

здесь вы можете найти компилятор c #, который поддерживает c # 7, иначе он будет использовать компиляторы .net 4, которые поддерживают только c # 5



0

Я написал командный файл, CompileCS.cmdкоторый позволяет скомпилировать (и при желании запустить) файл C #, полный ответ, включая пакетную программу «CompileCS» , можно найти здесь. .

Его использование просто:

CompileCS /run GetDotNetVersion.cs[arg1] ... [arg9]

скомпилирует и запустит GetDotNetVersion.cs - если вы просто хотите скомпилировать его, пропустите /run параметр.

Консольное приложение GetDotNetVersion.csвзято из этого ответа .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.