dotNET 6热重载技术记录

返回C#与Java社区
1回复贴,共1页,点击数:1084

对于web开发
我的理解是运行dotnet run
然后在vs中开发,按ctrl+r就可以了。

介绍用于在运行时编辑代码的 .NET Hot Reload 体验
https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/

今天,我们很高兴向您介绍 Visual Studio 2019 版本 16.11(预览版 1)和dotnet watch.NET 6 中的命令行工具(预览版 4)中的 .NET 热重载体验的可用性。在本博文的其余部分,我们希望借此机会向您介绍什么是 .NET 热重载、如何开始使用此功能、我们对未来计划改进的愿景是什么,以及对哪些类型的编辑和目前支持语言。

什么是 .NET 热重载?
借助热重载,您现在可以在应用程序运行时修改应用程序托管的源代码,而无需手动暂停或点击断点。只需在应用运行时进行受支持的更改,在我们全新的 Visual Studio 体验中,使用“应用代码更改”按钮即可应用您的编辑。

在这里插入图片描述

Hot Reload 适用于您现有和即将推出的许多项目类型,例如 WPF、Windows 窗体、.NET MAUI 预览、ASP.NET Core 应用程序代码隐藏、控制台应用程序、WinUI 3(需要托管调试器)等等。这种支持非常广泛,具有使用任何由 .NET Framework 或 CoreCLR 运行时提供支持的项目的核心经验。

使用 Hot Reload,我们的目标是无论您喜欢以何种方式启动应用程序,都可以提供这种体验。在今天的版本中,您现在可以通过完全集成的 Visual Studio 调试器体验或dotnet watch命令行工具来使用这种体验,更多选项将在以后的版本中提供。

入门
要开始使用,您可以选择使用 Visual Studio 的最新预览版或我们的 .NET 6 Preview 4,说明如下。

视觉工作室:

要在使用调试器时在 Visual Studio 中尝试热重载:

下载并安装 Visual Studio 2019 版本 16.11 预览版 1
打开支持的项目类型,例如 WPF 应用
通过 F5 连接调试器启动应用程序(确保在调试器设置/调试启动配置文件中禁用“启用本机代码调试”)
打开包含一些代码的 C# 代码文件,这些代码可以通过正在运行的应用程序用户界面(例如:按钮或 ViewModel 的命令的代码隐藏)或通过计时器每隔一段时间触发的代码重新执行并更改代码
使用apply code changesVisual Studio 工具栏中的新(ALT-F10) 按钮(Continue按钮旁边)应用代码更改。请注意,使用 Visual Studio 时不需要保存文件,这使您可以灵活地快速更改代码并继续前进。
如果您所做的更改得到支持,您的应用程序现在将在使用您的新逻辑运行时进行修补,您应该会在下一次通过您的操作或类似计时器重新执行更新后的代码时看到应用程序行为的更改触发代码。

您还可以继续使用其他调试器功能,例如断点、编辑并继续、XAML 热重载等。您今天习惯的一切都应该与 .NET 热重载完全并行工作。如果有什么不适合您,请告诉我们!

命令行界面

要在使用 dotnet watch 启动应用程序时从命令行尝试热重载:

安装 .NET 6 预览版 4
更新现有的 ASP.NET Core 项目以面向 .NET 6
将“hotReloadProfile”:“aspnetcore”属性添加到launchSettings.json 中的应用启动配置文件。
Properties/launchSettings.json 示例:

{
  "profiles": {
    "dotnet": {
      "commandName": "Project",
      "hotReloadProfile": "aspnetcore"
    }
  }
}

使用运行项目dotnet watch并查看输出,因为它应该表明启用了热重载
对您的应用程序管理的源代码进行受支持的代码更改并保存文件以应用
就像 Visual Studio 体验一样,您现在应该应用新逻辑,下次重新执行更新的代码时,您应该会看到应用行为的变化。

您还可以通过修改“blazorwasm”热重载配置文件并按照上述类似步骤将这种方法用于您的 Blazor WebAssembly 项目。您甚至可以使用 Windows 窗体或由 CoreCLR 提供支持的其他类型的项目来尝试它,只需在 Properties 文件夹下手动添加一个名为 launchSettings.json 的文件,其中包含上述示例内容。

这种体验仍在开发中,我们正在跟踪未来的改进,这将使使用 dotnet watch 更容易地在没有 launchSettings.json 文件的情况下热重载所有类型的 .NET Core 应用程序,但这是当前版本中的一个限制。

Visual Studio 2022 和 .NET 6 中的最佳
在今天的发布中,这只是我们对 .NET 开发人员的热重载的完整愿景的预览。虽然在早期的 .NET 6 预览版和 Visual Studio 2019 中提供了一些功能,但为了发挥此功能的全部功能,我们将 .NET 6(以及 .NET 的未来版本)和 Visual Studio 2022 作为框架集和将拥有最完整和优化的体验的工具。

为了让您大致了解我们计划在未来的预览版和最终版本中提供哪些类型的功能,以下是一些示例:

.NET 多平台应用程序 UI (.NET MAUI):借助 .NET 6 Preview 4,构建 .NET MAUI 应用程序的开发人员现在可以将 .NET Hot Reload 用于面向 WinUI 3 的项目。在未来的版本中,我们将提供 .NET Hot Reload 支持适用于 iOS、Android 和 Mac Catalyst 方案。
Razor 页面:在未来的版本中,将支持热重载和编辑并继续 (EnC) 来编辑 Razor 以针对面向 .NET 6 或更高版本的网站或 Blazor 应用程序
Visual Studio 中不需要调试器:在 Visual Studio 2022 的未来版本中,我们正在努力添加对使用 Hot Reload 的支持,而无需调试器,这意味着开发人员将能够使用 CTRL-F5 启动他们的应用程序,并且仍然使用 Hot Reload 进行修补他们正在运行的应用程序
减少不受支持的更改数量:在 Visual Studio 2022 和 .NET 6+ 的未来版本中,我们计划跨多个团队开展工作,以减少运行时不受支持的编辑数量
优化框架以最适合热重载:在 .NET 6 中,我们正在研究如何改进某些框架以更好地支持热重载。未来的例子将包括对 ASP.NET Core、.NET MAUI 和其他框架的改进,其中的调整和优化将使热重载更改在更多情况下更有用。
虽然以上是我们当前的计划,但请注意,计划可能会根据客户的反馈和时间表而变化。

支持/不支持的更改和语言
无论您如何使用 .NET Hot Reload,请注意某些更改在运行时不受支持,并且会通过rude edit对话框提示您并要求您重新启动应用程序才能应用。我们仍在研究该功能和文档,以详细说明支持哪些编辑。现在,首先查看我们现有的编辑并继续 (EnC) 等效功能列表。由于热重载由 EnC 提供支持,这将为您提供一个很好的起点,以便更好地理解这一新功能。有关详细信息,请参阅:EnC 文档。

此外,虽然上面的例子特别提到了 C#,但在 Visual Studio 的调试器下运行时,Visual Basic 也支持各种情况。.NET 6 目前不支持 F#,但我们计划根据客户反馈在未来版本中提供支持。

您的反馈很重要
在这个早期的预览版本中,我们要承认会有错误。有时,如果您尝试应用更改,它可能会默默地失败,或者您的应用程序可能会崩溃等。如果您确实遇到任何问题,请花点时间向我们报告问题,因为只有通过您的反馈,我们才能确保关键问题得到解决已解决,未来的决策将根据您的输入确定优先级。

1楼 2021/11/12 10:25

在,使用dotnet watch的 ASP.NET Core 和 Blazor 项目可以获得对 .NET 热重载的早期支持。.NET 热重载可以在不重新启动应用程序和不丢失应用程序状态的情况下将代码更改应用到你正在运行的应用程序中。

要在现有的基于 .NET 6 的 ASP.NET Core 项目中试用热重载,请将”hotReloadProfile”: “aspnetcore”属性添加到你的launchSettings.json文件中。对于 Blazor WebAssembly 项目,使用”blazorwasm”热重载配置文件。

使用dotnet watch运行项目。下面的输出表明热重载已经启用:

watch : Hot reload enabled. For a list of supported edits, see https://aka.ms/dotnet/hot-reload. Press "Ctrl + R" to restart.

在任何时候你想强制应用程序重新构建和重启,你可以在控制台输入Ctrl+R来实现。

现在你可以开始对你的代码进行编辑了。当你保存代码更改时,相应的更改几乎会在瞬间自动热重载到运行中的应用程序中。运行中的应用程序中的任何状态都会被保留。
在这里插入图片描述
你也可以对你的 CSS 文件进行热重载更改,而不需要刷新浏览器:

在这里插入图片描述

一些代码更改不支持 .NET 执重载。你可以在文档[5]中找到支持的代码编辑列表。在 Blazor WebAssembly 中,目前只支持方法体替换。我们正在努力扩展 .NET 6 中支持的编辑集。当dotnet watch检测到无法使用热重载应用的更改时,它就会退回重新构建和重新启动应用程序。

这只是 .NET 6 中热重载支持的开始。桌面和移动应用程序的热重载支持将很快在即将到来的预览版中提供,以及在 Visual Studio 中集成热重载。

来自:
https://www.cnblogs.com/willick/p/14639682.html

2楼 2021/11/12 10:50 收起回复
您未登录,没有发贴权限[点此登录]