如何通过命令行启动多个 IIS Express 站点

How to start multiple IIS Express sites via command line

我的组织有一个复杂的网络应用程序,通常需要打开 Visual Studio 的多个实例到 运行 不同的解决方案,然后通过 IIS Express 和有些是.net核心。对于我的需要,我实际上并不需要打开 VS,我只需要 API & UI 项目 运行ning 在后台

我正在尝试构建一个批处理脚本来为我执行此操作。目前,我已经用 msbuild 构建了每个项目,但我无法让 iisexpress 工作。

这是我目前所拥有的。

SET MSBuildPath="%ProgramFiles(x86)%\Microsoft Visual Studio17\Professional\MSBuild.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 中启动得很好,但随后它挂在那里,无法继续到下一个。这是有道理的,但是我需要一种方法来同时启动多个站点。

我发现这里唯一真正的解决方案似乎是为每个 IIS Express 和 .NET 核心实例打开一个新命令 window。有点烦人,但它可以工作,并且还可以启动已经最小化的它们。这是我更改后的 .bat 文件

SET MSBuildPath="%ProgramFiles(x86)%\Microsoft Visual Studio17\Professional\MSBuild.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