{"id":1353,"date":"2011-11-04T03:35:00","date_gmt":"2011-11-04T03:35:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2011\/11\/04\/microsoft-windows-simulator-rotation-and-resolution-emulation\/"},"modified":"2022-10-12T11:27:15","modified_gmt":"2022-10-12T18:27:15","slug":"microsoft-windows-simulator-rotation-and-resolution-emulation","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/microsoft-windows-simulator-rotation-and-resolution-emulation\/","title":{"rendered":"Microsoft Windows Simulator Rotation and Resolution Emulation"},"content":{"rendered":"<p>The Windows Simulator is a tool provided in Visual Studio 11 Developer Preview that helps debugging Metro style applications. Its main purpose is to enable debugging when developers want to test how their applications respond to the new Metro style\u00a0capabilities without having a device that supports those capabilities. It is implemented as a remote connection session to the same machine, but additionally emulates common hardware functionalities available in new devices, e.g., Rotation (i.e., orientation change), High Resolution and Touch. This article focuses on Rotation and Resolution emulation.<\/p>\n<h2>Rotation and Orientation-Aware Application<\/h2>\n<p>Roughly, an orientation-aware application can be coded in two ways (A sample app is available <a href=\"http:\/\/code.msdn.microsoft.com\/windowsapps\/OrientationSensor-Sample-99595893\">here<\/a> [1]):<\/p>\n<p><b>1. It can listen to the Orientation Sensor. As shown in the sample [1], it looks like:<\/b><span style=\"background: white; color: black;\">\u00a0\u00a0 <\/span><\/p>\n<p><span style=\"background: white; color: #2b91af;\"> OrientationSensor <\/span><span style=\"background: white; color: black;\">_sensor = <\/span><span style=\"background: white; color: #2b91af;\">OrientationSensor<\/span><span style=\"background: white; color: black;\">.GetDefault();<\/span><\/p>\n<pre class=\"lang:default decode:true \">if (_sensor != null) {\r\n _sensor.ReadingChanged += new TypedEventHandler&lt;OrientationSensor,\r\n OrientationSensorReadingChangedEventArgs&gt;(ReadingChanged);\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><b>2. It can also listen to the display orientation change.<\/b><\/p>\n<p>This can be hooked in HTML code through @media rule. Additional customization can be achieved by adding an event handler to <span style=\"font-family: courier new;\">Windows.Graphics.Display.DisplayProperties<\/span>.<\/p>\n<p>The Simulator doesn\u2019t support the emulation of Orientation Sensor, and is only able to trigger a display orientation change. Therefore in the following section, we will concentrate on examples of orientation-aware applications that work with the Simulator.<\/p>\n<h2>Orientation-Aware Application: HTML\/CSS Binding<\/h2>\n<p>Let\u2019s start with an orientation-aware application that has only HTML tag.<\/p>\n<p>1. Start Visual Studio Express. Then create a Blank Application, by clicking \u201cFile\/New Project\u2026\u201d, \u201cTemplates\/JavaScript\/Blank Application\u201d<\/p>\n<p>2. In the generated project, you will find a file default.html. Make the following modifications to the generated code:<\/p>\n<p>2.1 Add the following code to the end of &lt;head&gt;&#8230;&lt;\/head&gt; code block.<\/p>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">meta <\/span><span style=\"background: white; color: red;\">content<\/span><span style=\"background: white; color: blue;\">=\"text\/html; charset=utf-8\" <\/span><span style=\"background: white; color: red;\">http-equiv<\/span><span style=\"background: white; color: blue;\">=\"Content-Type\" \/&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">meta <\/span><span style=\"background: white; color: red;\">http-equiv<\/span><span style=\"background: white; color: blue;\">=\"X-UA-Compatible\" <\/span><span style=\"background: white; color: red;\">content<\/span><span style=\"background: white; color: blue;\">=\"IE=edge\" \/&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">meta <\/span><span style=\"background: white; color: red;\">http-equiv<\/span><span style=\"background: white; color: blue;\">=\"MSThemeCompatible\" <\/span><span style=\"background: white; color: red;\">content<\/span><span style=\"background: white; color: blue;\">=\"yes\" \/&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">style <\/span><span style=\"background: white; color: red;\">type<\/span><span style=\"background: white; color: blue;\">=\"text\/css\"&gt;<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fullscreen <\/span><span style=\"background: white; color: black;\">{ }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fill <\/span><span style=\"background: white; color: black;\">{ }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#snapped <\/span><span style=\"background: white; color: black;\">{ }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#deviceportrait <\/span><span style=\"background: white; color: black;\">{ }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: blue;\">@media screen and (<\/span><span style=\"background: white; color: red;\">-ms-view-state<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">full-screen) <\/span><span style=\"background: white; color: black;\">{<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fill <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#snapped <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#deviceportrait <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: black;\"> }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: blue;\">@media screen and (<\/span><span style=\"background: white; color: red;\">-ms-view-state<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">fill) <\/span><span style=\"background: white; color: black;\">{<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fullscreen <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#snapped <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#deviceportrait <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: black;\"> }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: blue;\">@media screen and (<\/span><span style=\"background: white; color: red;\">-ms-view-state<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">snapped)<\/span> <span style=\"background: white; color: black;\">{<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fullscreen <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fill <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#deviceportrait <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: black;\"> }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: blue;\">@media screen and (<\/span><span style=\"background: white; color: red;\">-ms-view-state<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">device-portrait) <\/span><span style=\"background: white; color: black;\">{<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fullscreen <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#fill <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: maroon;\">#snapped <\/span><span style=\"background: white; color: black;\">{ <\/span><span style=\"background: white; color: red;\">display<\/span><span style=\"background: white; color: black;\">: <\/span><span style=\"background: white; color: blue;\">none<\/span><span style=\"background: white; color: black;\">; }<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: black;\"> }<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;\/<\/span><span style=\"background: white; color: maroon;\">style<\/span><span style=\"background: white; color: blue;\">&gt;<\/span><\/pre>\n<pre class=\"code\">2.2 Add the following code to the end of &lt;body&gt;...&lt;\/body&gt; code block.<\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">div <\/span><span style=\"background: white; color: red;\">id<\/span><span style=\"background: white; color: blue;\">=\"fullscreen\" <\/span><span style=\"background: white; color: red;\">class<\/span><span style=\"background: white; color: blue;\">=\"win-contentSubtitle\"&gt;<\/span><span style=\"background: white; color: black;\">Full Screen<\/span><span style=\"background: white; color: blue;\">&lt;\/<\/span><span style=\"background: white; color: maroon;\">div<\/span><span style=\"background: white; color: blue;\">&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">div <\/span><span style=\"background: white; color: red;\">id<\/span><span style=\"background: white; color: blue;\">=\"fill\" <\/span><span style=\"background: white; color: red;\">class<\/span><span style=\"background: white; color: blue;\">=\"win-contentSubtitle\"&gt;<\/span><span style=\"background: white; color: black;\">Fill<\/span><span style=\"background: white; color: blue;\">&lt;\/<\/span><span style=\"background: white; color: maroon;\">div<\/span><span style=\"background: white; color: blue;\">&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">div <\/span><span style=\"background: white; color: red;\">id<\/span><span style=\"background: white; color: blue;\">=\"snapped\" <\/span><span style=\"background: white; color: red;\">class<\/span><span style=\"background: white; color: blue;\">=\"win-contentSubtitle\"&gt;<\/span><span style=\"background: white; color: black;\">Snapped<\/span><span style=\"background: white; color: blue;\">&lt;\/<\/span><span style=\"background: white; color: maroon;\">div<\/span><span style=\"background: white; color: blue;\">&gt;<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">&lt;<\/span><span style=\"background: white; color: maroon;\">div <\/span><span style=\"background: white; color: red;\">id<\/span><span style=\"background: white; color: blue;\">=\"deviceportrait\" <\/span><span style=\"background: white; color: red;\">class<\/span><span style=\"background: white; color: blue;\">=\"win-contentSubtitle\"&gt;<\/span><span style=\"background: white; color: black;\">Device Portrait<\/span><span style=\"background: white; color: blue;\">&lt;\/<\/span><span style=\"background: white; color: maroon;\">div<\/span><span style=\"background: white; color: blue;\">&gt; <\/span><\/pre>\n<p>Together, the above code claims that when the Metro style app is in full-screen landscape mode, the app shows \u201cFull Screen\u201d; when it is in full-screen portrait mode, the app shows \u201cDevice Portrait\u201d. (Note: by MSDN definition, \u201ca value of full-screen indicates the device is in landscape orientation and the application\u2019s client area is the same height and width as the device\u2019s height and width.\u201d For a detailed explanation about -ms-view-state media feature, refer to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/hh465826(v=VS.85).aspx\">this MSDN article<\/a>[2]).<\/p>\n<p>3. Now change the debug target from \u201cLocal Machine\u201d (the default value) to \u201cSimulator\u201d.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/2844.clip_image0014_thumb.png\"><img decoding=\"async\" style=\"margin: 0px;\" title=\"clip_image001[4]\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/2844.clip_image0014_thumb.png\" alt=\"clip_image001[4]\" width=\"219\" height=\"112\" border=\"0\" \/><\/a><\/p>\n<p>4. F5 to start the debugging.<\/p>\n<p>You should see the app displaying something like \u201cFull Screen\u201d.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/4503.clip_image0034_thumb.jpg\"><img decoding=\"async\" title=\"clip_image003[4]\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/4503.clip_image0034_thumb.jpg\" alt=\"clip_image003[4]\" width=\"443\" height=\"288\" border=\"0\" \/><\/a><\/p>\n<p>5. Click the Simulator \u201cRotate +90 degrees\u201d button to rotate the Simulator clockwise for 90 degrees.<\/p>\n<p>You should see the app displaying something like \u201cDevice Portrait\u201d.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/6644.clip_image0054_thumb.jpg\"><img decoding=\"async\" title=\"clip_image005[4]\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/6644.clip_image0054_thumb.jpg\" alt=\"clip_image005[4]\" width=\"318\" height=\"421\" border=\"0\" \/><\/a><\/p>\n<p>In summary, we have shown a sample of how to write an orientation-aware Metro style app. Without orientation sensor, it is not straightforward to trigger \u2013ms-view-state event so that one can test his\/her Metro style app. The Simulator comes to the rescue in this case.<\/p>\n<h2>Orientation-Aware Application: Binding through Event Handler<\/h2>\n<p>Another approach to customize a Metro style app in response to an orientation change is to explicitly add an event handler. The code is as simple as:<\/p>\n<pre class=\"code\"><span style=\"background: white; color: black;\">Windows.Graphics.Display.<\/span><span style=\"background: white; color: #2b91af;\">DisplayProperties<\/span><span style=\"background: white; color: black;\">.OrientationChanged +=<\/span><\/pre>\n<pre class=\"code\"> <span style=\"background: white; color: blue;\">new <\/span><span style=\"background: white; color: #2b91af;\">DisplayPropertiesEventHandler<\/span><span style=\"background: white; color: black;\">(DisplayProperties_OrientationChanged); <\/span><\/pre>\n<p>An interested reader can download <a href=\"http:\/\/code.msdn.microsoft.com\/windowsapps\/OrientationSensor-Sample-99595893\">the sample application [1]<\/a>to try the debugging experience with the Simulator. Here are the detailed steps:<\/p>\n<p>1. Download the sample project and unzip the solution to a temp folder.<\/p>\n<p>2. Start Visual Studio Express and open the project OrientationCS.csproj.<\/p>\n<p>3. Now change the debug target from \u201cLocal Machine\u201d (the default value) to \u201cSimulator\u201d.<\/p>\n<p>4. Set a breakpoint at MainPage.xaml.cs in the below code (around line 190):<\/p>\n<pre class=\"code\"><span style=\"background: white; color: blue;\">if <\/span><span style=\"background: white; color: black;\">(<\/span><span style=\"background: white; color: #2b91af;\">DisplayProperties<\/span><span style=\"background: white; color: black;\">.CurrentOrientation == <\/span><span style=\"background: white; color: #2b91af;\">DisplayOrientations<\/span><span style=\"background: white; color: black;\">.Portrait<\/span><\/pre>\n<pre class=\"code\"><span style=\"background: white; color: black;\"> || <\/span><span style=\"background: white; color: #2b91af;\">DisplayProperties<\/span><span style=\"background: white; color: black;\">.CurrentOrientation == <\/span><span style=\"background: white; color: #2b91af;\">DisplayOrientations<\/span><span style=\"background: white; color: black;\">.PortraitFlipped) <\/span><\/pre>\n<p>5. F5 to debug the app.<\/p>\n<p>6. Click the Simulator \u201cRotate +90 degrees\u201d button to rotate the Simulator clockwise for 90 degrees. Now you should see the breakpoint hit!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/5670.clip_image0074_thumb.jpg\"><img decoding=\"async\" title=\"clip_image007[4]\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/5670.clip_image0074_thumb.jpg\" alt=\"clip_image007[4]\" width=\"495\" height=\"401\" border=\"0\" \/><\/a><\/p>\n<p>Again, without the Simulator, it would be difficult to debug such application without having an actual device with an orientation sensor.<\/p>\n<h2>Resolution<\/h2>\n<p>Assume a developer has a computer with \u201cmismatched\u201d video adapter and monitor: the video adapter supports a high resolution while the monitor doesn\u2019t. In such case it would be difficult for the developer to test his Metro style app in the high resolution. Again, the Simulator helps in this case: It displays common resolutions that are supported by the video adapter, and allows the user to choose each resolution for testing purpose inside the Simulator. For example, in the below screenshot of the Simulator, it shows various resolutions supported by my computer\u2019s video driver. Here I am able to test a Metro style\u00a0app with a high resolution of 2560*1440, even though my monitor doesn\u2019t display such high resolution.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/3326.clip_image0094_thumb.jpg\"><img decoding=\"async\" title=\"clip_image009[4]\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2011\/11\/3326.clip_image0094_thumb.jpg\" alt=\"clip_image009[4]\" width=\"163\" height=\"266\" border=\"0\" \/><\/a><\/p>\n<p>I hope that you have enjoyed this post. By now you should have a good understanding about the support for rotation and resolution in the Simulator.<\/p>\n<p>Thanks,<\/p>\n<p>Zebin Chen<\/p>\n<p>Software Development Engineer, Visual Studio<\/p>\n<p>&nbsp;<\/p>\n<p>References:<\/p>\n<p>[1] OrientationSensor Sample: <a title=\"http:\/\/code.msdn.microsoft.com\/windowsapps\/OrientationSensor-Sample-99595893\" href=\"http:\/\/code.msdn.microsoft.com\/windowsapps\/OrientationSensor-Sample-99595893\">http:\/\/code.msdn.microsoft.com\/windowsapps\/OrientationSensor-Sample-99595893<\/a><\/p>\n<p>[2] \u2013ms-view-state media feature: <a title=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/hh465826(v=VS.85).aspx\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/hh465826(v=VS.85).aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/hh465826(v=VS.85).aspx<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Windows Simulator is a tool provided in Visual Studio 11 Developer Preview that helps debugging Metro style applications. Its main purpose is to enable debugging when developers want to test how their applications respond to the new Metro style\u00a0capabilities without having a device that supports those capabilities. It is implemented as a remote connection [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":255385,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4980,155],"tags":[136,9,137,376,124,133],"class_list":["post-1353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-visual-studio","tag-css","tag-debug","tag-html","tag-java","tag-javascript","tag-xaml"],"acf":[],"blog_post_summary":"<p>The Windows Simulator is a tool provided in Visual Studio 11 Developer Preview that helps debugging Metro style applications. Its main purpose is to enable debugging when developers want to test how their applications respond to the new Metro style\u00a0capabilities without having a device that supports those capabilities. It is implemented as a remote connection [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/1353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=1353"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/1353\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/255385"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=1353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=1353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=1353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}