ResolvesNuGet/Home#5258.
Added tests for basic scenarios per each project model supporting LSL
mode: `packages.config`, `project.json`, `PackageRef`.
Updated E2E test infrastructure to support test extension cmdlets and
running "theories". Added ability to skip tests for specific VS version.
Also added missing templates for unit-test project and native C++ console application.
Addressed PR feedback
2nd pass over NuGet.Client projects.
ResolvesNuGet/Client.Engineering#28
---
Changed the dependency order of PM.VS and PM.UI projects. Moved shared
code into `NuGet.VisualStudio.Common` (former Facade). Normalized
namespaces across all of the projects. Split constants. Split
`EnvDTEProjectUtility`.
New dependency graph of NuGet.Client projects:
```
NuGet.VisualStudio.Common
+---NuGet.VisualStudio
+---NuGet.VisualStudio.Interop
+---NuGet.SolutionRestoreManager.Interop
|
+---NuGet.TeamFoundationServer
|
+---NuGet.PackageManagement.VisualStudio
+---NuGet.VisualStudio.Implementation
+---NuGet.PackageManagement.PowerShellCmdlets
+---NuGet.SolutionRestoreManager
|
+---NuGet.PackageManagement.UI
+---Options
+---NuGet.Console
+---NuGet.Tools
+---NuGet.VisualStudio.Client
```
Root cause: Accessing DTE and other related COM objects from a background
thread like powershell's pipeline execution thread is highly discouraged
as it can cause random hangs and crashes.
Fix: Move all the powershell utility methods into C# where you can safely
switch to UI thread before accessing the DTE and other related COM objects
What does this commit contain?
Added a few static helper classes which performs all the operations
that the powershell VS helper methods used to to. In particular, all the
DTE access have been moved into C# and it accessed from the UI thread.
What is pending?
Still, there are references to DTE.Project objects. Technically, this
can cause hangs and crashes too. And, it will be fixed in phase-II
in a different commit.