首页 > 编程技术 > csharp

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

发布时间:2021-7-11 00:35

今天,我们很高兴向你介绍 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”按钮应用您的编辑。

  热重载支持已经存在的和即将到来的项目类型,例如 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 中使用调试器时尝试热重载:

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

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

CLI

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

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

  就像 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 中作为框架和工具集提供最完整功能和最佳经验。

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

  以上是我们目前的计划,请注意,计划可能会根据客户的反馈和时间表进行更改。

支持/不支持的更改和语言

  无论你如何使用 .NET 热重载,请注意,有些更改在运行时是不支持的,会提示你一个粗糙的编辑对话框,并要求你重新启动应用程序。我们仍致力于该特性和文档,以详细说明支持哪些编辑。现在,首先查看现有的编辑并继续(EnC)列表等效功能。由于热重载是由 EnC 驱动的,这将为你更好地理解这个新特性提供一个很好的起点。具体请参见:EnC 文档。

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

到此这篇关于在运行时编辑代码的 .NET 热重载的操作方法的文章就介绍到这了,更多相关.NET 热重载内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

标签:[!--infotagslink--]

您可能感兴趣的文章: