首页 > 解决方案 > 如果使用自定义启动配置文件,则需要手动重新编译

问题描述

如果我使用https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2中描述的自定义launchSettings-Profile ,我必须手动构建应用程序才能获得更改 - 也适用于 razor-html 中的简单更改。

我创建了一个新的 Asp.net 核心网页应用程序,我使用 Ctrl+F5 启动它。现在我能

  1. 对剃刀文件的 HTML 进行一些更改
  2. 保存 *.cshtml 文件而不重建
  3. 切换到浏览器
  4. 用 F5 刷新(如果我不使用 BrowserLink)
  5. 我看到了我的变化 - 一切都好

现在我在 Properties\launchSettings.json 中创建自定义的 launchProfile:

"HomeOffice": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "HomeOffice"
      }
    }

我还为我的自定义连接字符串创建了一个appsettings.HomeOffice.json

我在 VisualStudio 的下拉框中选择我的新配置文件,使用 Ctrl-F5 重新启动应用程序。该应用程序正在使用自定义配置运行。

但是如果我现在对 html 进行一些更改,我必须重新构建项目。. 这对我来说很糟糕!

有任何想法吗?

标签: asp.net-core

解决方案


自动重建仅在使用 Kestrel(使用或不使用 IIS/IIS Express 作为反向代理)运行时才有效。在 ASP.NET Core 2.2 中,默认托管进程模型从进程外(即 IIS 反向代理后的 Kestrel)更改为进程内(即直接在 IIS 的应用程序池中运行)。我不确定您做了哪些更改,但它可能只是触发了流程模型发挥作用的托管场景。

总而言之,如果您想重新启用此功能,您需要切换回进程外。编辑您的 csproj 并更改行:

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

至:

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

推荐阅读