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
* Lightweight solution load: Merge feature branch
This change summarizes feature work done to enable full support of LSL
in NuGet Package Manager.
Main concepts introduced
- `IVsProjectAdapter` - An abstraction layer over `EnvDTE.Project`.
Represents a virtual project object. It is aware of LSL mode and is
capable to force load project when it's needed. All occurances of DTE
project have been replaced with new adapter object.
- `INuGetProjectServices` - Collection of project services as building
blocks to access underlying project system functionality, such as
reference reader, build properties, project system capabilites, script host.
- `VsCoreProjectSystemService` - Implementation of project services for VS
core project system (DTE).
- `VsLangProjectSystemService` - Implementation of project services for
managed languages project system (VsLangProj80).
- `WorkspaceProjectServices` - Implementation of project services for
deferred projects based on Workspace* API.
Notable refactorings
- Decommissioned `EnvDTEProjectAdapter` in favour of the new adapter.
- `LegacyCSProjPackageReferenceProject` =>
`LegacyPackageReferenceProject`.
- `CpsPackageReferenceProject` => `NetCorePackageReferenceProject`
- Multiple renamings to avoid confusion betwen projects and project
systems.
ResolvesNuGet/Home#5180.
* Cumulative PR feedback plus bug fixes
* Applied recommended design changes
* [BUG 441140] An error dialog pop up when creating C# ASP.NET Sigle Page Application
Fixes internal bug 441140.
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.