Запуск программы C# в Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Способ запуска программы зависит от того, с чего вы начинаете, от типа программы и от необходимости использовать отладчик. В самом простом случае для сборки и запуска открытого проекта в Visual Studio выполните следующие действия.
- Нажмите клавишу F5, выберите Отладка>Начать с отладки в меню Visual Studio или выберите зеленую стрелку Запуск и имя проекта на панели инструментов Visual Studio.
- Для запуска без отладки нажмите клавиши CTRL+F5 или выберите Отладка>Запуск без отладки в меню Visual Studio.


Запуск из проекта
Вы можете запустить проект C# или CSPROJ-файл, если это готовая к запуску программа. Если проект содержит файл C# с методом Main , а его выходные данные представляют собой исполняемый файл (EXE), скорее всего, он запустится в случае успешной сборки. Более новые версии C# не требуют Main метода. Вместо этого выполнение программ начинается с инструкций верхнего уровня. См. статью «Программы без основных методов».
- Если код программы уже находится в проекте Visual Studio, откройте проект. Для этого дважды щелкните CSPROJ-файл в проводнике Windows или выберите пункт Открыть проект в Visual Studio, найдите CSPROJ-файл и выберите его.
- После загрузки проекта в Visual Studio, если решение Visual Studio содержит несколько проектов, убедитесь, что для проекта задан метод Main , чтоб он считался запускаемым проектом. Чтобы задать запускаемый проект, щелкните имя проекта или узел правой кнопкой мыши в Обозревателе решений, затем выберите пункт Назначить запускаемым проектом в контекстном меню.


Запуск из кода
Если вы выполняете запуск из листинга кода, файла кода или небольшого числа файлов, сначала убедитесь, что запускаемый код происходит из надежного источника и является запускаемой программой. Любое приложение с Main методом, вероятно, является запущенной программой, но с текущей версией C#, программы без Main методов с операторами верхнего уровня также могут выполняться. Вы можете использовать шаблон консольного приложения, чтобы создать проект для работы с приложением в Visual Studio.
Листинг кода для отдельного файла
- Запустите Visual Studio и откройте пустой проект консольного приложения C#.
- Замените весь код в CS-файле проекта содержимым листинга кода или файла.
- Переименуйте CS-файл проекта в соответствии с именем файла кода.
Несколько листингов кода или файлов на диске
- Запустите Visual Studio и создайте новый проект соответствующего типа. Если вы не уверены, используйте консольное приложение C#.
- В новом проекте замените весь код в файле кода проекта на содержимое первого листинга кода или файла.
- Переименуйте файл кода проекта в соответствии с именем файла кода.
- Для каждого оставшегося файла кода:
- Щелкните правой кнопкой мыши узел проекта в Обозревателе решений и выберите пункт Добавить>Существующий элемент или выберите проект и нажмите клавиши SHIFT+ALT+A.
- Найдите и выберите файл кода, чтобы импортировать его в проект.
Несколько файлов в папке
Если у вас есть папка с большим количеством файлов, сначала найдите файл проекта или решения. Программы, создаваемые Visual Studio, содержат файлы проекта и решения. В проводнике Windows найдите файлы с расширением .csproj или .sln. Дважды щелкните CSPROJ-файл, чтобы открыть его в Visual Studio. См. раздел Запуск из проекта или решения Visual Studio.
Если код находится в другой среде разработки, файл проекта отсутствует. Откройте папку, выбрав Открыть>Папка в Visual Studio. См. раздел Разработка кода без использования проектов и решений.
Запуск из репозитория Azure DevOps или GitHub
Если код, который вы хотите запустить, находится в GitHub или в репозитории Azure DevOps, можно использовать Visual Studio, чтобы открыть проект непосредственно из репозитория. См. раздел Открытие проекта из репозитория.
Запуск программы
Чтобы начать сборку программы, нажмите зеленую стрелку запуска на панели инструментов Visual Studio либо нажмите клавиши F5 или CTRL+F5. С помощью кнопки Запуск или F5 можно запустить программу в отладчике.
Visual Studio пытается выполнить сборку кода в проекте и запустить его. Если сборка завершится неудачно, ознакомьтесь со следующими разделами, чтобы понять, как успешно собрать проект.
Устранение неполадок
Код может содержать ошибки. Или код может быть правильным, но может быть, он зависит от отсутствующих сборок или пакетов NuGet или предназначен для другой версии .NET. В таких случаях вы можете легко исправить сборку.
Добавление ссылок
Для успешной сборки код должен быть правильным и иметь правильные ссылки на библиотеки или другие зависимости. Красные волнистые линии в коде или записи в списке ошибок показывают ошибки еще перед компиляцией и запуском программы. Если возникают ошибки, связанные с неразрешенными именами, возможно, потребуется добавить ссылку и/или директиву using . Если код ссылается на отсутствующие сборки или пакеты NuGet, необходимо добавить эти ссылки в проект.
Visual Studio пытается помочь определить отсутствующие ссылки. Если имя не разрешено, в редакторе появляется значок лампочки. Если щелкнуть лампочку, можно увидеть некоторые рекомендации по устранению проблемы. Возможные исправления:
- Добавление директивы using
- Добавление ссылки на сборку
- Установка пакета NuGet
Добавление директивы using
Ниже приведен пример отсутствующей директивы using . Добавьте using System; в начало файла кода, чтобы разрешить неразрешенное имя Console .


Более новые версии C# поддерживают неявные директивы using для некоторых часто используемых пространств имен, поэтому если при создании проекта этот параметр не нужен.
Добавление ссылки на сборку
Ссылки .NET могут быть сборками или пакетами NuGet. В исходном коде издатель или автор обычно объясняет, какие сборки требуются коду и от каких пакетов он зависит. Чтобы добавить ссылку в проект вручную, в Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку. В диспетчере ссылок найдите и добавьте требуемую сборку.


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


Если это не решает проблему и Visual Studio не удается найти пакет, попробуйте выполнить поиск в Интернете. См. раздел Установка и использование пакета NuGet в Visual Studio.
Использование правильной версии .NET
Так как разные версии .NET Framework обеспечивают некоторую степень обратной совместимости, более новая платформа может выполнять код, написанный для более старой платформы, без каких-либо изменений. Но иногда необходимо использовать определенную версию платформа .NET Framework. Вам может потребоваться установить определенную версию .NET Framework или .NET Core. См. раздел Изменение Visual Studio.
Сведения об изменении целевой платформа .NET Framework версии см. в разделе «Изменение целевой платформы». Дополнительные сведения см. в разделе Устранение неполадок, связанных с настройкой для определенных версий платформы .NET Framework.
Следующие шаги
- Изучите среду разработки Visual tudio, прочитав раздел Добро пожаловать в интегрированную среду разработки Visual Studio.
- Создание первого приложения C#.
Как запустить cs файл из командной строки
Для написания программ на С# годится любой текстовый редактор, например стандартный Блокнот. Откройте блокнот и напишите следующее
// Файл project01.cs// Первая консольная программаclass ConsoleProgram < public static void Main() < System.Console.WriteLine("Мяу, куда подевалась мышь?"); >>Файлы исходного кода С# имеют расширение .cs («с sharp»). Сохраните файл с написанным текстом как project01.cs. Вы написали код для самой простой консольной программы. Но это еще не сама программа. Для создания программы используется так называемый компилятор.
Компилятор
Компилятор С#, который служит для создания исполняемых файлов EXE, называется csc.exe. Чтобы получить исполняемый файл, скомпилируйте файл project01.cs такой командной строкой:
csc project01.cs
Компилятор создаст файл project01.exe, который можно запускать из командной строки.
Флаги компиляции компилятора командной строки C#
На самом деле компилятор имеет несколько флагов, позволяющих создавать различные типы файлов /doc Комментарии из исходника будут записаны в файл в формате XML /out Указывается имя создаваемого двоичного файла. Если параметр опущен, то имя будет таким же, как у файла с исходным кодом (с расширением .cs) /target:exe Тип создаваемого файла — консольное приложение. Принят по умолчанию, поэтому можно не указывать /target:library Создание файла в виде библиотеки DLL с содержанием манифеста /target:module Создание DLL без манифеста. /target:winexe Стандартное оконное приложение
При компиляции флаг /target ставится до указания имени файла
csc /target:exe cats.cs
Параметр /target можно сократить до /t
Ссылки на внешние сборки
Бывает так, что создаваемое приложение использует типы, которые находятся во внешних, совершенно отдельных сборках С#. В нашем примере используемый класс System.Console былрасположен в библиотеке базовых типов mscorlib.dll, к которой компилятор обращается автоматически. Однако иногда нужные нам классы расположены в других сборках. Ситуацию, которая при этом возникает, лучше продемонстрироватьна примере. Предположим, что наше приложение TestApp не только выводит строки на системную консоль, но и генерирует графическое окно сообщения.
Листинг файла TestApp.cs
using System.Windows.Forms; class TestApp< public static void Main() < System.Console.WriteLine("Кошкин дом"); //Добавим новую строчку MessageBox.Show("Мяу"); >>Обратите внимание, что теперь в коде приложения мы обращаемся к классу в пространстве имен System.Windows.Forms. Чтобы компилятор смог обнаружить класс MessageBox, нам потребуется явно указать внешнюю сборку System.Windows.Forms.dllв командной строке. Для указания внешних сборок используется параметр /reference:имя_внешней_сборки (/reference можно сократить до /r). В нашем случае командная строка компилятора должна выглядеть так:
csc /r:System.Windows.Forms.dll TestApp.cs
Компиляция нескольких исходных файлов
При создании всех предыдущих вариантов нашего приложения использовался единственный исходный файл. Однако бывает ситуация, когда исходный код распределен по нескольким файлам. Давайте создадим такую ситуацию сами. Создадим дополнительный исходный файл HelloMsg.cs с классом HelloMessage
Пример файла HelloMsg.cs
using System;using System.Windows.Forms;class HelloMessage< public void Speak() < MessageBox.Show("Мяу"); >>И изменим предыдущий файл
using System.Windows.Forms; class TestApp< public static void Main() < System.Console.WriteLine("Кошкин дом"); //Убираем строку //MessageBox.Show("Мяу"); //Добавляем новые строчки HelloMessage h = new HelloMessage(); h.Speak(); >>При компиляции приложения мы можем явно указать все исходные файлы:
csc /r:System.Windows.Forms.dll TestApp.cs hellomsg.cs
Однако есть и еще один способ компилировать приложение из нескольких исходников. Компилятор csc.exe поддерживает символ подстановки (*). При использовании этого символа мы сообщаем компилятору, что ему необходимо включить в приложение все файлы с указанным нами расширением, которые находятся в текущем каталоге:
csc /r:System.Windows.Forms.dll /out:TestApp.exe *.cs
Поскольку компилятор уже не сможет воспользоваться именем приложения по умолчанию, при использовании подстановочного символа (*) нам придется обязательно использовать параметр /out.
А что делать, если в нашем приложении используются классы сразу из несколькихвнешних сборок? Просто перечислить все эти сборки через точку с запятой, вот так:
csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs
В нашем приложении сборка 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):
ildasm project01.exe
C# чувствителен к регистру. Точка входа в программу на С# — функция Main (пишется с заглавной буквы). Пустые скобки показывают, что Main не имеет параметров, а ключевое слово void — что ОНЕ не возвращает значения. Ключевое слово public неявляется здесь строго необходимым; программа будет компилироваться и запускаться и без него.Main располагается внутри определения класса. Класс — основной структурный и организационный элемент объектно-ориентированных языков программирования, подобных С#. Проще всего сказать, что класс — совокупность связан-ных между собой кода и данных. У файла будет такое же имя, как и у класса, но с расширением .cs. Это соглашениеоб именах не является необходимым в С#; эта концепция появилась в Java и достаточно удобна.
System.ConsoleWriteLine напоминает вызов функции, и это, действительно, так.Данная функция принимает один параметр — текстовую строку — и показывает ее на консоли, в окне командной строки. Если вы скомпилируете и запустите программу, она покажет строку:
Мяу, куда подевалась мышь?
и завершит работу.
Длинное имя функции System.Console.WriteLine состоит из таких частей:• System — пространство имен;• Console — класс, определенный в этом пространстве имен;• WriteLine — метод, определенный в этом классе; метод — то же самое, что ифункция, процедура или подпрограмма.
Использование пространств имен позволяет уменьшить объем ввода с клавиатуры. Для этого предназначено ключевое слово using. Пространство имен указывается один раз в операторе using, затем это пространство имен можно не вводить при обрашении к егоклассам. Вот альтернативный вариант программы:
// Использование пространства именusing System;class ConsoleProgram < public static void Main() < Console.WriteLine("Мяу, куда подевалась мышь?"); >>Можно использовать псевдонимы с ключевым словом using:using Tom = Cat.SharpClaws;using Pussy = Kitten.GreenEyes;Теперь к этим двум классам можно обращаться как:
Tom.BirthdayPussy.Birthday
Компиляция в командной строке
Как правило, для создания программ на C# разработчики используют Visual Studio или какие-то другие IDE типа Rider от компании JetBrains. Но все подобные IDE, хотя и облегчают разработку, в то же время скрывают множество мельчайших подробностей по созданию программ. И в реальности мы даже можем обойтись без той же Visual Studio, используя только компилятор C#. Рассмотрим, как использовать компилятор и компилировать приложение из командной строки.
Файл с программой на C# по сути представляет обычный текстовый файл, который содержит код на языке C# и который имеет расширение.cs. Поэтому создадим на диске C какую-нибудь новую папку. Назовем ее, к примеру,csharp. В этой папке создадим новый текстовый файл, который назовемProgram.cs.
Откроем только что созданный файл Program.cs в каком-нибудь текстовом редакторе (например, во встроенном блокноте или Notepad++) и определим в файле следующее содержимое:
Сохраним файл. Эта примитивная программа на C#, которая во многом аналогична той, что рассматривалась в прошлой теме. Выражение DateTime.Now возвращает текущую дату и время. То есть в данном случае мы получаем дату и время и выводим на консоль.
Теперь программу надо скомпилировать. Когда мы устанавливаем .NET Framework (отдельно или вместе с Visual Studio), то в папкеC:\Program Files (x86)\MSBuild\14.0\Bin(для C# 6) или вC:\Windows\Microsoft.NET\Framework\v4.0.30319(для C# 5) мы можем найти файлcsc.exe. Это и есть компилятор языка C#.
Используем компилятор. Для этого откроем командную строку. С помощью команды
cd C:\csharpПерейдем к папке, в которой хранится файл Program.cs.
Далее введем передадим этот файл компилятору с помощью команды (для C# 6):
"C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe" Program.csПоскольку название папки Program Files состоит из нескольких слов, то весь путь к ней берется в кавычки. А после проблема указывается название файла программы.
Если на компьютере установлена VS 2013 и старше (то есть C# 5 и старше), то соответственно используется другая команда:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe Program.cs
После выполнения команды в папке C:\csharp появится файл программы Program.exe, который можно вручную запустить. Либо мы можем запустить его в той же командной строке, введя команду «Program.exe». По умолчанию исполняемый файл по названию совпадает с файлом исходного кода, только расшрения отличаются. И программа выведет текущую дату и время.

results matching » «
No results matching » «
компиляция программы через командную строку
Компилятор — это программа, которая преобразует код, написанный на одном из языков программиро-вания (в данном случае, это язык C#) в машинный код. Сам компилятор csc.exe находится в пакете .NET Framework, а не в самой среде Visual Studio. Поэтому, написать код программы можно в любом текстовом редакторе, а скомпилировать и запустить программу на выполнение можно из командной строки. Для этого нужно задать путь, чтобы вызывать компилятор из командной строки, не вводя полный путь расположения файла csc.exe.
Найдите компилятор csc.exe. Windows + E, выберите Локальный диск C, в строке поиск введите csc.exe. Выделите нужный файл последней версии, это Framework 4.0.

Откройте его правой кнопкой мыши, выберите Свойство. Скопируйте путь.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\
Добавьте этот путь в системную переменную. Windows + Pause. Дополнительные параметры системы. Переменные среды.

Выберите системные переменные. Path. Нажмите кнопку Изменить. Введите скопированный путь ком-пилятора.
В конце точку с запятой ставить не нужно. Внимание! Введите только сам путь, файл csc.exe указывать не нужно. Нажмите ОК. Перезагрузите компьютер.