Как запустить несколько сайтов IIS Express через командную строку - PullRequest
0 голосов
/ 31 декабря 2018

В моей организации имеется сложное веб-приложение, которое обычно требует открытия нескольких экземпляров Visual Studio для запуска различных решений, а затем запускает все проекты API и интерфейсов через IIS Express, а некоторые из них являются ядром .net.Для моих нужд мне на самом деле не нужно открывать VS, мне нужны только проекты API и UI, работающие в фоновом режиме

Я пытаюсь создать пакетный скрипт, который сделает это для меня.В настоящее время у меня есть он, строящий каждый проект с msbuild, но у меня возникают проблемы с тем, чтобы заставить работать iisexpress.

Вот что у меня есть.

SET MSBuildPath="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"
SET IISExpressPath="%ProgramFiles(x86)%\IIS Express\IISExpress.exe"
SET ACPath=%HOMEPATH%\Workspace\MyProject
SET ConfigFile=%ACPath%\.vs\config\applicationhost.config

%MSBuildPath% "%ACPath%\Project1API\Project1API.csproj" /verbosity:quiet
%MSBuildPath% "%ACPath%\Project2API\Project2API.csproj" /verbosity:quiet
%MSBuildPath% "%ACPath%\Project3API\Project3API.csproj" /verbosity:quiet

%IISExpressPath% /site:Project1API /config:%ConfigFile%
start "" http://localhost:1106

%IISExpressPath% /site:Project2API /config:%ConfigFile%
start "" http://localhost:49418

%IISExpressPath% /site:Project3API /config:%ConfigFile%
start "" http://localhost:50244

dotnet run -p "%ACPath%\SubFolder\Project4API\Project4API.csproj"
start "" http://localhost:60711

dotnet run -p "%ACPath%\SubFolder\ProjectInterface\ProjectInterface.csproj"
start "" http://localhost:54225

Вот что я получаю в виде вывода на консоль

C:\Users\MyUserName\Workspace>"C:\Program Files (x86)\IIS Express\IISExpress.exe" /site:Project1API /config:\Users\MyUserName\Workspace\Project1API\.vs\config\applicationhost.config
Starting IIS Express ...
Successfully registered URL "http://localhost:1106/" for site "Project1API" application "/"
Successfully registered URL "https://localhost:44300/" for site "Project1API" application "/"
Registration completed for site "Project1API"
IIS Express is running.
Enter 'Q' to stop IIS Express

Кажется, проблема в том, что первый запускается в IIS Express просто отлично, но затем он зависает и не переходит к следующему.Это имеет смысл, однако мне нужен способ запустить несколько сайтов одновременно.

1 Ответ

0 голосов
/ 01 января 2019

Я выяснил, что единственное реальное решение здесь, по-видимому, заключается в открытии нового командного окна для каждого экземпляра ядра IIS Express и .NET.Немного раздражает, но это работает, и возможно также запустить их уже свернутыми.Вот мой измененный .bat файл

SET MSBuildPath="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"
SET IISExpressPath="%ProgramFiles(x86)%\IIS Express\IISExpress.exe"
SET ACPath=%HOMEPATH%\Workspace\MyProject
SET ConfigFile=%ACPath%\.vs\config\applicationhost.config

:: Build the 3 API projects
%MSBuildPath% "%ACPath%\Project1Api\Project1Api.csproj" /verbosity:quiet
%MSBuildPath% "%ACPath%\Project2Api\Project2Api.csproj" /verbosity:quiet
%MSBuildPath% "%ACPath%\Project3Api\Project3Api.csproj" /verbosity:quiet

:: Start up an minimized IIS Express instance for each API
start /min cmd /c "%IISExpressPath%" /config:%ConfigFile% /site:Project1Api
start /min cmd /c "%IISExpressPath%" /config:%ConfigFile% /site:Project2Api
start /min cmd /c "%IISExpressPath%" /config:%ConfigFile% /site:Project3Api

:: Build the 2 .NET Core projects, and then launch the UI project in a browser
start /min cmd /c dotnet run -p "%ACPath%\SubFolder\Project4Api\Project4Api.csproj"
start /min cmd /c dotnet run -p "%ACPath%\SubFolder\ProjectInterface\ProjectInterface.csproj" & start "" http://localhost:54225
...