{"id":2449,"date":"2019-05-21T17:25:48","date_gmt":"2019-05-21T09:25:48","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/iotdev\/?p=2449"},"modified":"2019-09-03T14:54:34","modified_gmt":"2019-09-03T06:54:34","slug":"debug-iot-edge-c-or-csharp-windows-module-container-with-visual-studio-azure-iot-edge-tools","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/iotdev\/debug-iot-edge-c-or-csharp-windows-module-container-with-visual-studio-azure-iot-edge-tools\/","title":{"rendered":"Debug IoT Edge C \/ C# Windows Module Container with Visual Studio Azure IoT Edge Tools"},"content":{"rendered":"<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=vsc-iot.vsiotedgetools\">Azure IoT Edge Tools (Preview) for Visual Studio 2017<\/a> allows you to easily develop and debug Azure IoT Edge modules locally. To learn how to use this extension to develop and debug Edge module locally, you can refer these documents:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/iotdev\/easily-develop-and-debug-azure-iot-edge-c-modules-with-azure-iot-edge-tools-preview-0-3-1\/\">Easily Develop and Debug Azure IoT Edge C Modules with Azure IoT Edge Tools<\/a><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-edge\/how-to-visual-studio-develop-module\">Use Visual Studio 2017 to develop and debug modules for Azure IoT Edge (Preview)<\/a><\/p>\n<p>However, remote debugging module container running in Edge device is not straightforward. This\u00a0tutorial\u00a0will demonstrate\u00a0how\u00a0to\u00a0remotely debug\u00a0C \/ C#\u00a0Windows module container\u00a0from your dev machine.<\/p>\n<p>For Linux and ARM platform, you can refer this blog:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/iotdev\/debug-iot-edge-c-or-csharp-linux-module-container-with-visual-studio-azure-iot-edge-tools\/\">Debug IoT Edge C \/ C# Linux Module Container with Visual Studio Azure IoT Edge Tools<\/a><\/p>\n<p>Let\u2019s see how it works.<\/p>\n<h3><strong>Prerequisites<\/strong><\/h3>\n<h4>Setup Your Remote Windows Machine as an IoT Edge Device<\/h4>\n<ul>\n<li>Set up your remote Windows machine as an IoT Edge device \u2013 follow this instruction to install <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-edge\/how-to-install-iot-edge-windows\">Azure IoT Edge Runtime on Windows<\/a><\/li>\n<li>Configure the Windows Firewall to enable 4022 port which will be used by remote debugger<\/li>\n<\/ul>\n<h4>Setup Your Development Machine<\/h4>\n<ul>\n<li>OS: Windows 10 with 1809 update<\/li>\n<li>Visual Studio 2017 with update 7 or later, including workloads \u201c.NET desktop development\u201d, \u201cWindows desktop development with C++\u201d and \u201cAzure development workload\u201d;<\/li>\n<li>Download and install\u00a0<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=vsc-iot.vsiotedgetools\">Azure IoT Edge Tools (Preview) for Visual Studio<\/a><\/li>\n<li>You may either use container engine Moby or Docker Desktop for Windows<\/li>\n<li>To use container engine Moby, first follow\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-edge\/quickstart\">IoT Edge quickstart<\/a>\u00a0to install Moby, then search and click\u00a0<strong>edit system environment variables<\/strong>\u00a0in Control Panel, then add environment variable\u00a0<strong>DOCKER_HOST=npipe:\/\/\/\/.\/pipe\/iotedge_moby_engine\n<img decoding=\"async\" width=\"1302\" height=\"768\" class=\"wp-image-2450\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/https-devblogs-microsoft-com-iotdev-wp-content-u.png\" alt=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/03\/set-docker-host.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/https-devblogs-microsoft-com-iotdev-wp-content-u.png 1302w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/https-devblogs-microsoft-com-iotdev-wp-content-u-300x177.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/https-devblogs-microsoft-com-iotdev-wp-content-u-768x453.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/https-devblogs-microsoft-com-iotdev-wp-content-u-1024x604.png 1024w\" sizes=\"(max-width: 1302px) 100vw, 1302px\" \/>\n<\/strong> Please note you should restart Visual Studio after editing environment variables to make the change taking effect.<\/li>\n<li>To use Docker Desktop for Windows, download and install\u00a0<a href=\"https:\/\/hub.docker.com\/editions\/community\/docker-ce-desktop-windows\">Docker Desktop for Windows<\/a>.<\/li>\n<li>Set up your local development environment to debug, run, and test your IoT Edge solution by installing the\u00a0<a href=\"https:\/\/pypi.org\/project\/iotedgehubdev\/\">Azure IoT EdgeHub Dev Tool<\/a>. Install\u00a0<a href=\"https:\/\/www.python.org\/\">Python (2.7\/3.6) and Pip<\/a>\u00a0and then install the\u00a0<strong>iotedgehubdev<\/strong>\u00a0package by running the following command in your terminal. Make sure your Azure IoT EdgeHub Dev Tool version is equal or greater than 0.8.0.\n<pre class=\"lang:default decode:true\">pip install --upgrade iotedgehubdev<\/pre>\n<\/li>\n<li>Install azure-iot-sdk-c for windows-x64 through vcpkg\n<pre class=\"lang:default decode:true\">git clone https:\/\/github.com\/Microsoft\/vcpkg\r\n\r\ncd vcpkg\r\n\r\n.\\bootstrap-vcpkg.bat\r\n\r\n.\\vcpkg install azure-iot-sdk-c:x64-windows\r\n\r\n.\\vcpkg --triplet x64-windows integrate install<\/pre>\n<\/li>\n<\/ul>\n<h4>Switch to Windows Containers<\/h4>\n<ul>\n<li>This doc will use windows containers to demonstrate how to debug C# \/ C modules using Windows IoT Edge project (which ending with Windows.Amd64 by default).\n<ul>\n<li>If you\u2019re using container engine Moby, then you can just go to the next section and do not need to switch.<\/li>\n<li>If you\u2019re using Docker desktop for Windows, you need to switch to Windows containers.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><strong>Debug C \/ C# Module Container Running in Remote Edge Device<\/strong><\/h3>\n<ol>\n<li>Run Visual Studio as\u00a0<strong>administrator<\/strong>, select\u00a0<strong>New<\/strong>\u00a0&gt;\u00a0<strong>Project<\/strong>\u00a0from the\u00a0<strong>File<\/strong>\u00a0menu.<\/li>\n<li>Open Visual Studio 2017 and click menu <strong>File -&gt; New -&gt;Project. <\/strong>In the\u202f<strong>New Project<\/strong>\u202fdialog, select\u202f<strong>Installed -&gt; Azure IoT<\/strong>, select\u202f<strong>Azure IoT Edge (Windows amd64)<\/strong>, enter a name for your project and specify the location, and then select\u202f<strong>OK<\/strong>.<img decoding=\"async\" width=\"1178\" height=\"817\" class=\"wp-image-2451\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-9.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-9.png 1178w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-9-300x208.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-9-768x533.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-9-1024x710.png 1024w\" sizes=\"(max-width: 1178px) 100vw, 1178px\" \/><\/li>\n<li>In the project wizard, select <strong>C or C# Module<\/strong>, and replace\u202f<strong>localhost:5000<\/strong>\u202fwith your own registry info, then click\u202f<strong>Yes<\/strong>:<img decoding=\"async\" width=\"873\" height=\"607\" class=\"wp-image-2452\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-10.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-10.png 873w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-10-300x209.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-10-768x534.png 768w\" sizes=\"(max-width: 873px) 100vw, 873px\" \/>Now there\u2019re two projects in the solution, one is Edge module project, which is just simple .Net Core or C project, the other one is called Edge project.\nTo debug C \/ C# module in windows container, we need to add another docker file to the IoTEdgeModule1 project, and you can find the docker file below:<\/p>\n<p>For C module, add a Dockerfile.windows-amd64.debug file as below :\n<a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-c-windows-container-debug-sample\/blob\/master\/IotEdgeModule1\/Dockerfile.windows-amd64.debug\">Dockerfile for Azure IoT Edge Windows C Module with Remote Debug Support<\/a><\/p>\n<p>For C# module, add a Dockerfile.windows-amd64.debug file as below:\n<a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-csharp-windows-container-debug-sample\/blob\/master\/IotEdgeModule1\/Dockerfile.windows-amd64.debug\">Dockerfile for Azure IoT Edge Windows C# Module with Remote Debug Support<\/a><\/p>\n<p>The docker file will add VS remote debugger binaries to the container which will be used for remote debugger.<\/li>\n<li>We also need to add a helper script <strong>BuildAndPush.cmd<\/strong> in the <strong>IoTEdgeModule1<\/strong> project to collect remote debugger binaries from your development machine, and then build and push module image.For C module, you can copy the script file here:\n<a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-c-windows-container-debug-sample\/blob\/master\/IotEdgeModule1\/BuildAndPush.cmd\">Build and Push Image Script for C Windows Module<\/a>For C# module, you can copy the script file here:\n<a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-csharp-windows-container-debug-sample\/blob\/master\/IotEdgeModule1\/BuildAndPush.cmd\">Build and Push Image Script for C# Windows Module<\/a><\/p>\n<p>Don\u2019t forget to update the script to push image to your own repository<\/p>\n<pre class=\"lang:default decode:true\">\u2026\r\n\r\necho Push image...\r\n\r\ndocker tag %DockerImageName% [Your Registry Server]\/%DockerImageName%\r\n\r\ndocker push [Your Registry Server]\/%DockerImageName%\r\n\r\n\u2026<\/pre>\n<\/li>\n<li>Update module.json to make sure <strong style=\"font-size: 1rem;\">AzureIoTEdgeApp1<\/strong><span style=\"font-size: 1rem;\"> project can find <\/span><strong style=\"font-size: 1rem;\">Dockerfile.windows-amd64.debug<\/strong><span style=\"font-size: 1rem;\"><span style=\"font-size: 1rem;\"> file.\n<\/span><\/span><\/p>\n<pre class=\"lang:default decode:true \">{ \r\n   ... \r\n   \"image\":{  \r\n      \"repository\":\"erich.azurecr.io\/iotedgemodule1\",\r\n      \"tag\":{  \r\n         \"version\":\"0.0.1\",\r\n         \"platforms\":{  \r\n            \"amd64\":\".\/Dockerfile.amd64\",\r\n            \"amd64.debug\":\".\/Dockerfile.amd64.debug\",\r\n            \"windows-amd64\":\".\/Dockerfile.windows-amd64\",\r\n            \"windows-amd64.debug\":\".\/Dockerfile.windows-amd64.debug\"\r\n         }\r\n      },\r\n      \"buildOptions\":[  \r\n\r\n      ]\r\n   },\r\n   ...\r\n}<\/pre>\n<\/li>\n<li>Edit module <strong>IoTEdgeModule1<\/strong> in <strong>deployment.template.json<\/strong> file to expose 4022 port\n<pre class=\"lang:default decode:true \">\"IotEdgeModule1\":{  \r\n   \"version\":\"1.0.0\",\r\n   \"type\":\"docker\",\r\n   \"status\":\"running\",\r\n   \"restartPolicy\":\"always\",\r\n   \"settings\":{  \r\n      \"image\":\"${MODULES.IotEdgeModule1}\",\r\n      \"createOptions\":\"{\\\"ExposedPorts\\\":{\\\"4022\/tcp\\\": {}}, \\\"HostConfig\\\":{\\\"PortBindings\\\":{\\\"4022\/tcp\\\":[{\\\"HostPort\\\":\\\"4022\\\"}]}}}\"\r\n   }\r\n}<\/pre>\n<\/li>\n<li>Right click <strong>AzureIotEdgeApp1<\/strong> project, click Properties and change the <strong>Target Configuration<\/strong> to <strong>Debug<\/strong>.<img decoding=\"async\" width=\"1038\" height=\"678\" class=\"wp-image-2453\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-11.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-11.png 1038w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-11-300x196.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-11-768x502.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-11-1024x669.png 1024w\" sizes=\"(max-width: 1038px) 100vw, 1038px\" \/><\/li>\n<li>If you\u2019re using private registry like Azure Container Registry, use the following Docker command to sign in.\n<pre class=\"lang:default decode:true\">docker login -u &lt;ACR username&gt; -p &lt;ACR password&gt; &lt;ACR login server&gt;<\/pre>\n<p>&nbsp;<\/li>\n<li>Click <strong>Show All Files<\/strong> icon as below, a <strong>.env <\/strong>file should be displayed under Edge project, open the .env file to input credential for your registry, this credential will be used by IoT Edge runtime to pull module images after deployment.<img decoding=\"async\" width=\"1245\" height=\"461\" class=\"wp-image-2454\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-12.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-12.png 1245w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-12-300x111.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-12-768x284.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-12-1024x379.png 1024w\" sizes=\"(max-width: 1245px) 100vw, 1245px\" \/><\/li>\n<li>Right click <strong>AzureIotEdgeApp1 <\/strong>project, and click <strong>Generate Deployment for IoT Edge<\/strong> to generate deployment manifest <strong>deployment.windows-amd64.debug.json<\/strong><img decoding=\"async\" width=\"616\" height=\"398\" class=\"wp-image-2455\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-13.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-13.png 616w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-13-300x194.png 300w\" sizes=\"(max-width: 616px) 100vw, 616px\" \/><\/li>\n<li>Open <span style=\"color: #ff0000;\"><strong>Developer Command Prompt for VS2017 <\/strong><\/span>(<strong>NOT Command Prompt<\/strong>) with<strong> Administrator <\/strong>privilege, locate to the folder of <strong>IoTEdgeModule1<\/strong> and run <strong>BuildAndPush.cmd<\/strong> script to build and push your image.<img decoding=\"async\" width=\"1103\" height=\"639\" class=\"wp-image-2456\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-14.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-14.png 1103w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-14-300x174.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-14-768x445.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-14-1024x593.png 1024w\" sizes=\"(max-width: 1103px) 100vw, 1103px\" \/><\/li>\n<li>After successfully pushing the image, open\u202f<strong>Cloud Explorer<\/strong>\u202fby clicking\u202f<strong>View<\/strong>\u202f-&gt;\u202f<strong>Cloud Explorer<\/strong>, expand your subscription and find the IoT Edge device corresponding to your Windows device, right click on the IoT Edge device to create a deployment\u00a0for\u00a0it, you need to select the deployment manifest file under the path below:\n<pre class=\"lang:default decode:true \">$AzureIoTEdgeAppSolutionDir\\$AzureIotEdgeAppX\\config\\deployment.windows-amd64.debug.json\u00a0\r\n<\/pre>\n<p><img decoding=\"async\" width=\"436\" height=\"536\" class=\"wp-image-2457\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-15.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-15.png 436w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-15-244x300.png 244w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/li>\n<li>Login to remote Windows machine and manually start the msvsmon.exe in the container using the command below:\n<pre class=\"lang:default decode:true\">docker exec -it -d [Your Edge Module Container ID] msvsmon.exe \/fallbackloadremotemanagedpdbs \/noauth \/anyuser \/silent \/nostatus \/noclrwarn \/nosecuritywarn \/nofirewallwarn \/nowowwarn \/timeout:360000<\/pre>\n<\/li>\n<li>After successfully starting remote debugger, click <strong>Debug-&gt;Attach to Process&#8230;<\/strong>, set <strong>Connection Type<\/strong> to <strong>Remote (no authentication)<\/strong>,\u00a0<strong>Connection target<\/strong> to <strong>[IP Address]:4022, <\/strong>and\u00a0type Enter then you can choose the process to debug. For C module, you need to choose process\u00a0<strong>IoTEdgeModule1.exe<\/strong> and <strong>\u201cAttach to\u201d to\u00a0Native code<\/strong>. For C# module you need to choose process\u00a0<strong>dotnet.exe<\/strong>\u00a0and <strong>\u201cAttach to\u201d to\u00a0Managed (CoreCLR)<\/strong>.<img decoding=\"async\" width=\"978\" height=\"807\" class=\"wp-image-2458\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-16.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-16.png 978w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-16-300x248.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-16-768x634.png 768w\" sizes=\"(max-width: 978px) 100vw, 978px\" \/><\/li>\n<li>Now you can set break point and debug your C \/ C# module<img decoding=\"async\" width=\"1468\" height=\"658\" class=\"wp-image-2459\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-17.png\" srcset=\"https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-17.png 1468w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-17-300x134.png 300w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-17-768x344.png 768w, https:\/\/devblogs.microsoft.com\/iotdev\/wp-content\/uploads\/sites\/24\/2019\/05\/word-image-17-1024x459.png 1024w\" sizes=\"(max-width: 1468px) 100vw, 1468px\" \/><\/li>\n<\/ol>\n<h3><strong>Samples Projects<\/strong><\/h3>\n<p>Azure IoT Edge C Windows remote debug sample:<\/p>\n<p><a href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-c-windows-container-debug-sample\">https:\/\/github.com\/Azure-Samples\/azure-iot-edge-c-windows-container-debug-sample<\/a><\/p>\n<p>Azure IoT Edge C# Windows remote debug sample:<\/p>\n<p><a href=\"https:\/\/github.com\/Azure-Samples\/azure-iot-edge-csharp-windows-container-debug-sample\">https:\/\/github.com\/Azure-Samples\/azure-iot-edge-csharp-windows-container-debug-sample<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure IoT Edge Tools (Preview) for Visual Studio 2017 allows you to easily develop and debug Azure IoT Edge modules locally. To learn how to use this extension to develop and debug Edge module locally, you can refer these documents: Easily Develop and Debug Azure IoT Edge C Modules with Azure IoT Edge Tools Use [&hellip;]<\/p>\n","protected":false},"author":1253,"featured_media":1836,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[288],"tags":[6,164,7,9,11,16,20,376,536,34],"class_list":["post-2449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-iot-edge-development","tag-azure-iot","tag-azure-iot-edge","tag-azure-iot-hub","tag-debug","tag-development-tools","tag-internet-of-things","tag-iot-edge","tag-visual-studio","tag-visual-studio-2017","tag-visual-studio-extensions"],"acf":[],"blog_post_summary":"<p>Azure IoT Edge Tools (Preview) for Visual Studio 2017 allows you to easily develop and debug Azure IoT Edge modules locally. To learn how to use this extension to develop and debug Edge module locally, you can refer these documents: Easily Develop and Debug Azure IoT Edge C Modules with Azure IoT Edge Tools Use [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/posts\/2449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/users\/1253"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/comments?post=2449"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/posts\/2449\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/media\/1836"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/media?parent=2449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/categories?post=2449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/iotdev\/wp-json\/wp\/v2\/tags?post=2449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}