Компіляція / виконання вихідного файлу 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-різний компілятор лише названий csc:

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

Потім запустити його:

$ mono MyApplication.exe

1
якщо я правильно пам'ятаю, ви можете компілювати та exe лише у вас, якщо у вас є статичний клас із методом 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 \ UserName \ Desktop> csc [options] filename.cs"

або де б не був шлях вашого коду.

Тепер вам добре піти.


15

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

c:> csc Hello.cs

Можна запустити програму

c:> Привіт


1
Що робити, якщо я використовую додаткові бібліотеки? Я отримую помилки, що збірки не знайдені ... Як це виправити?
Нікас Жаліас

Слід спочатку переконатися, що шлях до компілятора знаходиться в змінних оточення.
Дам Лінгдох

@ NikasŽalias. Наприклад csc Hello.cs -лангверсія: остання -референція: 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 # є безкоштовним та дуже хорошим за гроші ;-p

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

Нарешті - зауважте, що командний рядок є специфічним для реалізації; для МС це csc; для моно , це gmcsі друзі .... Так само для виконання: це просто "exename" для версії MS, але, як правило, "mono exename" для mono.

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


3
Я використовую IDE. Але мені потрібно було знати. Це просто не відчуває себе правильно, не знаючи! Дуже дякую за вашу відповідь.
DragonBorn

1
+1 для NAnt! 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 Command (щоб завантажуватись усі необхідні змінні середовища), а не вікно команд 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.