在运行时编辑代码的 .NET 热重载的操作方法

今天,我们很高兴向你介绍 Visual Studio 2019 中 16.11(预览版1)中的 .NET 热重载(通过 .NET 6(预览版4)中的 dotnet watch 命令行工具)。在这篇文章的其余部分,我们会介绍什么是 .NET 热重载,您如何开始使用这个特性,我们对未来计划改进的设想,以及目前支持哪种编辑和语言的明确性。

  今天,我们很高兴向你介绍 Visual Studio 2019 中 16.11(预览版1)中的 .NET 热重载(通过 .NET 6(预览版4)中的 dotnet watch 命令行工具)。在这篇文章的其余部分,我们会介绍什么是 .NET 热重载,您如何开始使用这个特性,我们对未来计划改进的设想,以及目前支持哪种编辑和语言的明确性。

什么是 .NET 热重载

  使用热重载,您现在可以在应用程序运行时修改应用程序托管的源代码,而不需要手动暂停或命中断点。只需在应用程序运行时进行受支持的更改,并在我们新的 VisualStudio 体验中使用“apply code changes”按钮应用您的编辑。

在运行时编辑代码的 .NET 热重载的操作方法

  热重载支持已经存在的和即将到来的项目类型,例如 WPF、Windows Forms、.NET MAUI 预览版、ASP.NET Core、Console 、WinUI 3 等等。这种支持非常广泛,支持与任何由 .NET Framework 或 CoreCLR 运行时驱动的项目。(This support is very broad with the core experience working with any project that is powered by .NET Framework or CoreCLR runtimes.)

  通过热重载,我们的目标是让这种体验可用,无论您喜欢如何启动您的应用程序。通过今天的发布,您现在可以通过完全集成的 Visual Studio 调试器体验或 dotnet watch 命令行工具使用此体验,稍后版本将有更多的选项。

开始

  你可以选择使用 Visual Studio 的最新预览版,也可以选择使用 .NET 6 预览4,介绍如下。

Visual Studio

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

下载并安装 Visual Studio 2019 16.11 预览版1。

打开支持的项目类型,例如 WPF 应用程序。

通过 F5 启动附加调试器的应用程序(确保在调试器配置中“enable native code debugging”为禁用)。

打开一个 C# 代码文件,其中有些代码可以通过正在运行的应用程序的用户界面重新执行(例如:一个按钮的逻辑代码或一个 ViewModel 的 command),或者通过 Timer 间隔触发一些东西,然后更改代码。

使用 Visual Studio 中的工具栏新的“应用代码更改(ALT-F10)按钮”(Continue 按钮旁边)来应用代码更改。请注意,在使用 Visual Studio 时并不需要保存文件,这给了您快速更改代码并继续进行调试的灵活性。

  如果您所做的更改得到支持,那么您的应用程序现在将使用新逻辑在运行时进行修补,并且您应该在下一次通过您的操作或类似计时器的触发代码,重新执行更新的代码时看到应用程序行为的更改。

  您还可以继续使用其他调试器特性,如断点、编辑并继续、XAML 热重载等。您现在所习惯的一切都应该与 .NET 热重载完全并行。如果有些东西对你不起作用,请让我们知道!

CLI

  使用 dotnet watch 从命令行启动应用时使用热重载:

安装 .NET 6 预览4。

更新你的 ASP.NET Core 项目到 .NET 6。

launchSettings.json 中添加 “hotReloadProfile”: “aspnetcore” 属性。

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

使用 dotnet watch 运行项目并查看输出,它应该显示启用了热重载。

对您的应用程序托管代码进行热重载支持的代码更改,并保存文件以应用。

  就像 Visual Studio 的体验一样,你的新逻辑现在应该被应用了,你应该会在下次更新的代码被重新执行时看到应用程序行为的变化。

  您也可以通过这种方式修改“blazorwasm”热重载配置文件,在您的 Blazor WebAssembly 项目中使用上面类似的步骤。你甚至可以在 WindowsForms 或其他由 CoreCLR 支持的项目中尝试它,只需手动在 Properties 文件夹下添加一个带有上面示例内容的名为 launchSettings.json 的文件。

  这一功能仍在开发中,我们正在跟踪未来的改进,将更容易使用 dotnet watch 来热重载所有类型的 .NET Core 应用程序,而无需 launchSettings.json 文件,这在当前版本中的还是一个限制。

将在 Visual Studio 2022 和 .NET 6 中的实现最佳

  今天的发布只是我们为 .NET 开发人员提供的热重载的预览版。在 .NET 6 预览版和 Visual Studio 2019 中,只有部分功能可用。该特性的全功能会在 .NET 6(和未来版本的 .NET)以及 Visual Studio 2022 中作为框架和工具集提供最完整功能和最佳经验。

  为了让你大致了解我们计划在未来的预览版和最终版本中提供哪些特性,这里有一些例子:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfdgp.html