Проекту не известно как запустить профиль consoleapp1
Перейти к содержимому

Проекту не известно как запустить профиль consoleapp1

  • автор:

Отладка приложений .NET в WSL с помощью Visual Studio

Вы можете легко запускать и отлаживать приложения .NET Core и .NET 5+ в Linux, не выходя из Visual Studio с помощью WSL. Если вы разрабатываете кросс-платформенные приложения, этот метод предоставляет простой способ тестировать большинство целевых сред.

Для пользователей Windows .NET, разрабатывающих приложения для Linux, WSL 2 — это оптимальное сочетание реалистичной рабочей среды и высокой производительности. В Visual Studio вы уже можете выполнять отладку в удаленной среде Linux, используя удаленный отладчик или контейнеры с помощью соответствующих средств. Эти варианты подойдут, если больше всего необходимо достичь реалистичных условий. Когда более важен простой и быстрый внутренний цикл, WSL является отличным вариантом.

Не ограничивайтесь одним методом. У вас может быть профиль запуска для Docker и WSL в одном проекте, и вы можете выбрать тот, который подходит для конкретного типа запуска. После развертывания приложения всегда можно подключить удаленный отладчик в случае возникновения проблемы.

Начиная с Visual Studio 2019 версии 16.11 Preview 3, цель отладки WSL 2 была переименована в WSL.

Необходимые компоненты

  • Visual Studio 2019 v16.9 Preview 1 или более поздние версии с отладкой .NET с дополнительным компонентом WSL. Чтобы проверить наличие компонента WSL, выберите Сервис>Получить средства и компоненты. В Visual Studio Installer убедитесь, что компонент установлен, выбрав вкладку Отдельные компоненты и введя WSL в поле поиска. В некоторых версиях Visual Studio дополнительный компонент включен по умолчанию с некоторыми рабочими нагрузками .NET.
  • Установка WSL.
  • Установленный дистрибутив по вашему усмотрению.

Запуск отладки с WSL

WSL launch profile in the launch profile list

  1. После установки необходимых компонентов откройте веб-приложение ASP.NET Core или консольное приложение .NET Core в Visual Studio. Вы увидите новый профиль запуска с именем WSL:
  2. Выберите этот профиль, чтобы добавить его в файл launchSettings.json. В следующем примере показаны некоторые ключевые атрибуты в файле.

Примечание. Начиная с Visual Studio 2022 Preview 3, имя команды в профиле запуска изменилось с WSL2 на WSL.

"WSL": < "commandName": "WSL", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": < "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" >, "distributionName": "" > 
"WSL": < "commandName": "WSL2", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": < "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" >, "distributionName": "" > 

Протестированы и поддерживаются только Ubuntu и Debian. Другие дистрибутивы, поддерживаемые .NET, должны работать, но для этого требуется вручную установить среду выполнения .NET и cURL.

Выбор конкретного дистрибутива

По умолчанию профиль запуска WSL 2 использует стандартный дистрибутив, заданный в файле wsl.exe. Если нужно запустить профиль для другого конкретного дистрибутива, независимо от используемого по умолчанию, можно изменить профиль запуска. Например, если вы отлаживаете веб-приложение и хотите проверить его в Ubuntu 20.04, профиль запуска будет выглядеть следующим образом:

"WSL": < "commandName": "WSL", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": < "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" >, "distributionName": "Ubuntu-20.04" > 
"WSL": < "commandName": "WSL2", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": < "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" >, "distributionName": "Ubuntu-20.04" > 

Ориентация на несколько дистрибутивов

Если вы создаете приложение, предназначенное выполняться в нескольких дистрибутивах, и хотите быстро проверить работу в каждом из них, следующим шагом будет создание нескольких профилей запуска. Например, если необходимо проверить консольное приложение в Debian, Ubuntu 18.04 и Ubuntu 20.04, можно использовать следующие профили запуска:

"WSL : Debian": < "commandName": "WSL", "distributionName": "Debian" >, "WSL : Ubuntu 18.04": < "commandName": "WSL", "distributionName": "Ubuntu-18.04" >, "WSL : Ubuntu 20.04":
"WSL : Debian": < "commandName": "WSL2", "distributionName": "Debian" >, "WSL : Ubuntu 18.04": < "commandName": "WSL2", "distributionName": "Ubuntu-18.04" >, "WSL : Ubuntu 20.04":

Эти профили запуска обеспечивают легкое и удобное переключение между целевыми дистрибутивами, при этом не нужно выходить из Visual Studio.

Multiple WSL launch profiles in the launch profile list

Подключение к выполняемому процессу WSL

Помимо отладки при запуске приложения с помощью клавиши F5, можно выполнить отладку, подключившись к выполняемому процессу WSL с помощью функции подключения к процессу.

Screenshot of WSL process in the attach to process dialog box

  1. После запуска приложения выберите Отладка>Подключить к процессу.
  2. В поле Тип подключения выберите Подсистема Windows для Linux (WSL), а затем в поле Цель подключения выберите дистрибутив Linux.
  3. Выберите Присоединиться.

Параметры WSL в профиле запуска

В следующей таблице приведены параметры, которые поддерживаются в профиле запуска.

Имя. По умолчанию Характер использования Поддержка маркеров
executablePath dotnet Путь к исполняемому файлу, который следует запустить. Да
commandLineArgs Значение свойства «TargetPath» MSBuild, сопоставленное со средой WSL. Аргументы командной строки, переданные согласно параметру executablePath. Да
WorkingDirectory Для консольных приложений: OutDir>
Для веб-приложений: ProjectDir>
Рабочий каталог, в котором следует запустить отладку. Да
environmentVariables Пары «ключ — значение» переменных среды, которые необходимо установить для отлаживаемого процесса. Да
setupScriptPath Скрипт, который следует запустить перед отладкой. Используется для выполнения таких скриптов, как ~/.bash_profile. Да
distributionName Имя дистрибутива WSL, который следует использовать. No
launchBrowser false Указывает, следует ли запускать браузер. No
launchUrl URL-адрес, по которому следует перейти, если для параметра launchBrowser задано значение true. No

ProjectDir> — путь к каталогу проекта.

OutDir> — значение свойства OutDir MSBuild.

Все пути указываются для WSL, а не для Windows.

Передача аргумента командной строки

commandLineArgs Используйте параметр для передачи аргумента командной строки WSL в профиле запуска.

В следующем примере вы передаете два аргумента в проект DLL с именем ConsoleApp.

"WSL": < "commandName": "WSL", "commandLineArgs": "\"/ConsoleApp.dll\" arg1 arg2" > 

Зарезервированные и стандартные свойства MSBuild

MSBuild предоставляет набор предопределенных свойств для сохранения информации о файле проекта и двоичных файлах MSBuild. Значения этих свойств вычисляются так же, как и значения других свойств MSBuild. Например, для использования свойства MSBuildProjectFile необходимо ввести $(MSBuildProjectFile)

Для определения зарезервированных и известных свойств в MSBuild используются значения, приведенные в следующей таблице. Зарезервированные свойства нельзя переопределить, и большинство известных свойств не следует переопределять, кроме расширенных сценариев.

Зарезервированные и стандартные свойства

В таблице в этом разделе показаны предопределенные свойства MSBuild. Пример столбца в таблице относится к следующему примеру файла проекта, который должен находиться C:\Source\Repos\ConsoleApp1\ConsoleApp1 по адресу, и показывает пример значений, которые эти свойства имеют при доступе к файлу проекта, когда MSBuild вызывается без специальных параметров командной строки.

  Exe netcoreapp3.1   
Свойство Зарезервированное или стандартное Description Пример
FrameworkSDKRoot Стандартное Путь к корневой папке для средств платформа .NET Framework. C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\
InnerBuildProperty Стандартное Указывает имя свойства, определяющее измерение многонацелевой сборки (применимо только в том случае, если текущая сборка является сборкой графа). TargetFramework
InnerBuildPropertyValues Стандартное Указывает имя свойства, которое содержит возможные значения для ( InnerBuildProperty применимо, только если текущая сборка является сборкой графа). TargetFrameworks
IsGraphBuild Стандартное True Значение , если это сборка графа; -graphBuild то есть параметр действует. Этот параметр означает, что MSBuild создает и создает граф проекта. Построение графа включает определение ссылок проекта для образования зависимостей. Построение этого графа включает попытку сборки ссылок проекта до проектов, ссылающихся на них, в отличие от традиционного графика MSBuild.
MSBuildAssemblyVersion Зарезервировано Версия сборок MSBuild, используемая для сборки проекта. 16,0
MSBuildBinPath Зарезервировано Абсолютный путь к папке, где находятся используемые в данный момент двоичные файлы MSBuild (например, C:\Windows\Microsoft.Net\Framework\ ). Это свойство удобно, если вам нужно ссылаться на файлы в каталоге MSBuild.

В .NET Framework 3.5 и более ранних версиях значение по умолчанию MSBuildExtensionsPath указывает на путь к вложенной папке MSBuild в папке Program Files\ или Program Files (x86) , в зависимости от разрядности текущего процесса. Например, для 32-разрядного процесса на 64-разрядном компьютере это свойство указывает папку на \Program Files (x86). Для 64-разрядного процесса на 64-разрядном компьютере это свойство указывает на папку \Program Files.

Не включайте в это свойство завершающую обратную косую черту.

Это расположение хорошо подходит для хранения пользовательских файлов целей. Например, файлы целей можно установить в папку \Program Files\MSBuild\MyFiles\Northwind.targets, а затем импортировать в файлы проекта с помощью следующего XML-кода:

— Когда для атрибута ContinueOnError элемента Task (MSBuild) задано значение WarnAndContinue (или true ) или ErrorAndContinue .

Чтобы выполнить сборку в любой точке дерева, введите следующее:

Не включайте в путь завершающую обратную косую черту.

Не включайте в путь завершающую обратную косую черту.

Не включайте в путь завершающую обратную косую черту.

Свойство Зарезервированное или стандартное Description Пример
FrameworkSDKRoot Стандартное Путь к корневой папке для средств платформа .NET Framework. C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\
InnerBuildProperty Стандартное Указывает имя свойства, определяющее измерение многонацелевой сборки (применимо только в том случае, если текущая сборка является сборкой графа). TargetFramework
InnerBuildPropertyValues Стандартное Указывает имя свойства, которое содержит возможные значения для ( InnerBuildProperty применимо, только если текущая сборка является сборкой графа). TargetFrameworks
IsGraphBuild Стандартное True Значение , если это сборка графа; -graphBuild то есть параметр действует. Этот параметр означает, что MSBuild создает и создает граф проекта. Построение графа включает определение ссылок проекта для образования зависимостей. Построение этого графа включает попытку сборки ссылок проекта до проектов, ссылающихся на них, в отличие от традиционного графика MSBuild.
MSBuildAssemblyVersion Зарезервировано Версия сборок MSBuild, используемая для сборки проекта. 17.0
MSBuildBinPath Зарезервировано Абсолютный путь к папке, где находятся используемые в данный момент двоичные файлы MSBuild (например, C:\Windows\Microsoft.Net\Framework\ ). Это свойство удобно, если вам нужно ссылаться на файлы в каталоге MSBuild.

В .NET Framework 3.5 и более ранних версиях значение по умолчанию MSBuildExtensionsPath указывает на путь к вложенной папке MSBuild в папке Program Files\ или Program Files (x86) , в зависимости от разрядности текущего процесса. Например, для 32-разрядного процесса на 64-разрядном компьютере это свойство указывает папку на \Program Files (x86). Для 64-разрядного процесса на 64-разрядном компьютере это свойство указывает на папку \Program Files.

Не включайте в это свойство завершающую обратную косую черту.

Это расположение хорошо подходит для хранения пользовательских файлов целей. Например, файлы целей можно установить в папку \Program Files\MSBuild\MyFiles\Northwind.targets, а затем импортировать в файлы проекта с помощью следующего XML-кода:

— Когда для атрибута ContinueOnError элемента Task (MSBuild) задано значение WarnAndContinue (или true ) или ErrorAndContinue .

Чтобы выполнить сборку в любой точке дерева, введите следующее:

Как запустить c# проект, если нет sln файла

Подскажите, пожалуйста, как запустить после клонирования программу из этого проекта — https://github.com/qubard/TwitchSpammer ?

Отслеживать
28.7k 22 22 золотых знака 61 61 серебряный знак 141 141 бронзовый знак
задан 28 окт 2020 в 18:11
11 4 4 бронзовых знака

Вот значит, кто мешает мне смотреть видео. Ну ну.. Viisual студия вполне открывает одиночный csproj и компилирует его. А так. ммммм. dotnet build asdf.csproj + dotnet run asdf.dll

28 окт 2020 в 18:13

Есть проект, а есть решение, это две разные совершенно вещи. Решение — это .sln (Solutions), он содержит в себе лишь информацию о том, какие проекты в нем есть, это по сути «группа проектов». Проект — это уже сама программа, вся ее информация, классы и так далее, у проекта есть «Файл проекта» (у c# это .csproj ), который отвечает за его открытие. Файл проекта содержит в себе информацию о версии языка, какие файлы и библиотеки этот проект содержит, ну и много разного. И тут я думаю вы уже поняли, что .sln не является основным файлом проекта, это лишь файл группы, созданный для удобства.

28 окт 2020 в 23:21
28 окт 2020 в 23:22

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В общем случае нужно сделать два шага:

  • скомпилировать проект
  • запустить проект

Допустим у меня есть простой проект ConsoleApp1.csproj (сделан по шаблону Visual studio 2019):

  Exe netcoreapp3.1   

И в нём (в этом каталоге) один файл Program.cs:

using System; namespace ConsoleApp1 < class Program < static void Main(string[] args) < Console.WriteLine("Hello World!"); >> > 

Пишем в консоли dotnet build ConsoleApp1.csproj и получаем на выходе:

C:\temp\ConsoleApp1>dotnet build ConsoleApp1.csproj Microsoft (R) Build Engine версии 16.7.0+7fb82e5b2 для .NET (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

Определение проектов для восстановления. Восстановлен C:\temp\ConsoleApp1\ConsoleApp1.csproj (за 151 ms). ConsoleApp1 -> C:\temp\ConsoleApp1\bin\Debug\netcoreapp3.1\ConsoleApp1.dll

Сборка успешно завершена. Предупреждений: 0 Ошибок: 0

Прошло времени 00:00:02.70

C:\temp\ConsoleApp1>

В итоге у нас появились папки bin и obj. Это был первый шаг.

Со вторым шагом всё просто. Переходим в папку C:\temp\ConsoleApp1\bin\Debug\netcoreapp3.1\ и запускаем там файл

C:\temp\ConsoleApp1\bin\Debug\netcoreapp3.1>ConsoleApp1.exe Hello World!

C:\temp\ConsoleApp1\bin\Debug\netcoreapp3.1>

Всё работает, как и ожидалось.

В некоторых проектах у вас не будет exe-файла, только dll. В этом случае необходимо запустить полученый на первом шаге dll-файл при помощи команды dotnet (Обычно, если dll файлов несколько то выбирайте с именем, совпадающим с именем проекта)

Альтернативно, можно объединить два шага в один, если сразу компилировать и запускать программу командой dotnet run filename.csproj . Например, удалив папки bin и obj дал такую команду:

C:\temp\ConsoleApp1>dotnet run ConsoleApp1.csproj

Hello World!

C:\temp\ConsoleApp1>

(Удобно, если вы уверены, что проект соберётся, скажем, запускаете не в первый раз)

Ну или можно просто скачать и поставить себе Visual Studio 2019 Community Edition и просто запустить проект через F5.

Проекту не известно, как запустить профиль ConsoleApp3 C# Visual Studio

Пытаюсь запустить начальную программу, при создании проекта и выдаёт такую ошибку «Проекту не известно, как запустить профиль ConsoleApp3». С чём связанно не знаю. В интернете нормальных решений не нашёл.
Вот сама программа: Console.WriteLine(«Hello, World!»);

Лучший ответ

Перезапусти

Остальные ответы

Фёдор ФилатовУченик (127) 1 год назад

Не помогает

Может скриншот скинешь

Фёдор ФилатовУченик (127) 1 год назад

L1mpУченик (129) 1 год назад

L1mpУченик (129) 1 год назад

И создавай консольное приложение

Фёдор Филатов Ученик (127) Валентин К, не в этом проблема, конечно.

L1mpУченик (129) 1 год назад

Запусти загрузочный фай визуал студио,и там выбери разработка классических приложений и поставь галочку возле пункта средства разработки для .net

L1mpУченик (129) 1 год назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *