zoukankan      html  css  js  c++  java
  • .NET Hot Reload热重载

    参考文档:

    1.Introducing the .NET Hot Reload experience for editing code at runtime

    https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/

    2..NET Hot Reload Support via CLI

    https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/

    3.Update on .NET Hot Reload progress and Visual Studio 2022 Highlights

    https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/

    主要介绍在 Visual Studio 2019 版本 16.11(预览版 1)和dotnet watch.NET 6 中命令行工具(预览版 4)中的 .NET 热重载体验的可用性

    一、什么是 .NET 热重载?

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

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

    通过热重载,我们的目标是无论您喜欢以何种方式启动应用程序,都可以提供这种体验。在今天的版本中,您现在可以通过完全集成的 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 的未来版本中,我们正在努力添加对使用热重载的支持,而无需调试器,这意味着开发人员将能够使用 CTRL-F5 启动他们的应用程序,并且仍然使用热重载来修补他们正在运行的应用程序
    • 减少不受支持的更改数量:在 Visual Studio 2022 和 .NET 6+ 的未来版本中,我们计划跨多个团队开展工作,以减少运行时不受支持的编辑数量
    • 优化框架以最适合热重载:在 .NET 6 中,我们正在研究如何改进某些框架以更好地支持热重载。未来的例子将包括对 ASP.NET Core、.NET MAUI 和其他框架的改进,其中的调整和优化将使热重载更改在更多情况下更有用。

    虽然以上是我们当前的计划,但请注意,计划可能会根据客户的反馈和时间表而变化。

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

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

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

  • 相关阅读:
    编程基本功训练:流程图画法及练习
    BDB (Berkeley DB)数据库简单介绍(转载)
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    curl命令具体解释
    Filter及FilterChain的使用具体解释
    在Activity中为什么要用managedQuery()
    String类
    ruby语言仅仅是昙花一现
    android 内部类的优化
    linux类库之log4j-LogBack-slf4j-commons-logging
  • 原文地址:https://www.cnblogs.com/duyao/p/15659853.html
Copyright © 2011-2022 走看看