非阻塞 IIS Express 初创公司

Nonblocking IIS Express startups

我可以像这样在批处理文件中启动 Cassini:

start "" /B "%common%\microsoft shared\DevServer.0\WebDev.WebServer40.exe" /port:%port% /path:"%~dp0%svcDir%"

这将在不阻塞命令行的情况下启动。我可以在不阻塞命令行的情况下启动 IISExpress 吗?我尝试在 startiis.ps1 中保存以下命令:

start-process "C:\Program Files (x86)\IIS Express\iisexpress.exe" /config:%userprofile%\Documents\IISExpress\config\applicationhost.config /CompanyName.ProjectName.api -windowstyle Hidden

当我 运行 & ".\startiis.ps1" 我收到错误:

Start-Process : A positional parameter cannot be found that accepts argument '/CompanyName.ProjectName.api'.

关于您的方法的一些事情...

  1. 在 PowerShell 中调用环境变量使用提供程序 $env
  2. 如果您要使用 Start-Process,您需要将命令和参数分开

start-process "C:\Program Files (x86)\IIS Express\iisexpress.exe" -ArgumentList "/config:$($env:USERPROFILE)\Documents\IISExpress\config\applicationhost.config /CompanyName.ProjectName.api" -WindowStyle Hidden

Start-Process 抛出错误,因为它没有第三个位置参数。在您的示例中,细分是 "C:\Program Files (x86)\IIS Express\iisexpress.exe" 占据了 -FilePath,而“/config:%userprofile%\Documents\IISExpress\config\applicationhost.config”占据了 -ArgumentList 的位置。您希望所有这些片段都成为论点。

您不必指定 -ArgumentList。将所有参数作为字符串引用就足够了。

如果您不需要 Start-Process 的其他功能,您也可以使用调用运算符就地执行。引用参数以确保它们被正确解析是一种很好的做法。

& "C:\Program Files (x86)\IIS Express\iisexpress.exe" "/config:$($env:USERPROFILE)\Documents\IISExpress\config\applicationhost.config" "/CompanyName.ProjectName.api"