Arm64 Visual Studio

马克·唐尼

我们很高兴地宣布,Visual Studio 2022 17.3 Preview 2的发布现在可以在Windows 11上作为本机Arm64应用程序使用!这将是VisualStudio的第一个版本,它本机支持在基于Arm的处理器上构建和调试Arm64应用程序。

我们此次预览的主要目标是引入并稳定开发人员在Arm64上运行的应用程序时使用的最流行的工作负载,并从社区收集反馈,以帮助我们在今年晚些时候实现通用可用性(GA)时优先考虑其他体验和工作负载。

今天将Visual Studio引入Arm64上的Windows 11!

在Microsoft Build 2022会议期间,Windows团队宣布专注于开发人员的新型Arm64桌面设备。我们很高兴能加入我们的Windows。NET和C++合作构建充满活力的Arm64开发人员工具链今天,我们提供了最新版本的Visual Studio,它大大降低了对x64仿真的依赖性。虽然x64模拟器的功能已经扩展,但我们知道,最好的Arm开发人员体验将由在Arm64上本机运行的工具提供支持。

确定最重要工作负荷的优先级

Arm64开发是一项长期投资,我们通过关注使Arm64开发者能够在Windows 11 Arm64上高效工作所需的开发人员工作量,开始了这一旅程。Arm64的第一次预览将于今天启动,并启用以下工作负载:

  • 使用C++进行桌面开发(用于基于MSBuild的项目)
  • .NET桌面开发(WinForms,WPF)使用这两者。NET框架和现代。净利润。
  • NET与Web开发

这些工作负载将在本日历年末正式发布,我们将征求开发人员社区的反馈意见,以帮助我们优先考虑更多体验。我们的首要目标是优先考虑尽可能在本地运行的工具和功能,并仅在必要时使用仿真。

对于托管开发人员

.NET6从第一天起就对Arm64提供了本机支持,此版本扩展了对的本机Arm64支持。NET框架的形式。NET Framework 4.8.1运行时和SDK。现在,您可以使用这两者来构建托管桌面应用程序(Windows窗体和WPF)。NET 6+和。NET框架4.8.1。

.NET Framework 4.8.1包含在今年晚些时候发布的Windows 11的下一个主要更新中,并将在将来用于以前的操作系统。

虽然第一次预览将包括Windows窗体、WPF和Web应用程序,但支持Windows App SDK。NET MAUI和Universal Windows Platform(UWP)将在后续预览中提供。

当您在重新构建应用程序之前开始使用Visual Studio的Arm64版本时,请确保将对NuGet包的引用更新为支持Arm64的最新版本。大多数NuGet软件包只需在不需要额外更改的情况下运行即可(我们的分析显示,前1000个软件包中有98%已经在Arm64上运行)。

对于本地开发人员

MSVC工具集,包括C++编译器、库和运行时,支持以Arm64为目标已经有一段时间了,我们不断提高Arm生成代码的质量然而,当直接在Arm64设备上运行时,编译器将运行模拟。通过今天的发布,您可以访问新的本地Arm64 MSVC编译器工具集,包括其C++代码分析功能,同时仍针对MSVC当前支持的所有平台:

主机架构(编译器运行的平台) 目标体系结构(编译器为其生成二进制文件的平台) 安装路径
ARM64型 ARM64,包括ARM64EC* <VS安装>\VC\Tools\MSVC\<version>\bin\HostARM64\ARM64
ARM64型 x86(x86) <VS安装>\VC\Tools\MSVC\<version>\bin\HostARM64\x86
ARM64型 x64像素

<VS安装>\VC\Tools\MSVC\<version>\bin\HostARM64\x64

*Arm64EC允许您增量构建Arm64本机应用程序通过利用ARM的本机速度(如果可用),并允许x64二进制文件在ARM上尚不可用的相同进程(在仿真模式下)中无缝互操作。

如果您刚刚开始使用或考虑使用Arm64,请放心,您使用的许多C++库已经在Arm64上可用。Vcpkg也在Arm64上运行,虽然有些依赖3第个party工具可能仍在运行模拟,您可以在本地ARM64构建环境中直接成功构建和使用600+C++库。 

如果你是Windows 11 Arm64设备上的Visual Studio C++开发人员,我们邀请您查看最新的Visual Studio预览。通过安装C++桌面工作负载,您可以使用MSBuild加载任何桌面C++项目和解决方案,以尝试您在Visual Studio中已经熟悉的任何编辑、生成和调试功能。后续更新将支持其他C++Visual Studio工作负载(如游戏)和构建系统(如CMake)。

安装Arm64 Visual Studio

x64和Arm64 Visual Studio都有一个安装程序。17.3预览版2安装程序检测系统架构,然后在Arm64设备上下载并安装Visual Studio的Arm64版本(支持Windows 11)。

重要


请注意,对于Windows 11 Arm64,在安装Visual Studio 2022 17.3预览版之前,必须卸载Visual Studio的所有早期版本。

扩展作者

我们对扩展作者的官方支持即将到来!虽然需要重建本机扩展以支持Arm64,但我们预计需要的更新最少。NET扩展编译为任何CPU.

我们将在未来的博客文章中分享更多关于如何将扩展迁移到Arm64的信息,敬请关注!

立即开始Arm64 Visual Studio预览!

我们一直在努力支持我们的Arm64开发人员社区,其中包括跨硬件、工具链的改进,当然还有我们的旗舰开发环境Visual Studio。对我们来说,这只是旅程的开始;在这个预览期,将会有更多的体验。

今天,我们邀请构建Windows窗体、WPF和本机应用程序的Arm64开发人员查看我们的最新预览!要使用本机Arm64 Visual Studio体验,您需要执行以下操作:

  • 确保您的Arm64设备带有Windows 11。
  • 从Arm64设备中卸载任何早期版本的Visual Studio 2022。
  • 下载并安装Visual Studio 2022 17.3预览版2。

我们很想听听您关于我们将在网上带来的体验。让我们知道你喜欢什么,以及你是否有建议让Visual Studio在Arm64上做得更好。您可以通过以下方式与我们分享反馈开发者社区:通过报告任何错误或问题报告问题并分享您的关于优先安排更多工作量的建议.

33条评论

讨论结束。登录以编辑/删除现有评论。

  • 克里斯托夫·皮肖

    非常好的消息。
    使用C++,我们现在已经知道了多平台。NET在ARM64上确实有机会。
    很少有人了解(并且知道)CL.exe(Visual C++编译器)的后端优化器和代码生成输出嵌入了CoreCLR的JIT中。
    .NET具有30年C++代码生成的优势。
    我们都知道,未来需要更高的效率,但问题是这样。NET的孩子们采用了一种使用数千个无用依赖项的重量级软件结构。
    我们需要教育他们在专用平台上构建一切。
    我对编译器和vs人员在运送复杂软件方面的不懈努力表示敬意。
    但我问的主要问题是:我们需要教育。NET粉丝们要更高效,少用东西,少用组件,少用无用的东西,让他们明白简单就是美丽…。
    是的,我知道,这是一个巨大的挑战。
    克里斯。

  • 威廉·丹顿 1

    你有没有可能考虑为已经安装了windows 11和VS预览版的arm构建一个虚拟机映像?我很想在我的M1 macbook上试试这个,但配置所有部件的时间投入太大了,不可能一下子就完成。
    我曾尝试过与运行在仿真环境中的windows11arm+VS进行比较,但其100%不可用。运行它的时间并不重要,所以我还没有准备好再次尝试。

    • 玛丽娜·桑德斯特伦 2

      我只是想告诉大家,我已经在macOS Ventura(Beta)上的Parallels中试用过。Visual Studio现在在Silicon/ARM64上运行得很好!为此创建VM是非常值得的。我刚刚卸载并重新安装了这个。Parallels在文图拉有一个讨厌的bug。

      • 法布里斯·斯贝罗 0

        我还用我的MacBook Air M1(MacOs Big Sur,ram 16Go 8 CPU 8 GPU)上的Parallels尝试过它,它很棒。
        我崩溃了,但它很快重新启动,没有任何损失
        这将改变我的日常生活。
        谢谢您!!谢谢您!!谢谢您!!

        嵌套步骤,Arm64上的SQL Server?

  • Alishoooo Estres公司 0

    是否有计划用构建插件/扩展。NET Core for Visual Studio(现在可以使用.NET Framework。)

  • 托梅尔·沙米 0

    终于!
    这是个好消息!!!

  • 延斯·N 0

    是否可以从中创建和使用x86 COM对象。Net48 arm64现在有arm64ec了吗?我如何使它工作?c++rt有什么区别?它必须是最新的还是只安装旧的rt?

    • 奥斯汀·奥特Microsoft员工 0

      ARM64EC仅适用于模拟进程(因此可以是ARM64EC或x64可执行文件)。Arm64。NET Framework 4.8.1是本机arm64,因此无法加载ARM64EC或x64组件。此博客帖子包含一些关于ARM64EC建筑的信息:Visual Studio中的ARM64EC支持MSVC团队将很快提供更多关于构建ARM64EC和其他相关场景的文档。

      • 延斯·N 0

        好的。那么arm64ec和我想的正好相反。
        谢谢!

  • 维塔利诺色素 0

    我们开始吧!!

  • 斯特凡·科尔 0

    如何使用多个针对ARM64的x64项目构建现有WPF/WinForms解决方案?我需要用ARM64运行时标识符创建专用的csproj文件吗?据我所知,我不能只在项目中添加多个RID,对吗?

    • 奥斯汀·奥特Microsoft员工 0

      首先,只有构建exe的项目需要专门为Arm64构建,以便在Arm64框架上本地运行。
      Dll项目可以保留任何CPU,不需要任何更改。

      对于正在建造前男友的项目,现在有两种方法可以解决这个问题:
      1) 创建一个只有Arm64的新项目
      2) 向项目中添加第二个构建配置(或几个,可能是“Arm64|Debug”和“Arm64 |Release”),并两次构建同一项目
      在新项目或特定于Arm64配置的项目中,确保

      ARM64型

      存在将导致exe特定于Arm64并在本机Arm64 CLR上运行。

  • 迈克尔·米查尔斯基 0

    所以,这是我对当前形势的理解。如果我有任何错误,请告诉我:

    MS制作了一个ARM本地版本的visual studio。
    一些工作负载已启用并完全在arm上运行。(C++和一些.net,但不是全部)

    这就提出了一个问题,arm版本是否可以完全工作(对于某些软件预览,适当的值为“fully”),例如,我是否可以安装arm不支持的其他语言,并在仿真下运行它们,以及执行其他工作负载,但最终只使用x64仿真。如果它确实有效,它是否仍能产生与我在x64机器上开发并以ARM为目标时相同的东西?如果不是,预览的硬限制是什么(在仿真中不仅工作缓慢,而且根本不工作的东西)

    • 奥斯汀·奥特Microsoft员工 0

      安装VS的Arm64本机版本时,当前只能从上面列出的3个工作负载中进行选择,其他工作负载不可安装。
      我们很想听到关于您的开发场景需要哪些其他工作负载或组件的反馈,以便我们可以优先考虑它们。

      特定于Arm64 VS的一组问题可以在以下开发者社区中找到:https://developercommunity.visualstudio.com/search?space=8&q=%5Barm64%5D.

      关于仿真的注意事项:总会有一些进程运行仿真,因为某些工具需要与构建输出的架构相匹配(特别是诊断工具,或者理论上如果某些依赖项不存在于本机Arm64中)。

  • 埃尔南·马丁内斯 2

    Tlbimp是否支持/machine:ARM64?😊

    也许这是一个正在进行的工作,但我看到NETFX 4.8.1 Tools/Arm64相当贫瘠。威尔。Net Framework SDK工具也在本机ARM64中提供?

    • 马克·唐尼Microsoft员工 0

      嗨,赫尔曼!

      是的,将有一个带有/arm64拱形标志的TlbImp。NET SDK。TlbExp也将得到适当更新。

  • 贝特温·赞加内赫 0

    所以我只是在Arm的Windows 11上尝试了这一点,但它似乎仍在尝试模仿X64。根据任务管理器,Devenv.exe和MSBuild.exe仍在x64体系结构上运行,而且性能也没有任何改善。

    • 马克·唐尼Microsoft员工 0

      嘿Betwin,

      请注意,如果您安装了x64 Visual Studio,它将不会自动更新到Arm64 VS。您需要卸载现有的Visual Studio并下载并安装最新的预览安装程序。

      https://visualstudio.microsoft.com/vs/preview/

      谢谢

  • 李·马布里 0

    ALONZO窃取信息,试图杀害使用软件或任何微软产品的人,并称下一个也是白宫的炸弹袭击微软

  • 诺里·萨凯 0

    你好,
    未安装ARM64的atls.lib。但是,安装了x86和x64的atls.lib。这是你期望的行为吗?
    当做,

    • 奥斯汀·奥特Microsoft员工 1

      安装时,您是否从Individual Components选项卡中选择了“C++ATL for latest v143 build tools(ARM64)”组件?
      我认为这应该确保您的VS安装中包含arm64副本。

  • 伊曼纽尔·科西奥斯 0

    这是否意味着IIS现在可以在Windows 11 ARM64上执行?目前我可以构建一些项目(.net 4.7.2和.net 6核心),但除了visual studio 2022中的简单Blazor项目外,目前没有任何项目可以执行。因为我使用的是mac m1,所以我使用了当前本地macos中的Rider来构建和运行我的.net项目——我只使用过visual studio,但不得不迁移到另一个ide。

    我将测试visual studio预览,看看它现在是否可以运行.netcore项目(3.1、6)和.netframework 4.7.2项目。
    不幸的是,由于对设计环境的卓越支持,我的项目团队已经转而使用macbook m1;我们一直在努力恢复英特尔,但这很可能不会很快发生,因为我们有一个混合的平台包,而不仅仅是。净利润。

  • 丹尼尔·谢瓦 0

    我正在使用并行MacBook M1 Max。我刚下载了Preview 2,它的性能比仿真版本要好得多。我不得不回到17.2,因为17.3预览版2没有我需要的所有工作量。所以我有两个问题。
    1) 您是否计划在GA版本上添加更多工作负载。例如Azure、数据库、SSIS、SSRS…(这是企业的核心工具)
    2) 我知道很难在第一个GA版本上准备好所有工作负载,所以如果没有准备好,我们可以同时运行仿真版本和arm64版本。如果没有,那么这对我来说是一个不可启动的项目。

    • 马克·唐尼Microsoft员工 0

      嘿Daniel,

      1.是的,我们计划增加更多工作量。总体目标是随着时间的推移添加更多工作负载,因此请继续提供反馈,这有助于我们创建优先级。开发者社区网站位于此处https://developercommunity.visualstudio.com/home网站
      2.我们不支持Arm64 VS与x64 VS并排使用。

      谢谢

  • 延斯·N 0

    Windows 10是否会获得支持arm64的net481?我考虑的不仅仅是Surface Pro X,它在大多数情况下可能已经升级到Windows 11,还有Windows 10 Iot。

  • 马丁·阿伦达西 0

    好消息!!–使用ARM64 VS支持哪些语言??

  • 监琼斯 1

    我正试图建立一个遗产。NET Framework 4.8 Web应用程序并获取以下错误:
    错误MSB3082:任务失败,因为找不到“aspnet_compiler.exe”或。未安装NET Framework v4.0。请安装。NET Framework v4.0。

    这个场景受支持吗?如果受支持,我想知道是否有人能为我指出正确的方向,让它继续下去?更多详细信息…
    全新Win11 ARM64安装。
    新鲜VS 2022 17.3预览5
    Web应用程序似乎运行良好。我只是无法预编译视图。

    .csproj文件的一些可能相关部分:

    <Project ToolsVersion=“15.0”DefaultTargets=“Build”xmlns=“http://schemas.microsoft.com/developer/msbuild/2003"><导入项目=“$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props”/>...<Target Name=“MvcBuildViews”AfterTargets=“AfterBuild”Condition=“'$(MvcBuildView)'=='true'”><AspNetCompiler VirtualPath=“temp”物理路径=“$(WebProjectOutputDir)”/></目标>
    • 奥斯汀·奥特Microsoft员工 0

      你能通过VS或开发者社区将此作为反馈单归档吗?
      这将使跟踪和调查这件事变得更加容易。

  • 甘尼什·詹吉尔 0

    与x86 arch相比,我在并行M1 Mac上的性能有了显著提高。

    正在等待Windows App SDK工作负载支持。

  • 亚历克斯·伊万诺夫 0

    Visual Studio 2022 17.3发布。如何安装本机ARM64版本?

  • 塔哈·亚辛·库库克 0

    Xamarin Native是否会成为支持ARM的VS的一部分?

反馈usabilla图标