From c321ccce78f90d5725cf6c06be78df25ab92736f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 16 Jan 2019 15:28:41 +0000 Subject: [PATCH] Add development documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Simões --- README.md | 3 ++ docs/README.md | 13 +++++++ docs/developer-notes.md | 40 ++++++++++++++++++++ docs/images/reloading-debugger-projects.png | Bin 0 -> 26878 bytes 4 files changed, 56 insertions(+) create mode 100644 docs/README.md create mode 100644 docs/developer-notes.md create mode 100644 docs/images/reloading-debugger-projects.png diff --git a/README.md b/README.md index 9e567a0..d7727e3 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ In case you want to be in the bleeding edge of technology and use the new stuff Please follow the instructions [here](http://docs.myget.org/docs/walkthrough/getting-started-with-vsix#Working_with_your_Vsix_feed) on how to add the feed to your Visual Studio instance. Use this URL for the feed: `https://www.myget.org/F/nanoframework-dev/vsix/`. +## Developing for the Visual Studio extension + +If you are working on developing code for **nanoFramework** Visual Studio extension please take a look at the available documentation [here](). ## Credits diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..079d55d --- /dev/null +++ b/docs/README.md @@ -0,0 +1,13 @@ +# Documentation related with Visual Studio extension development + +## Internal documentation + +* [Developer notes](developer-notes.md) + +## External documentation + +* [Visual Studio Extensibility Samples](https://github.com/Microsoft/VSSDK-Extensibility-Samples) +* [Extensibility in Visual Studio](https://docs.microsoft.com/en-us/visualstudio/extensibility/extensibility-in-visual-studio?view=vs-2017) +* [Visual Studio SDK](https://docs.microsoft.com/en-us/visualstudio/extensibility/visual-studio-sdk?view=vs-2017) +* [Visual Studio SDK reference](https://docs.microsoft.com/en-us/visualstudio/extensibility/visual-studio-sdk-reference?view=vs-2017) +* [Posts about VS extensibility in "The Visual Studio Blog"](https://blogs.msdn.microsoft.com/visualstudio/tag/extensibility/) diff --git a/docs/developer-notes.md b/docs/developer-notes.md new file mode 100644 index 0000000..64f7b08 --- /dev/null +++ b/docs/developer-notes.md @@ -0,0 +1,40 @@ +# Developer notes + +## Launching Visual Studio experimental instance + +To launch Visual Studio experimental instance: + +1. Open VS developer command prompt. +2. Enter `"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe" /rootSuffix Exp` + +> Mind to adjust the path above to your setup. + +## Reset VS experimental instance + +In case you need to reset the Visual Studio experimental instance: + +1. Open VS developer command prompt. +2. Navigate to `e:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VSSDK\VisualStudioIntegration\Tools\Bin`. +3. Enter `CreateExpInstance /Reset /VSInstance=15.0 /RootSuffix=_d9708c20Exp`. + +> Mind to adjust the path above to your setup. +> The RootSuffix above (**_d9708c20Exp**) will be different for each installation. Please amend the above to match your local one. + +You'll want to reset VS experimental instance on a number of situations. Usually this is when you need to start fresh because there is too much clutter, a failed deployment that is creeplying your debugging or whenever a new Visual Studio update is installed. + +## Debugging with the **nanoFramework** Debugger library + +In situations where you want to debug something in the **nanoFramework** Debugger library please follow these steps: + +1. Make sure to update (or checkout the appropriate commit) in the `nf-debugger` git sub-module. +1. Load the `nanoFramework.Tools.Debugger.sln` solution there, restore the NuGets for the solution and rebuild it. After this you can close the solution. +1. Load the **nanoFramework** extension solution in Visual Studio. +1. Expand the folder `debugger-library` and find there 2 projects for each of the components. +1. Right click and hit `Reload` for each of the project there. Like this. + + ![](images/reloading-debugger-projects.png) + +6. Use the [NuGet reference switcher extension](https://marketplace.visualstudio.com/items?itemName=RicoSuter.NuGetReferenceSwitcherforVisualStudio2017) to switch the references to `nanoFramework.Tools.Debugger` from NuGet to project and point it to the appropriate project. +1. Perform whatever debug that you need by placing breakpoint on any source file of the debugger library. +1. When you are done open the NuGet reference switcher extension again, open the Switch to NuGet references tab and revert the debugger library references. Make sure that the "remove projects from solution" is **not** checked. +1. Unload the debugger library projects from the solution. diff --git a/docs/images/reloading-debugger-projects.png b/docs/images/reloading-debugger-projects.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0e2688ec6c61a2771f4c7080bc495e3411a616 GIT binary patch literal 26878 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