You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/extensibility/breaking-changes-2017.md
+8-6Lines changed: 8 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -59,14 +59,16 @@ Designer tooling for authoring of the new VSIX v3 manifest format is now availab
59
59
60
60
Previously, only one installation of each major release of Visual Studio could exist on each machine. To support side-by-side installations of Visual Studio 2017, multiple user data paths for Visual Studio may exist on the user's machine.
61
61
62
-
Code running inside the Visual Studio process should be updated to use the Visual Studio Settings Manager. Code running outside of the Visual Studio process can find the user path of a specific Visual Studio installation [by following the guidance here](https://blogs.msdn.microsoft.com/heaths/2016/09/15/changes-to-visual-studio-15-setup).
62
+
Code running inside the Visual Studio process should be updated to use the Visual Studio Settings Manager. Code running outside of the Visual Studio process can find the user path of a specific Visual Studio installation [by following the guidance here](locating-visual-studio.md).
63
63
64
64
## Change: Global Assembly Cache (GAC)
65
65
66
66
Most Visual Studio core assemblies are no longer installed into the GAC. The following changes were made so that code running in Visual Studio process can still find required assemblies at runtime.
67
67
68
+
> [!NOTE][INSTALLDIR] below refers to the installation root directory of Visual Studio. VSIXInstaller.exe will automatically populate this, but to write custom deployment code please read [locating Visual Studio](locating-visual-studio.md).
69
+
68
70
* Assemblies that were only installed into the GAC:
69
-
* These assemblies are now installed under %VsFolder%\Common7\IDE\,%VsFolder%\Common7\IDE\PublicAssemblies or %VsFolder%\Common7\IDE\PrivateAssemblies. These folders are part of the Visual Studio process's probing paths.
71
+
* These assemblies are now installed under [INSTALLDIR]\Common7\IDE\,[INSTALLDIR]\Common7\IDE\PublicAssemblies or [INSTALLDIR]\Common7\IDE\PrivateAssemblies. These folders are part of the Visual Studio process's probing paths.
70
72
* Assemblies that were installed into a non-probing path and into the GAC:
71
73
* The copy in the GAC was removed from setup.
72
74
* A .pkgdef file was added to specify a code base entry for the assembly.
@@ -80,22 +82,22 @@ Most Visual Studio core assemblies are no longer installed into the GAC. The fol
80
82
"culture"="neutral"
81
83
"version"=15.0.0.0
82
84
```
83
-
At runtime, the Visual Studio pkgdef subsystem will merge these entries into the Visual Studio process's runtime configuration file (under %VsAppDataFolder%\devenv.exe.config) as [`<codeBase>`](https://msdn.microsoft.com/en-us/library/efs781xb(v=vs.110).aspx) elements. This is the recommended way to let the Visual Studio process find your assembly, because it avoids searching through probing paths.
85
+
At runtime, the Visual Studio pkgdef subsystem will merge these entries into the Visual Studio process's runtime configuration file (under [VSAPPDATA]\devenv.exe.config) as [`<codeBase>`](https://msdn.microsoft.com/en-us/library/efs781xb(v=vs.110).aspx) elements. This is the recommended way to let the Visual Studio process find your assembly, because it avoids searching through probing paths.
84
86
85
87
### Reacting to this breaking change
86
88
87
89
* If your extension is running within the Visual Studio process:
88
90
* Your code will be able to find Visual Studio core assemblies.
89
91
* Consider using a .pkgdef file to specify a path to your assemblies if necessary.
90
92
* If your extension is running outside the Visual Studio process:
91
-
* Consider looking for Visual Studio core assemblies under %VsFolder%\Common7\IDE\, %VsFolder%\Common7\IDE\PublicAssemblies or %VsFolder%\Common7\IDE\PrivateAssemblies using configuration file or assembly resolver.
93
+
* Consider looking for Visual Studio core assemblies under [INSTALLDIR]\Common7\IDE\, [INSTALLDIR]\Common7\IDE\PublicAssemblies or [INSTALLDIR]\Common7\IDE\PrivateAssemblies using configuration file or assembly resolver.
92
94
93
95
## Change: Reduce registry impact
94
96
95
97
### Global COM registration
96
98
97
99
* Previously, Visual Studio installed many registry keys into the HKEY_CLASSES_ROOT and HKEY_LOCAL_MACHINE hives to support native COM registration. To eliminate this impact, Visual Studio now uses [Registration-Free Activation for COM components](https://msdn.microsoft.com/en-us/library/ms973913.aspx).
98
-
* As a result, most TLB / OLB / DLL files under %ProgramFiles(x86)%\Common Files\Microsoft Shared\MSEnv are no longer installed by default by Visual Studio. These files are now installed under %VsFolder% with corresponding Registration-Free COM manifests used by the Visual Studio host process.
100
+
* As a result, most TLB / OLB / DLL files under %ProgramFiles(x86)%\Common Files\Microsoft Shared\MSEnv are no longer installed by default by Visual Studio. These files are now installed under [INSTALLDIR] with corresponding Registration-Free COM manifests used by the Visual Studio host process.
99
101
* As a result, external code that relies on global COM registration for Visual Studio COM interfaces will no longer find these registrations. Code running inside Visual Studio process will not see a difference.
100
102
101
103
### Visual Studio registry
@@ -104,7 +106,7 @@ Most Visual Studio core assemblies are no longer installed into the GAC. The fol
104
106
* HKLM\Software\Microsoft\VisualStudio\\**Version**: Registry keys created by MSI installers and per-machine extensions.
105
107
* HKCU\Software\Microsoft\VisualStudio\\**Version**: Registry keys created by Visual Studio to store user-specific settings.
106
108
* HKCU\Software\Microsoft\VisualStudio\\**Version**_Config: A copy of Visual Studio HKLM key above, plus the registry keys merged from .pkgdef files by extensions.
107
-
* To reduce the impact on the registry, Visual Studio now uses the [RegLoadAppKey](https://msdn.microsoft.com/en-us/library/windows/desktop/ms724886(v=vs.85).aspx) function to store registry keys in a private binary file under %VsAppDataFolder%\privateregistry.bin. Only a very small number of Visual Studio-specific keys remain in the system registry.
109
+
* To reduce the impact on the registry, Visual Studio now uses the [RegLoadAppKey](https://msdn.microsoft.com/en-us/library/windows/desktop/ms724886(v=vs.85).aspx) function to store registry keys in a private binary file under [VSAPPDATA]\privateregistry.bin. Only a very small number of Visual Studio-specific keys remain in the system registry.
108
110
* Existing code running inside the Visual Studio process is not impacted. Visual Studio will redirect all registry operations under the HKCU Visual Studio-specific key to the private registry. Reading and writing to other registry locations will continue to use the system registry.
109
111
* External code will need to load and read from this file for Visual Studio registry entries.
Starting with Visual Studio 2017, you can install multiple instances of the same version or even edition. This is helpful when you want to preview new functionality on your primary development machine while retaining your previous installation. Because of these changes, there is no single environment variable or registry value you can use to locate an instance. Instead, you can use a [COM query API](https://msdn.microsoft.com/library/microsoft.visualstudio.setup.configuration.aspx) to find instances based on criteria relevant to your extension.
34
+
35
+
This is a fast, read-only API with NuGet packages available for native and managed code.
You can locate a single instance given a path or the current process, or enumerate all instances. See [our samples](https://github.com/Microsoft/vs-setup-samples) for complete examples of how to locate Visual Studio.
43
+
44
+
## Tools
45
+
46
+
To find Visual Studio and other tools in build environments, PowerShell scripts, installers, and more scenarios, we have a number of open source tools you can use directly or redistribute along with your own scripts.
47
+
48
+
| Project | Description |
49
+
| ------- | ----------- |
50
+
|[vswhere](https://github.com/Microsoft/vswhere)| Single-file native executable to locate instances meeting criteria such as release or pre-release, what product is installed, and which workloads are installed. Also supports finding Visual Studio 2010 and newer, though less information is returned that for Visual Studio 2017 and newer. See the [wiki](https://github.com/Microsoft/vswhere/wiki) for examples. |
51
+
|[VSSetup cmdlets](https://github.com/Microsoft/vssetup.powershell)| PowerShell cmdlets supported 2.0 and newer that return rich information as objects you can use to find instances based on the same criteria as _vswhere_ and to discover even more properties about instances. See the [wiki](https://github.com/Microsoft/vssetup.powershell/wiki) for examples. |
52
+
|[VSIXBootstrapper](https://github.com/Microsoft/vsixbootstrapper)| Automatically locates _VSIXInstaller_ and passes the command line through to install a _*.vsix_ file. This can be useful in installers that do not have direct support for the query APIs. See the [wiki](https://github.com/Microsoft/vsixbootstrapper/wiki) for examples. |
53
+
54
+
## See Also
55
+
56
+
*[Changes to Visual Studio 2017 Setup](https://blogs.msdn.microsoft.com/heaths/2016/09/15/changes-to-visual-studio-15-setup)
Copy file name to clipboardExpand all lines: docs/extensibility/set-install-root.md
+9-9Lines changed: 9 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -31,15 +31,15 @@ translation.priority.mt:
31
31
---
32
32
# Installing outside the extensions folder
33
33
34
-
Starting with Visual Studio 2017 and VSIX v3 (version 3), there is now support for installing extension assets outside of the extensions folder. Currently, the following locations are enabled as valid installation locations (where [installdir] is mapped to the Visual Studio instance's installation directory):
34
+
Starting with Visual Studio 2017 and VSIX v3 (version 3), there is now support for installing extension assets outside of the extensions folder. Currently, the following locations are enabled as valid installation locations (where [INSTALLDIR] is mapped to the Visual Studio instance's installation directory):
35
35
36
-
*[installdir]\Common7\IDE\PublicAssemblies
37
-
*[installdir]\Common7\IDE\ReferenceAssemblies
38
-
*[installdir]\MSBuild
39
-
*[installdir]\Schemas
40
-
*[installdir]\Licenses
41
-
*[installdir]\RemoteDebugger
42
-
*[installdir]\VSTargets
36
+
*[INSTALLDIR]\Common7\IDE\PublicAssemblies
37
+
*[INSTALLDIR]\Common7\IDE\ReferenceAssemblies
38
+
*[INSTALLDIR]\MSBuild
39
+
*[INSTALLDIR]\Schemas
40
+
*[INSTALLDIR]\Licenses
41
+
*[INSTALLDIR]\RemoteDebugger
42
+
*[INSTALLDIR]\VSTargets
43
43
44
44
>**Note:** The VSIX format does not allow you to install outside the VS install folder structure.
45
45
@@ -67,7 +67,7 @@ This will add some metadata to the corresponding `ProjectReference` property ins
67
67
68
68
## How to set a subpath under the InstallRoot
69
69
70
-
If you'd like to install to a subpath underneath the `InstallRoot`, you can do so by setting the `VsixSubPath` property just like the `InstallRoot` property. For instance, say we want our project reference's output to install to '[installdir]\MSBuild\MyCompany\MySDK\1.0'. We can do this easily with the property designer:
70
+
If you'd like to install to a subpath underneath the `InstallRoot`, you can do so by setting the `VsixSubPath` property just like the `InstallRoot` property. For instance, say we want our project reference's output to install to '[INSTALLDIR]\MSBuild\MyCompany\MySDK\1.0'. We can do this easily with the property designer:
Copy file name to clipboardExpand all lines: docs/extensibility/shipping-visual-studio-extensions.md
+2-1Lines changed: 2 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -70,4 +70,5 @@ After you've finished developing your extension, you can install it on other mac
70
70
|[Preparing Extensions for Windows Installer Deployment](../extensibility/preparing-extensions-for-windows-installer-deployment.md)|Explains how to deploy your extension with Windows Installer.|
71
71
|[Signing VSIX Packages](../extensibility/signing-vsix-packages.md)|Explains how to sign VSIX packages.|
72
72
|[Private Galleries](../extensibility/private-galleries.md)|Explains how to create private galleries for extensions.|
73
-
|[Supporting Multiple Versions of Visual Studio](../extensibility/supporting-multiple-versions-of-visual-studio.md)|Shows how to have your extension support multiple versions of Visual Studio.|
73
+
|[Supporting Multiple Versions of Visual Studio](../extensibility/supporting-multiple-versions-of-visual-studio.md)|Shows how to have your extension support multiple versions of Visual Studio.|
74
+
|[Locating Visual Studio](locating-visual-studio.md)|Describes how to locate Visual Studio instances for custom extension deployment.|
0 commit comments