如何使用 Visual Studio ASP.NET Core 查看文件更改 "dotnet watch"

How to watch for file changes "dotnet watch" with Visual Studio ASP.NET Core

我正在使用 Visual Studio 和 ASP.NET 核心,运行 网站仅使用 F5 或 Ctrl+F5(不直接使用命令行)。我想使用“dotnet watch”功能来确保即时获取所有更改以避免再次启动服务器。似乎在命令行中你会为此使用“dotnet watch 运行”,但是 Visual Studio 使用 launchSettings.json 并在我理解正确的情况下在幕后进行。

如何连接“dotnet watch”?

打开 launchSettings.json 并将其添加到 profiles

  "Watch": {
    "executablePath": "C:\Program Files\dotnet\dotnet.exe",
    "commandLineArgs": "watch run",
    "launchBrowser": true,
    "launchUrl": "http://localhost:5000",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }
  }

打开 project.json 并将其添加到 tools

"Microsoft.DotNet.Watcher.Tools": "1.0.0-preview2-final"

恢复后,我们可以在Visual Studio内观看。

如果你想使用ASP.NET2.x或3.x你需要稍微改变一下。

  • watch工具现在是一个全局工具,你不需要再添加它作为参考

  • 语法略有不同

    "Watch": {
      "executablePath": "dotnet.exe",
      "workingDirectory": "$(ProjectDir)",
      "commandLineArgs": "watch run",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000/",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
    

对于 .Net 5 和 6

在 VisualStudio 2019 中

  1. 转到工具 > ⚙ 选项 > 项目和解决方案 > ASP .NET Core
  2. Select 在自动构建和刷新选项中保存更改后自动构建和刷新浏览器
  3. 按 Ctrl + F5(不调试启动)重要提示:仅在 运行 不调试
  4. 时有效

否则将其添加到您的 launchSettings.json:

{
  "iisSettings": {
    ...
  },
  "profiles": {
    ... ,

    "Watch": {
      "commandName": "Executable",
      "executablePath": "dotnet.exe",
      "workingDirectory": "$(ProjectDir)",
      "commandLineArgs": "watch run"
    }

  }
}

自动生成的 profile"commandName":"Project" 具有所需的所有其他属性:launchBrowserapplicationUrlenvironmentVariablesdotnetRunMessageshotReloadProfile。应在此处进行任何修改。

来自 Juan Cruz Fiant 的相应博客-Post:https://dev.to/juxant/auto-refresh-with-dotnet-watch-for-asp-net-core-projects-20no

只是对@Flynn 的回答稍作更正。您需要添加一个

"commandName": "Executable"

"Watch" 配置文件的参数。另外要定义 url,您应该不在 "Watch" 配置文件中定义它们,而是在带有

的配置文件中定义它们

"commandName": "Program"

参数(它存在于默认 launchsettings.json 中,由 Visual Studio 项目模板创建,因此,您的 launchsettings.json 最终看起来像这样:

"AnyTest.WebClient": {
  "commandName": "Project",
  "launchBrowser": true,
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  "launchUrl": "",
  "applicationUrl": "https://localhost:44353;http://localhost:51895",
  "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
},
"Watch": {
  "commandName": "Executable",
  "workingDirectory": "$(ProjectDir)",
  "executablePath": "dotnet.exe",
  "commandLineArgs": "watch run"
}

我在 Program 配置文件中保留了 launchBrowser 参数,但未启动浏览器。但是,如果 Executable 配置文件中存在此参数,则浏览器也不会启动,我找不到自动启动它的方法。

打开 launchSettings.json 并将其添加到配置文件。

 "Watch": {
      "executablePath": "dotnet.exe",
      "commandLineArgs": "watch --project ..\..\..\YourProject.csproj run",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000/",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
"Watch": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "http://localhost:5000/",
  "commandLineArgs": "watch run",
  "workingDirectory": "$(ProjectDir)",
  "executablePath": "dotnet.exe",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

这个也可以运行并启动浏览器。它的工作是因为 "commandName": "Project" 行,这意味着它将与 Kestrel 服务器一起启动。

2019 年 Visual Studio

{
    "profiles": {
        "msteamsimc": {
        "commandName": "Executable",
        "executablePath": "dotnet",
        "commandLineArgs": "watch run",
        "workingDirectory": "$(ProjectDir)",
        "launchBrowser": true,
        "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        },
        "dotnetRunMessages": "true",
        "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
    }
}

这里是配置的图片

这里是工作项目 2021-01-11 的图片

已接受的答案有效,但已有 4 年以上的历史。因此,这就是如何使其适用于 Visual Studio 2019(在我的情况下为 v16.8.5)。

launchSettings.jsonprofiles 部分中,您添加了一个新的个人资料,比如说“API 观看”,内容如下:

"API Watch": {
  "commandName": "Executable",
  "executablePath": "dotnet",
  "commandLineArgs": "watch run",
  "workingDirectory": "$(ProjectDir)",
  "launchBrowser": true,
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  "dotnetRunMessages": "true"
}

然后你去 select 它在构建配置文件下拉列表中:


现在当你运行它时,不管是否打开调试模式,重新构建和刷新浏览器(我使用 Swagger UI 作为默认页面)自动发生。


关于在调试模式下使用它的一个注意事项是,Visual Studio 会将更改标记为绿色,并表示在重新启动之前不会应用这些更改。我可以确认这不是真的,dotnet watch run 的自动重建功能确实反映了更改。只是 VS 2019 搞糊涂了,从旧(标准)的角度看待事情。

对于阅读这些非常古老的答案并想知道它是否已经成熟的其他人,您应该从 2020 年 11 月 22 日开始阅读这篇博客 post。

https://dev.to/juxant/auto-refresh-with-dotnet-watch-for-asp-net-core-projects-20no

Visual Studio 2019 现在有 ASP.NET 使用 IIS Express 时刷新核心的设置。默认情况下未启用。

您仍然可以按照文章中的说明使用 launchSettings.json 个文件。