{"id":1397,"date":"2026-09-25T10:44:00","date_gmt":"2026-09-25T17:44:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/?p=1397"},"modified":"2026-09-25T10:48:53","modified_gmt":"2026-09-25T17:48:53","slug":"winappcli-v0-7-0-release-announcement","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/winappcli-v0-7-0-release-announcement\/","title":{"rendered":"WinAppCLI v0.7.0 &#8211; Windows Sandbox automation, Native AOT support, single-file applications, and more"},"content":{"rendered":"<p><a href=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/winapp-cli-v0.7.0-hero-950.webp\"><img decoding=\"async\" class=\"wp-image-1419 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/winapp-cli-v0.7.0-hero-950-300x162.webp\" alt=\"WinApp CLI 0.7.0 release hero image\" width=\"928\" height=\"501\" srcset=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/winapp-cli-v0.7.0-hero-950-300x162.webp 300w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/winapp-cli-v0.7.0-hero-950-768x416.webp 768w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/winapp-cli-v0.7.0-hero-950.webp 950w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/a><\/p>\n<p>Windows App Development CLI v0.7.0 has shipped, and we&#8217;re excited to share it. Here are the highlights:<\/p>\n<ul>\n<li><strong>Windows Sandbox execution<\/strong>: run, debug, and UI-automate your app inside a throwaway Windows Sandbox, never installing it on your host, plus a new <code class=\"language-default\">winapp target<\/code> family for driving the guest.<\/li>\n<li><strong>Native AOT<\/strong>: build and launch a Native AOT app with package identity in a single <code class=\"language-default\">winapp run<\/code>.<\/li>\n<li><strong>One-step project packaging<\/strong>: <code class=\"language-default\">winapp pack<\/code> works straight from a .NET project, with no separate build or publish step.<\/li>\n<li><strong>Single-file apps<\/strong>: run a single <code class=\"language-default\">.cs<\/code> file with full package identity.<\/li>\n<li><strong><code class=\"language-default\">winapp find-api<\/code><\/strong>: search the exact API surface a project references.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/microsoft\/microsoft-ui-reactor\/tree\/main\">Reactor <\/a>(MVU) templates<\/strong>: scaffold pure-C# WinUI apps with <code class=\"language-default\">winapp new<\/code> (experimental).<\/li>\n<li><strong>Scoped and typed UI automation<\/strong>: more precise selectors, plus coordinated automation for agents driving apps concurrently.<\/li>\n<li><strong>Standalone NuGet packages<\/strong>: use WinApp&#8217;s UI Automation engine and WinUI analyzer in your own projects.<\/li>\n<\/ul>\n<p>Grab it with <code class=\"language-default\">winget install Microsoft.WinAppCLI<\/code>, or head to <a href=\"https:\/\/github.com\/microsoft\/winappCli\">the repo<\/a> for npm and other install options.<\/p>\n<p>&nbsp;<\/p>\n<p><div  class=\"d-flex justify-content-left\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/github.com\/microsoft\/winappCli\" target=\"_blank\">Get started with the Windows App Development CLI<\/a><\/div><\/p>\n<p>Here&#8217;s a tour of what&#8217;s new.<\/p>\n<h2>\ud83c\udfdd\ufe0f Run and automate your app in Windows Sandbox<\/h2>\n<div>\n<p>The new <code class=\"language-default\">--on sandbox<\/code> option runs your app inside a persistent <a href=\"https:\/\/learn.microsoft.com\/windows\/security\/application-security\/application-isolation\/windows-sandbox\/windows-sandbox-overview\">Windows Sandbox<\/a> instead of on your desktop. You build on your machine as usual, and WinApp deploys, registers, launches, and UI-automates the app inside the guest. The app is never installed on your host, and there is no silent host fallback: a command that asks for the Sandbox runs there or fails.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Build on the host, then run and automate inside the Sandbox\r\nwinapp run . --on sandbox --detach\r\nwinapp ui inspect --on sandbox -a MyApp\r\nwinapp ui invoke SubmitButton --on sandbox -a MyApp<\/code><\/pre>\n<p><code class=\"language-default\">--detach<\/code> returns after launch so the next command can inspect the app. The Sandbox stays running between commands and rebuilds, which keeps the inspect, act, and verify loop fast. Every <code class=\"language-default\">winapp ui<\/code> verb accepts <code class=\"language-default\">--on sandbox<\/code>, and app names, PIDs, window handles, and selectors are all resolved inside the guest.<\/p>\n<p><iframe loading=\"lazy\" title=\"UI Automation in Windows Sandbox with WinAppCLI\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/vJpDo3aQhOI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p>WinApp also provisions what the guest needs to run your app. It reads the app&#8217;s package dependencies, Windows App SDK requirements, and <code class=\"language-default\">*.runtimeconfig.json<\/code>, then installs the missing supported runtimes in the guest, using your host caches where it can, rather than on your machine.<\/p>\n<\/div>\n<h3>\ud83c\udfaf The new <code class=\"language-default\">winapp target<\/code> command family<\/h3>\n<div>\n<p>Driving the guest involves more than launching an app, so v0.7.0 adds a <code class=\"language-default\">winapp target<\/code> command family for inspecting the Sandbox, moving files in and out, running setup commands, and capturing the whole guest desktop.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Check guest readiness, deployments, and windows (no VM is started)\r\nwinapp target snapshot sandbox --json\r\n\r\n# Run setup and diagnostics as the guest user\r\nwinapp target exec sandbox -- dotnet --info\r\n\r\n# Copy files in and out (paths are relative to the guest work root)\r\nwinapp target push sandbox .\\setup.ps1 Setup\\setup.ps1\r\nwinapp target pull sandbox Results .\\results\r\n\r\n# Capture the whole native guest desktop, not just one app window\r\nwinapp target screenshot sandbox -o .\\sandbox.png\r\nwinapp target record sandbox --duration-sec 20 --frames -o .\\sandbox.mp4<\/code><\/pre>\n<p>Captures and recordings always land on the host, even when you omit <code class=\"language-default\">-o<\/code>, and target screenshots are unscaled so their pixel coordinates map directly to coordinate-input verbs like <code class=\"language-default\">ui drag<\/code> and <code class=\"language-default\">ui touch --at<\/code>. For agents driving the guest concurrently, set <code class=\"language-default\">WINAPP_UI_WORKFLOW_ID<\/code> to the same value across cooperating commands so they share a UI turn. See the <a href=\"https:\/\/github.com\/microsoft\/winappCli\/blob\/main\/docs\/sandbox-execution.md\">Windows Sandbox execution guide<\/a> for prerequisites, runtime provisioning, and the full workflow.<\/p>\n<\/div>\n<h2>\ud83d\ude80 Publish Native AOT apps with package identity<\/h2>\n<div>\n<p><code class=\"language-default\">winapp run<\/code> can now build and launch a Native AOT app straight from your project. Set <code class=\"language-default\">PublishAot<\/code> in the project and pass <code class=\"language-default\">--aot<\/code>, and WinApp runs <code class=\"language-default\">dotnet publish<\/code> with your AOT configuration, then launches that output with package identity. There&#8217;s no separate publish step and no hunting for the folder, and it supports x64 and ARM64 projects.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># In the project file:\r\n# &lt;PropertyGroup&gt;&lt;PublishAot&gt;true&lt;\/PublishAot&gt;&lt;\/PropertyGroup&gt;\r\n\r\nwinapp run . --aot\r\nwinapp run . --aot -c Release   # use -p PublishAot=true for a one-time override\r\n<\/code><\/pre>\n<\/div>\n<p><!-- Screenshot placeholder: `winapp run . --aot` output --><\/p>\n<h2>\ud83c\udfd7\ufe0f Package a .NET project in one step<\/h2>\n<div>\n<p><code class=\"language-default\">winapp pack<\/code> now works straight from a .NET project, with no separate build or publish step in between. Point it at a <code class=\"language-default\">.csproj<\/code> and it builds, packages, and (with <code class=\"language-default\">--cert<\/code>) signs in one step, mirroring <code class=\"language-default\">run<\/code>&#8216;s project mode. No separate <code class=\"language-default\">dotnet build<\/code> and no locating the output folder.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Build, package, and sign straight from a project\r\nwinapp pack .\\MyApp.csproj -c Release --arch arm64 --cert .\\devcert.pfx<\/code><\/pre>\n<\/div>\n<h2>\ud83d\udcc4 Run single-file .NET apps with package identity<\/h2>\n<div>\n<p>.NET 10 lets you run a single <code class=\"language-default\">.cs<\/code> file with no project file. Point <code class=\"language-default\">winapp run<\/code> at it and WinApp builds the file, generates a manifest from its <code class=\"language-default\">#:property<\/code> directives, and launches it with package identity, so <code class=\"language-default\">Package.Current<\/code>, app notifications, <code class=\"language-default\">ApplicationData<\/code>, and on-device AI all work. Arguments pass through to your app just as <code class=\"language-default\">dotnet run<\/code> does.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">\/\/ counter.cs: a single-file app, no .csproj\r\n#:property OutputType=WinExe\r\n#:property TargetFramework=net10.0-windows10.0.22621.0\r\n#:property UseWinUI=true\r\n#:property WinAppPackageName=com.contoso.counter\r\n#:property WinAppDisplayName=Contoso Counter\r\n\r\n\/\/ ... your app code ...<\/code><\/pre>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Build the single file and launch it with package identity\r\nwinapp run counter.cs<\/code><\/pre>\n<\/div>\n<p><!-- Screenshot placeholder: `winapp run counter.cs` launching a file-based app with identity --><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample.webp\"><img decoding=\"async\" class=\"wp-image-1424 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample-300x180.webp\" alt=\"WinApp single file support terminal output.\" width=\"795\" height=\"477\" srcset=\"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample-300x180.webp 300w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample-1024x616.webp 1024w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample-768x462.webp 768w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample-1536x924.webp 1536w, https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-content\/uploads\/sites\/61\/2026\/09\/single-file-sample.webp 1666w\" sizes=\"(max-width: 795px) 100vw, 795px\" \/><\/a><\/p>\n<h2>\ud83d\udd0e Search the API surface with <code class=\"language-default\">winapp find-api<\/code><\/h2>\n<div>\n<p>Where v0.6&#8217;s <code class=\"language-default\">find-ui<\/code> searches WinUI samples, the new <code class=\"language-default\">winapp find-api<\/code> searches the API surface: the types, members, and enums a project references. It builds a local index from your project&#8217;s restored NuGet and SDK packages, so answers reflect the API you can compile against rather than a model&#8217;s recollection of it. It&#8217;s built for AI coding agents, with <code class=\"language-default\">--json<\/code> output and non-zero exit codes on missing symbols, and it works just as well typed by hand.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Search types and members by intent\r\nwinapp find-api \"language model\"\r\n\r\n# List a type's properties, events, and methods\r\nwinapp find-api members Microsoft.UI.Xaml.Controls.NavigationView\r\n\r\n# Verify specific properties exist before generating code\r\nwinapp find-api check-property InfoBar Severity IsOpen Message Title\r\n\r\n# Explore the machine's Windows SDK before any project exists\r\nwinapp find-api \"acrylic brush\" --project sdk<\/code><\/pre>\n<p>The index is built on first use and refreshed automatically when the project is restored, so restore first with <code class=\"language-default\">winapp restore<\/code> or <code class=\"language-default\">dotnet restore<\/code>. From a directory with no project or solution, <code class=\"language-default\">find-api<\/code> answers from the machine-wide Windows SDK scope, so you can explore APIs offline before scaffolding anything. Negative answers are qualified when the index is incomplete, so an agent won&#8217;t treat &#8220;not indexed&#8221; as &#8220;does not exist.&#8221;<\/p>\n<\/div>\n<h2>\u269b\ufe0f Scaffold Reactor (MVU) apps with <code class=\"language-default\">winapp new<\/code><\/h2>\n<div>\n<p><code class=\"language-default\">winapp new<\/code> can now scaffold <a href=\"https:\/\/github.com\/microsoft\/microsoft-ui-reactor\/tree\/main\"><strong>Reactor<\/strong><\/a> templates. Where the existing XAML templates define the UI in markup with a C# code-behind, Reactor templates are pure C# with no XAML, using an MVU (Model-View-Update) pattern. The template list is read live from the installed pack, so run <code class=\"language-default\">winapp new --list<\/code> to see the current set.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Blank Reactor app (pure C#, no XAML)\r\nwinapp new --name MyApp --template reactor\r\n\r\n# Reactor app demonstrating the MVU pattern\r\nwinapp new --name MyApp --template reactor-mvu\r\n\r\n# NavigationView and TabView starters are available too\r\nwinapp new --name MyApp --template reactor-navview\r\nwinapp new --name MyApp --template reactor-tabview<\/code><\/pre>\n<p>Reactor templates are experimental. They reference the prerelease <code class=\"language-default\">Microsoft.UI.Reactor<\/code> packages, whose APIs can change or be removed, and they require the .NET 10 SDK or newer. <code class=\"language-default\">winapp new<\/code> marks them (Experimental) in <code class=\"language-default\">--list<\/code> and the interactive picker, sets <code class=\"language-default\">\"Experimental\": true<\/code> in <code class=\"language-default\">--json<\/code>, and never chooses one as the default template. On an older SDK it fails up front with the version it needs rather than scaffolding a project you can&#8217;t build. To search Reactor sample code, pass <code class=\"language-default\">--source reactor<\/code> to <code class=\"language-default\">find-ui<\/code>.<\/p>\n<\/div>\n<h2>\ud83c\udfaf Scoped and typed UI automation queries<\/h2>\n<div>\n<p>The <code class=\"language-default\">winapp ui<\/code> engine can now target elements more precisely. Queries accept a scope and type filter, so you can search under a specific subtree, restrict to a control type, or match by class name instead of walking the whole tree. This makes the selectors that agents generate deterministic and repeatable.<\/p>\n<\/div>\n<div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Scope a search to a subtree and a control type\r\nwinapp ui search \"Welcome to MyApp\" -a myapp --root MailRow --type Text --class-name TextBlock\r\n\r\n# Read a typed property from a scoped element\r\nwinapp ui get-property Subject -a myapp --root MailRow --property Value<\/code><\/pre>\n<p>Alongside scoped, typed queries, this release adds a typed geometry context for element bounds, exposes whole-document <code class=\"language-default\">TextPattern<\/code> formatting through <code class=\"language-default\">get-property<\/code>, and makes explicit <code class=\"language-default\">invoke<\/code> actions run a specific action rather than guessing a control&#8217;s default. Because these live in the shared UI Automation engine, they apply whether you automate your local desktop or a Sandbox guest.<\/p>\n<\/div>\n<h2>\ud83d\udce6 Use the UI automation engine as a library on NuGet<\/h2>\n<div>\n<p>The engine behind <code class=\"language-default\">winapp ui<\/code> now ships as standalone NuGet packages, so you can inspect and drive Windows apps from your own test and automation code without shelling out to the CLI. It works against any framework: WinUI 3, WPF, WinForms, and Win32.<\/p>\n<\/div>\n<ul>\n<li><strong><code class=\"language-default\">Microsoft.Windows.SDK.BuildTools.WinApp.UIAutomation<\/code><\/strong>: the Windows UI Automation (UIA) engine that powers <code class=\"language-default\">winapp ui<\/code>. It provides element-tree inspection, semantic selectors, UIA pattern interaction, input injection for keyboard, mouse, touch, and pen, and window capture.<\/li>\n<li><strong><code class=\"language-default\">Microsoft.Windows.SDK.BuildTools.WinApp.UIAutomation.Recording<\/code><\/strong>: window and element video recording. It captures a window or element region at a fixed cadence and encodes it to H.264 MP4 through Media Foundation, with optional timestamped JPEG frame bundles. It&#8217;s split from the main package so projects that only inspect and drive UI don&#8217;t take a dependency on SkiaSharp.<\/li>\n<\/ul>\n<h2>\ud83e\ude7a Add the WinUI analyzer to your own build<\/h2>\n<div>\n<p>The WinUI 3 Roslyn analyzer the CLI relies on is now available on its own as <code class=\"language-default\">Microsoft.Windows.SDK.BuildTools.WinUIAnalyzer<\/code>. Add the package to a project and it runs at build time, surfacing issues in your editor and in CI, whether or not you use the rest of WinApp.<\/p>\n<\/div>\n<div>\n<p>It catches UWP-to-WinUI 3 API compatibility problems, data-driven migration suggestions, runtime and XAML layout pitfalls such as incorrect <code class=\"language-default\">x:Bind<\/code> usage, MVVM and Community Toolkit pattern regressions, and interop bugs across WebView2, COM, and AI. To keep false positives low, rules resolve symbols through the semantic model and verify the containing namespace before reporting, rather than matching on identifier names alone. No rule ships as an error by default, so it won&#8217;t unexpectedly break your build; you opt into build-breaking enforcement per rule through <code class=\"language-default\">.editorconfig<\/code>.<\/p>\n<\/div>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\"># Turn a specific rule into a build error\r\n# .editorconfig\r\n[*.cs]\r\ndotnet_diagnostic.WUI0001.severity = error<\/code><\/pre>\n<h2>\u26a1 Other notable changes<\/h2>\n<ul>\n<li><strong>Clearer install failures<\/strong>: a failed registration now explains <code class=\"language-default\">0x80073CF9<\/code> in plain language instead of surfacing a bare HRESULT.<\/li>\n<li><strong>Agent Plugins 1.0<\/strong>: the WinApp plugin now conforms to the Agent Plugins 1.0 specification, with new contributor skills for code-quality pre-checks and the PR lifecycle.<\/li>\n<li><strong>Consolidated security guidance<\/strong>: a new <a href=\"https:\/\/github.com\/microsoft\/winappCli\/blob\/main\/docs\/security.md\">security guidance page<\/a> collects developer-facing security guidance in one place, linked from the README.<\/li>\n<\/ul>\n<h2>\ud83d\udc1b Bug fixes<\/h2>\n<ul>\n<li><strong>Certificates<\/strong>: <code class=\"language-default\">cert install<\/code> now accepts a public <code class=\"language-default\">.cer<\/code>; <code class=\"language-default\">cert generate<\/code> rejects malformed and empty publisher distinguished names instead of silently falling back to your user name, and reports the public default password under <code class=\"language-default\">--json<\/code>.<\/li>\n<li>Fixed composite <code class=\"language-default\">ui screenshot<\/code> ignoring <code class=\"language-default\">--quiet<\/code>, and corrected screenshot host-path reporting.<\/li>\n<li>Fixed incomplete UI Automation descendant searches and empty UI values falling through to accessibility labels.<\/li>\n<li>Fixed incorrect <code class=\"language-default\">x:Bind<\/code> analyzer diagnostics and stopped shipping IntelliSense XML the CLI could not read.<\/li>\n<\/ul>\n<h2>\ud83d\udd12 Security &amp; infrastructure<\/h2>\n<ul>\n<li>Build tools are now verified to be Microsoft-signed before they run, and the build fails if any shipped binary is unsigned.<\/li>\n<li>Added a OneFuzz harness for the ZIP range extractor and fixed a bounds gap it found.<\/li>\n<li>Upgraded SkiaSharp and Svg.Skia past the libexpat CVE.<\/li>\n<\/ul>\n<h2>\ud83d\udda5\ufe0f Get started today<\/h2>\n<p>That&#8217;s v0.7.0: run and automate your app in an isolated Windows Sandbox, search the APIs a project references, work offline with real Gallery samples, publish Native AOT in one step, and build on WinApp&#8217;s own engines. It&#8217;s in public preview today, and we build these releases around the feedback we get. Tell us what&#8217;s working, and what isn&#8217;t, by filing issues on our <a href=\"https:\/\/github.com\/microsoft\/WinAppCli\">GitHub repository<\/a>, where you&#8217;ll also find the docs and guides.<\/p>\n<p><strong>Install via WinGet:<\/strong><\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">winget install microsoft.winappcli<\/code><\/pre>\n<p><strong>Install via npm:<\/strong><\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">npm install --save-dev @microsoft\/winappcli<\/code><\/pre>\n<p>Happy building!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows App Development CLI v0.7.0 has shipped, and we&#8217;re excited to share it. Here are the highlights: Windows Sandbox execution: run, debug, and UI-automate your app inside a throwaway Windows Sandbox, never installing it on your host, plus a new winapp target family for driving the guest. Native AOT: build and launch a Native AOT [&hellip;]<\/p>\n","protected":false},"author":73101,"featured_media":1419,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,89,71],"tags":[80,61,72,73,8],"class_list":["post-1397","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ifdef-windows","category-microsoft-ui-reactor","category-windows-app-development-cli","tag-agents","tag-developer","tag-winapp","tag-winappcli","tag-windows"],"acf":[],"blog_post_summary":"<p>Windows App Development CLI v0.7.0 has shipped, and we&#8217;re excited to share it. Here are the highlights: Windows Sandbox execution: run, debug, and UI-automate your app inside a throwaway Windows Sandbox, never installing it on your host, plus a new winapp target family for driving the guest. Native AOT: build and launch a Native AOT [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/posts\/1397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/users\/73101"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/comments?post=1397"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/posts\/1397\/revisions"}],"predecessor-version":[{"id":1447,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/posts\/1397\/revisions\/1447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/media\/1419"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/media?parent=1397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/categories?post=1397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/ifdef-windows\/wp-json\/wp\/v2\/tags?post=1397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}