如何使用Visual Studio ASP.NET Core观察文件更改“dotnet watch”

时间:2016-10-20 11:14:25

标签: asp.net-core dnx kestrel-http-server

我正在使用Visual Studio和ASP.NET Core并使用F5或Ctrl + F5运行网站(不直接使用命令行)。我想使用“dotnet watch”功能来确保动态获取所有更改以避免再次启动服务器。似乎使用命令行你会使用“dotnet watch run”,但Visual Studio使用launchSettings.json并在幕后操作,如果我理解正确的话。

如何在那里连接“dotnet watch”?

8 个答案:

答案 0 :(得分:13)

打开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中观看。

enter image description here

答案 1 :(得分:12)

只需对@Flynn的答案进行一点更正。您需要添加一个

"commandName": "Executable"

“监视”配置文件的参数。另外,要定义网址,您应该不在“观看”配置文件中定义网址,而应在配置文件中使用

"commandName": "Program"

参数(它存在于由Visual Studio项目模板创建的默认launchsettings.json中,因此,您的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"
}

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

答案 2 :(得分:7)

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

这将工作并启动浏览器。由于"commandName": "Project"这一行而有效,这意味着它将与Kestrel服务器一起启动。

答案 3 :(得分:6)

如果要使用ASP.NET 2.x或3.x,则需要对其进行一些更改。

  • 监视工具现在是一种全局工具,您不再需要将其添加为参考
  • 语法略有不同

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

更新:添加了“ workingDirectory”并删除了特定路径。现在更通用了。

答案 4 :(得分:4)

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

profileslaunchSettings.json 部分中,您添加一个新配置文件,例如“API Watch”,内容如下:

"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"
}

然后您在构建配置文件下拉列表中选择它:

enter image description here


现在,当您运行它时,无论是否启用调试模式,都会自动进行重新构建和浏览器刷新(我使用 Swagger UI 作为默认页面)。


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

enter image description here

答案 5 :(得分:2)

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

X.Y

答案 6 :(得分:2)

对于阅读这些非常旧的答案并想知道它是否已经成熟的其他人,那么您应该阅读 2020 年 11 月 22 日的这篇博文。

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

Visual Studio 2019 现在有一个 ASP.NET Core 设置,可以在使用 IIS Express 时进行刷新。默认情况下它是不启用的。

您仍然可以使用文章中所述的 launchSettings.json 文件。

答案 7 :(得分:1)

在 Visual Studio 2019 中

{
    "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"
    }
    }
}

这里是配置图片

enter image description here

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

enter image description here