如何使用 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 中
- 转到工具 > ⚙ 选项 > 项目和解决方案 > ASP .NET Core
- Select 在自动构建和刷新选项中保存更改后自动构建和刷新浏览器
- 按 Ctrl + F5(不调试启动)重要提示:仅在 运行 不调试
时有效
否则将其添加到您的 launchSettings.json
:
{
"iisSettings": {
...
},
"profiles": {
... ,
"Watch": {
"commandName": "Executable",
"executablePath": "dotnet.exe",
"workingDirectory": "$(ProjectDir)",
"commandLineArgs": "watch run"
}
}
}
自动生成的 profile
和 "commandName":"Project"
具有所需的所有其他属性:launchBrowser
、applicationUrl
、environmentVariables
、dotnetRunMessages
和hotReloadProfile
。应在此处进行任何修改。
来自 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.json
的 profiles
部分中,您添加了一个新的个人资料,比如说“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 个文件。
我正在使用 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 中
- 转到工具 > ⚙ 选项 > 项目和解决方案 > ASP .NET Core
- Select 在自动构建和刷新选项中保存更改后自动构建和刷新浏览器
- 按 Ctrl + F5(不调试启动)重要提示:仅在 运行 不调试 时有效
否则将其添加到您的 launchSettings.json
:
{
"iisSettings": {
...
},
"profiles": {
... ,
"Watch": {
"commandName": "Executable",
"executablePath": "dotnet.exe",
"workingDirectory": "$(ProjectDir)",
"commandLineArgs": "watch run"
}
}
}
自动生成的 profile
和 "commandName":"Project"
具有所需的所有其他属性:launchBrowser
、applicationUrl
、environmentVariables
、dotnetRunMessages
和hotReloadProfile
。应在此处进行任何修改。
来自 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.json
的 profiles
部分中,您添加了一个新的个人资料,比如说“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 个文件。