diff --git a/articles/nodejs/unittesting.md b/articles/nodejs/unittesting.md
index 640bffe..78a211d 100644
--- a/articles/nodejs/unittesting.md
+++ b/articles/nodejs/unittesting.md
@@ -20,7 +20,7 @@ The supported frameworks are:
## Writing unit tests
Before adding unit tests to your project, make sure the framework you plan on using is installed **locally** in
-your project. This is easiest using the [npm install window](npm#npmInstallWindow).
+your project. This is easiest using the [npm install window](npm.md#npmInstallWindow).
You can add simple blank tests to your project, using the Add New Item dialog, both JavaScript and TypeScript are supported in the same project.
diff --git a/articles/toc.yml b/articles/toc.yml
index 6624303..5a38f1c 100644
--- a/articles/toc.yml
+++ b/articles/toc.yml
@@ -91,3 +91,6 @@
href: build/nuget.md
- name: Troubleshooting
href: troubleshooting/index.md
+ items:
+ - name: NewtonSoft.Json versioning
+ href: troubleshooting/newtonsoft.md
diff --git a/articles/troubleshooting/newtonsoft.md b/articles/troubleshooting/newtonsoft.md
new file mode 100644
index 0000000..703ae58
--- /dev/null
+++ b/articles/troubleshooting/newtonsoft.md
@@ -0,0 +1,47 @@
+# NewtonSoft.Json versioning issues
+
+Visual Studio 2017 communicates with the JavaScript and TypeScript language service using JSON. To
+deserialize these messages, Visual Studio uses the very popular [Json.NET package from NewtonSoft](https://www.newtonsoft.com/json). If a different version of this assembly is loaded into memory
+than expected, then subtle differences in behavior can cause deserialization to fail, and thus failure
+to communicate with the language service.
+
+The easiest way to check if the expected version of NewtonSoft.Json is being loaded, it to launch
+another instance of Visual Studio and attach to the instance having issues, and load the "Modules"
+window to check the assembly path. For example, once the problem occurs:
+
+1. Run another instance of Visual Studio (e.g. from the Developer Command Prompt, run "devenv.exe").
+2. From the menu of the new instance select "Debug" / "Attach to Process..."
+3. Select the existing "devenv.exe" process from the list, and ensure the "Attach to" option reads "Automatic: Managed (v4.6, v4.5, v4.0) code"
+4. Once attached, from the menu select "Debug" / "Windows" / "Modules"
+5. Locate "NewtonSoft.Json.dll" in the list and note the "Path".
+
+The path to the loaded module should be under the "Common7\IDE\PrivateAssemblies" folder of the Visual
+Studio installation path, as shown below.
+
+
+
+If the path is somewhere under the folder "C:\Windows\Microsoft.Net\assembly", then a version has been
+installed to the GAC, and this is being loaded instead of the Visual Studio version. As all 9.x releases
+of NewtonSoft.Json have an assembly version of "9.0.0.0", it is not possible to redirect assembly loading
+and avoid using the GAC. There are two potential solutions to this.
+
+### Remove NewtonSoft.Json from the GAC
+Removing the copy of NewtonSoft.Json.dll from the GAC is one approach. However it runs the risks of
+breaking whatever application installed it to the GAC, as it may expect to still find it there. The
+command to uninstall NewtonSoft.Json from the GAC is shown below. Run from a Developer Command Prompt
+with Admin rights.
+
+```
+gacutil /uf NewtonSoft.Json
+```
+
+### Install the Visual Studio version into the GAC
+The version of NewtonSoft.Json.dll that ships with Visual Studio 2017 is the latest (at the time of writing)
+release with the "9.0.0.0" assembly version, so other applications depending on the version in the GAC
+should be compatible with it. Therefore you could also install the version that ships with Visual Studio 2017
+into the GAC to fix the version mismatch. To do so, from a Developer Command Prompt with Admin permissions,
+run the command:
+
+```
+gacutil /if "%VSINSTALLDIR%Common7\IDE\PrivateAssemblies\Newtonsoft.Json.dll"
+```
diff --git a/docs/articles/editor/refactoring.html b/docs/articles/editor/refactoring.html
index 433fbbb..c7075fc 100644
--- a/docs/articles/editor/refactoring.html
+++ b/docs/articles/editor/refactoring.html
@@ -8,7 +8,7 @@
To install support for developing Node.js application in Visual Studio 2017, follow the instructions for selecting the Node.js workload in the Visual Studio 2017 installer, and downloading and installing the
+Node.js runtime.
+
To quickly test the Node.js support after following the installation steps, open the Node.js Interactive
+Window by pressing Alt-K,N and entering 2+2. If you don't see the output of 4, recheck your steps.
+For details, see Using the Interactive Window.
+
Note
Node.js support is not presently available in Visual Studio for Mac, but is available on Mac and Linux
+through Visual Studio Code.
+
+
Installing Visual Studio 2017
+
+
Download and run the latest Visual Studio 2017 installer:
The installer presents you with a list of workloads, which are groups of related options for specific development areas. For Node.js, select the Node.js workload.
+
+
+
On the right side of the installer, chose additional options if desired. Skip this step to accept the default options.
+
+
+
+
+
Option
+
Description
+
+
+
+
+
Connectivity and publishing tools
+
Publishing to Azure ??
+
+
+
Developer Analytics tools
+
No idea ??
+
+
+
Visual Studio C++ core features
+
Installs tools C++ development, these are necessary for creating native modules.
+
+
+
VC++ 2017 v141 toolset (x86,x64)
+
Installs the default C++ compiler, this is necessary for consuming native modules.
+
+
+
+
+
After installation, the installer provides options to modify, launch, repair, or uninstall Visual Studio. The Modify button changes to Update when updates to Visual Studio when updates are available for any installed components. (The modify option is then available on the drop-down menu.) You can also launch Visual Studio and the installer from the Windows Start menu by searching on "Visual Studio".
+
+
+
+
Installing the Node.js runtime
+
Node.js support doesn't come with a Node.js Runtime, so you need to install a version from the
+Node.js website. In general, Visual Studio automatically detects the
+installed Node.js runtime, if it does not detect an installed runtime you can configure your project
+to reference the installed runtime.
+
Tip
Although Visual Studio 2017 does support older versions, we recommend you install at least the
+current LTS Version.
The Node.js Tools For Visual Studio allows you to write and run unit tests using some of the more popular
+frameworks without the need to switch to a command prompt.
Before adding unit tests to your project, make sure the framework you plan on using is installed locally in
+your project. This is easiest using the npm install window.
+
You can add simple blank tests to your project, using the Add New Item dialog, both JavaScript and TypeScript are supported in the same project.
+
+
For a Mocha unit test the file will contain the following code.
And the Test Framework property is set to 'Mocha'.
+
+
After opening the Test Explorer (from the Test, Windows, Test Explorer menu), the tests will be discovered and
+displayed. If they're not showing initially rebuild the project to refresh the list.
+
+
Note
If you use the outdir or outfile option in tsconfig.json, the Text Explorer won't be able to find your
+unit tests in TypeScript files.
+
+
Running tests
+
Tests can be run in Visual Studio 2017, or from the command line.
+
Running tests in Visual Studio 2017
+
You can run the tests by clicking the 'Run All' link in the Test Explorer window, or by selecting one or more
+tests or groups, right-clicking and selecting 'Run Selected Tests'. Tests will be run in the background, and the
+display will update and show the results. Furhter you can also debug selected tests by selecting
+'Debug Selected Tests'.
+
Note
Currently we don't support profiling tests, or code coverage.
+
+
Running tests from the command line
+
You can run the tests from the 'Developer Command for VS 2017" using the following:
+
vstest.console.exe <path to project file>\NodejsConsoleApp23.njsproj /TestAdapterPath:<VisualStudioFolder>\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter
+
This should show output similar to:
+
Microsoft (R) Test Execution Command Line Tool Version 15.5.0
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Starting test execution, please wait...
+Processing: NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js
+ Creating TestCase:NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js::Test Suite 1 Test 1::mocha
+ Creating TestCase:NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js::Test Suite 1 Test 2::mocha
+Processing finished for framework of Mocha
+Passed Test Suite 1 Test 1
+Standard Output Messages:
+ Using default Mocha settings
+ 1..2
+ ok 1 Test Suite 1 Test 1
+
+Failed Test Suite 1 Test 2
+Standard Output Messages:
+ not ok 1 Test Suite 1 Test 2
+ AssertionError [ERR_ASSERTION]: This should fail
+ at Context.<anonymous> (NodejsConsoleApp23\NodejsConsoleApp23\UnitTest1.js:10:16)
+
+Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
+Test Run Failed.
+Test execution time: 1.5731 Seconds
+
Note
If you get an error that vstest.console.exe can not be found make sure you've openend the Developer Command
+Prompt and not a regular command prompt.
+
+
Adding support for a unit test framework
+
You can extend the support for additional test frameworks by implementing the discovery and execution logic
+using JavaScript.
+In the following location:
+\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter\TestFrameworks
+You'll see folders for the various supported test frameworks.
+Under each folder, a JavaScript file named after the folder contains 2 exported functions:
+
+
find_tests
+
run_tests
+
+
See the implementation of Mocha for examples of find_tests and run_tests implementations.
+
Note
The name of the folder must match the name of the .js file. Discovery of test frameworks happens at VS start.
+If a framework is added while VS is running, VS must be restarted for detection to occur.
+
+
Note
Be sure to set the TestFramework property on your test file(s) to match the name of the subfolder under
+TestFrameworks.
Visual Studio 2017 communicates with the JavaScript and TypeScript language service using JSON. To
+deserialize these messages, Visual Studio uses the very popular Json.NET package from NewtonSoft. If a different version of this assembly is loaded into memory
+than expected, then subtle differences in behavior can cause deserialization to fail, and thus failure
+to communicate with the language service.
+
The easiest way to check if the expected version of NewtonSoft.Json is being loaded, it to launch
+another instance of Visual Studio and attach to the instance having issues, and load the "Modules"
+window to check the assembly path. For example, once the problem occurs:
+
+
Run another instance of Visual Studio (e.g. from the Developer Command Prompt, run "devenv.exe").
+
From the menu of the new instance select "Debug" / "Attach to Process..."
+
Select the existing "devenv.exe" process from the list, and ensure the "Attach to" option reads "Automatic: Managed (v4.6, v4.5, v4.0) code"
+
Once attached, from the menu select "Debug" / "Windows" / "Modules"
+
Locate "NewtonSoft.Json.dll" in the list and note the "Path".
+
+
The path to the loaded module should be under the "Common7\IDE\PrivateAssemblies" folder of the Visual
+Studio installation path, as shown below.
+
+
If the path is somewhere under the folder "C:\Windows\Microsoft.Net\assembly", then a version has been
+installed to the GAC, and this is being loaded instead of the Visual Studio version. As all 9.x releases
+of NewtonSoft.Json have an assembly version of "9.0.0.0", it is not possible to redirect assembly loading
+and avoid using the GAC. There are two potential solutions to this.
+
Remove NewtonSoft.Json from the GAC
+
Removing the copy of NewtonSoft.Json.dll from the GAC is one approach. However it runs the risks of
+breaking whatever application installed it to the GAC, as it may expect to still find it there. The
+command to uninstall NewtonSoft.Json from the GAC is shown below. Run from a Developer Command Prompt
+with Admin rights.
+
gacutil /uf NewtonSoft.Json
+
Install the Visual Studio version into the GAC
+
The version of NewtonSoft.Json.dll that ships with Visual Studio 2017 is the latest (at the time of writing)
+release with the "9.0.0.0" assembly version, so other applications depending on the version in the GAC
+should be compatible with it. Therefore you could also install the version that ships with Visual Studio 2017
+into the GAC to fix the version mismatch. To do so, from a Developer Command Prompt with Admin permissions,
+run the command: