Назначение нескольких запускаемых проектов
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Visual Studio позволяет настроить выполнение нескольких проектов при нажатии клавиши F5 (запуск с отладкой), клавиш CTRL+F5 (запуск без отладки) или кнопки панели инструментов для запуска приложения. Таким образом можно запустить несколько сайтов, приложений или служб, которые зависят друг от друга, для обеспечения правильной работы во время сеанса отладки или для локального запуска и тестирования.
Некоторые шаблоны проектов включают несколько проектов, которые уже настроены для запуска; Например, тип проекта React и ASP.NET Core включает как клиентский проект JavaScript, так и серверный проект ASP.NET Core, который запускается при запуске.
Назначение нескольких запускаемых проектов

- Выберите решение в обозревателе решений (верхний узел).
- Выберите контекстное меню узла решения (вызываемое щелчком правой кнопки мыши), а затем пункт Свойства. Откроется диалоговое окно Страницы свойств решения.
- Разверните узел Общие свойства и выберите Запускаемый проект.
- Выберите вариант Несколько запускаемых проектов и задайте соответствующие действия.
С Docker Compose
При использовании Docker Compose для запуска контейнерных проектов на локальном компьютере используется другой метод (профили запуска) для запуска нескольких проектов.
В следующем примере показано решение WebFrontEndA с тремя проектами, внешним веб-сайтом, проектом веб-API и проектом Docker Compose. На следующем снимке экрана показано, как запустить два из этих трех проектов: один с отладкой, а другой без нее.

В этом примере и любом другом сценарии Docker Compose вы выбираете docker-compose в качестве одного запускаемого проекта, но затем вы будете использовать другой способ указания проектов или служб для запуска. вам потребуется использовать профиль запуска Docker Compose, чтобы определить, какие службы следует запустить и следует ли подключить отладчик. В Visual Studio для такой настройки существует другое диалоговое окно. См. статью Запуск подмножества служб. Диалоговое окно «Страницы свойств решения» используется только для неконтейнерных решений или при использовании Docker Compose для управления запуском.
См. также
- Компиляция и сборка
- Работа с решениями и проектами
- Управление свойствами проектов и решений
Связь двух проектов в одном решении?
У меня есть проекты консольного и оконного приложений в одном решении. Мне нужно запускать из формы консоль с нужными параметрами, и я надеялся, что один проект сможет обращаться к другому (например, знать путь до его исполняемого файла), но никакой разницы с одиночными проектами не вижу. Так же не понимаю, что дает зависимость одного от другого. В чем тогда смысл общего решения, или я делаю что-то не так?
- Вопрос задан более двух лет назад
- 1131 просмотр
Комментировать
Решения вопроса 1

.NET developer (open to job offers)
Проекты в одном решении — как правило не взаимосвязаны между собой. Но если например, один проект — это библиотека dll, а второй исполняемый exe, то Вы можете подключить выходную библиотеку у исполняемого файла.
В этом случае можно одновременно «пилить» оба проекта.
Также может быть сложный проект, состоящий из нескольких исполняемых файлов. Например — программа для использования клиентом и административная панель.. Логично их объединить в одно решение. Если у этих проектов есть общие библиотеки, то их также можно добавить новыми проектами.
Собственно организацию взаимодействия нескольких проектов в одном решении Вы настраиваете сами.
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 1

Василий Банников @vabka Куратор тега C#
Токсичный шарпист
Решение — это просто способ удобно сгруппировать несколько проектов. Оно нужно только для IDE.
Взаимосвязи между проектами делаются через PackageReference
Как в одном проекте создать несколько разных программ на C#?
Вопрос: как в одном проекте создать несколько разных программ. Например в одном файле под названием learning сделать 1 проект программу с switch-case, а в другом циклы for while do while. И так чтобы работал тот, на котором ты открыт, а не писало ошибку нет точки входа?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Несколько разных файлов с роутами в разных папках в одном проекте
Здравствуйте. Возник вопрос. Могут ли быть несколько файлов с роутами в разных папках одного.

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

Как объединить в одном проекте несколько форм?
Мне необходимо увязать 3 формы между собой. У меня есть в проекте одна форма — она главная и.
Как сделать несколько задач в одном проекте?
Можно ли оформить решение всех задач из лабораторной работы в одном проекте? Если да, то как.
Как создать отдельные файлы для компиляции в одном проекте в C++?
Всем привет. Недавно перешел с Python на C++. И при изучении заметил, чтобы создать файл, где нужно.
2250 / 2215 / 478
Регистрация: 17.02.2019
Сообщений: 3,708
Rattsco, а там ошибка так просто выпала в проекте 1-st?
Добавлено через 5 минут
Ошибка CS5001 C#
Регистрация: 13.01.2022
Сообщений: 14
У меня есть два проекта с методом main, я только начал изучать c#, поэтому я не знаю на что его ещё заменить и, как я могу предположить, у меня в двух объектах есть метод main, и программа не понимает и выдаёт что не понятно, где всё таки начинаться, а если получалось как-то запустить программу, открыв на 2-ом проекте, выдавал работу только 1-ый
![]()
10169 / 6152 / 1448
Регистрация: 25.05.2015
Сообщений: 18,665
Записей в блоге: 14
В решении, а не в проекте, создают новые проекты. И каждый проект уже может содержать свой Main.
В одном проекте можно, но для вас слишком сложно.
2250 / 2215 / 478
Регистрация: 17.02.2019
Сообщений: 3,708
Может видео на ютуб дать если разрешат модераторы
Добавлено через 5 часов 54 минуты
Rattsco, я плохо в С# вроде так в строке 11 должно быть
static void Main(string[] args)
Если я не прав поправте меня
![]()
10169 / 6152 / 1448
Регистрация: 25.05.2015
Сообщений: 18,665
Записей в блоге: 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
using System.Globalization; using System.Reflection; MethodInfo GetMain(Type type) return type.GetMethod("Main", BindingFlags.Static string GetName(Type type) var propertyInfo = type.GetProperty("Name", BindingFlags.Static var programs = Assembly.GetExecutingAssembly().GetTypes() .Where(x => x.Name == "Program" && x != typeof(Program)) .Select(x => new { Type = x, EntryPoint = GetMain(x), Name = GetName(x) }) .Where(x => x.EntryPoint != null) .OrderBy(x => x.Type.FullName) .ToArray(); while (true) { Console.Clear(); Console.WriteLine("Menu:"); for (var i = 0; i programs.Length; i++) Console.WriteLine($": "); Console.Write("Choose: "); var input = Console.ReadLine(); if (int.TryParse(input, NumberStyles.Integer, CultureInfo.InvariantCulture, out var selected)) { if (selected >= 0 && selected programs.Length) { Console.Clear(); Console.WriteLine($"Running "); Console.WriteLine(new string('-', 10)); programs[selected].EntryPoint.Invoke(null, new object?[] { args }); Console.WriteLine(new string('-', 10)); Console.WriteLine("Press Enter to continue. "); Console.ReadLine(); } } else { break; } }
Demo1\Program.cs:
1 2 3 4 5 6 7 8 9 10 11
namespace ConsoleApps.Demo1; internal class Program { public static void Main(string[] args) { Console.WriteLine("Hello, World 1"); } public static string Name => "Demo 1"; }
Demo2\Program.cs:
1 2 3 4 5 6 7 8 9 10 11
namespace ConsoleApps.Demo2; internal class Program { public static void Main(string[] args) { Console.WriteLine("Hello, World 2"); } public static string Name => "Demo 2"; }
Вложения
| ConsoleApps.zip (3.1 Кб, 5 просмотров) |
Вопрос по Visual Studio C#. Как в одном решении делать несколько «проектов»?

В методичке задание сделать АТД «Дек». Под это задание выделяется несколько лабораторных работ. Во второй лабе надо сделать сам дек. К нему сделать тесты. В третьей лабе в этом деке реализовать интерфейсы IEnumerable и IClonable. К новым методам сделать тесты и т.д. У меня в Visual Studio в решении есть консольное приложение с классом дека и библиотека классов с тестами к классу дек. (Lab2 и Lab2_Test на скрине). Я хочу 3 лабу сделать в этом же решении, НО доделав сам дек уже в другом консольном приложении и тесты к классу. Т.е. Заходишь в проект Lab2 и там видишь первоначальный класс дек и класс Program, в котором используется класс дек. Заходишь в Lab_Test, а там тесты к классу дек из проекта Lab2. Заходишь в Lab3 а там тот же самый дек, только с реализованными интерфейсами. Заходишь в Lab3_Test, а там те же самые тесты + тесты для методов, реализующих наследуемые интерфейсыю Я так и сделал, НО: В обозревателе тестов количество тестов удвоилось. Там тесты из Lab2_Test и из Lab3_Test. Я хочу, чтобы в обозревателе тестов выполнялись тесты того проекта, который выделен (в обозревателе решений). Когда я компилирую, то запускается консольное приложение из Lab2. Я хочу, чтобы компилировался тот проект, который выделен (в обозревателе решений). Такое в Visual Studio вообще можно сделать (без git)? Если можно, то как?
Отслеживать
задан 6 янв 2018 в 12:10
419 2 2 золотых знака 8 8 серебряных знаков 19 19 бронзовых знаков
Ну сделайте две группы тестов, и запускайте нужную. Делов-то!
6 янв 2018 в 15:53
Я хочу, чтобы в тестах 3 лабы были тесты из второй лабы (соответственно названия у них будут идентичны) и тесты, которые я допишу. И эти тесты тестировали класс в Lab3. Я так и сделал. НО при запуске тестов запускаются и отображаются тесты из Lab2_Test и Lab3_Test. Это забивает панель. Я хочу видеть тесты только из 3 лабы.
