visual tag studio para iconos extensions extensiones configurar code closing brackethighlighter autocompletar visual-studio

visual-studio - tag - visual studio code extensions



recuperar programáticamente el directorio de instalación de Visual Studio (11)

Sé que hay una clave de registro que indica el directorio de instalación, pero no recuerdo lo que está fuera de servicio.

Actualmente está interesado en el directorio de instalación de VS2008, aunque no estaría de más enumerar otros para referencia futura.


Método de registro

Recomiendo consultar el registro de esta información. Esto proporciona el directorio de instalación real sin necesidad de combinar rutas, y también funciona para ediciones express. Esta podría ser una distinción importante según lo que necesite hacer (por ejemplo, las plantillas se instalan en diferentes directorios según la edición de Visual Studio). Las ubicaciones de registro son las siguientes (tenga en cuenta que Visual Studio es un programa de 32 bits y se instalará en la sección de 32 bits del registro en máquinas x64):

  • Visual Studio: HKLM / SOFTWARE / Microsoft / Visual Studio / Major.Minor: InstallDir
  • Visual C # Express: HKLM / SOFTWARE / Microsoft / VCSExpress / Major.Minor: InstallDir
  • Visual Basic Express: HKLM / SOFTWARE / Microsoft / VBExpress / Major.Minor: InstallDir
  • Visual C ++ Express: HKLM / SOFTWARE / Microsoft / VCExpress / Major.Minor: InstallDir

donde Major es el número de versión principal, Minor es el número de versión menor y el texto después de dos puntos es el nombre del valor de registro. Por ejemplo, el directorio de instalación de Visual Studio 2008 Professional se ubicaría en la clave HKLM / SOFTWARE / Microsoft / Visual Studio / 9.0 , en el valor InstallDir .

Aquí hay un ejemplo de código que imprime el directorio de instalación de varias versiones de Visual Studio y Visual C # Express:

string visualStudioRegistryKeyPath = @"SOFTWARE/Microsoft/VisualStudio"; string visualCSharpExpressRegistryKeyPath = @"SOFTWARE/Microsoft/VCSExpress"; List<Version> vsVersions = new List<Version>() { new Version("10.0"), new Version("9.0"), new Version("8.0") }; foreach (var version in vsVersions) { foreach (var isExpress in new bool[] { false, true }) { RegistryKey registryBase32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); RegistryKey vsVersionRegistryKey = registryBase32.OpenSubKey( string.Format(@"{0}/{1}.{2}", (isExpress) ? visualCSharpExpressRegistryKeyPath : visualStudioRegistryKeyPath, version.Major, version.Minor)); if (vsVersionRegistryKey == null) { continue; } Console.WriteLine(vsVersionRegistryKey.GetValue("InstallDir", string.Empty).ToString()); }

Método de variable de entorno

Las ediciones no explícitas de Visual Studio también escriben una variable de entorno que usted puede verificar, pero le da la ubicación del directorio de herramientas comunes, no el directorio de instalación, por lo que tendrá que hacer una combinación de rutas. El formato de la variable de entorno es VS * COMNTOOLS donde * es el número de versión mayor y menor. Por ejemplo, la variable de entorno para Visual Studio 2010 es VS100COMNTOOLS y contiene un valor como C: / Archivos de programa / Microsoft Visual Studio 10.0 / Common7 / Tools .

Aquí hay un código de ejemplo para imprimir la variable de entorno para varias versiones de Visual Studio:

List<Version> vsVersions = new List<Version>() { new Version("10.0"), new Version("9.0"), new Version("8.0") }; foreach (var version in vsVersions) { Console.WriteLine(Path.Combine(Environment.GetEnvironmentVariable(string.Format("VS{0}{1}COMNTOOLS", version.Major, version.Minor)), @"../IDE")); }


¿No hay configuración de entorno? Tengo VCToolkitInstallDir y VS71COMNTOOLS aunque estoy usando VS2003, no sé si eso cambió para versiones posteriores. Escriba "set V" en la línea de comando y vea si los tiene.


@ Dim-Ka tiene una gran respuesta. Si tiene curiosidad sobre cómo implementar esto en un script por lotes, así es como.

@echo off :: BATCH doesn''t have logical or, otherwise I''d use it SET platform= IF /I [%PROCESSOR_ARCHITECTURE%]==[amd64] set platform=true IF /I [%PROCESSOR_ARCHITEW6432%]==[amd64] set platform=true :: default to VS2012 = 11.0 :: the Environment variable VisualStudioVersion is set by devenv.exe :: if this batch is a child of devenv.exe external tools, we know which version to look at if not defined VisualStudioVersion SET VisualStudioVersion=11.0 if defined platform ( set VSREGKEY=HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/VisualStudio/%VisualStudioVersion% ) ELSE ( set VSREGKEY=HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/%VisualStudioVersion% ) for /f "skip=2 tokens=2,*" %%A in (''reg query "%VSREGKEY%" /v InstallDir'') do SET VSINSTALLDIR=%%B echo %VSINSTALLDIR%


Ah, la parte de la máquina de 64 bits fue el problema. Resulta que necesito asegurarme de que estoy ejecutando PowerShell.exe en el directorio syswow64 para obtener las claves de registro x86.

Ahora que no fue muy divertido.


Aquí hay una solución para obtener siempre la ruta para la última versión:

$vsEnvVars = (dir Env:).Name -match "VS[0-9]{1,3}COMNTOOLS" $latestVs = $vsEnvVars | Sort-Object | Select -Last 1 $vsPath = Get-Content Env:/$latestVs


Estoy seguro de que también hay una entrada en el registro, pero no pude ubicarla fácilmente. Existe la variable de entorno VS90COMNTOOLS que también podría usar.


Puede leer la variable de entorno VSINSTALLDIR.


Tenga en cuenta que si usa Visual Studio Express o Visual C ++ Express, los nombres de las teclas contienen WDExpress o VCExpress, respectivamente, en lugar de VisualStudio.


Use Environment.GetEnvironmentVariable("VS90COMNTOOLS"); también en el entorno de 64 bits, funciona para mí.


Uso este método para encontrar la ruta de instalación de Visual Studio 2010:

private string GetVisualStudioInstallationPath() { string installationPath = null; if (Environment.Is64BitOperatingSystem) { installationPath = (string)Registry.GetValue( "HKEY_LOCAL_MACHINE//SOFTWARE//Wow6432Node//Microsoft//VisualStudio//10.0//", "InstallDir", null); } else { installationPath = (string)Registry.GetValue( "HKEY_LOCAL_MACHINE//SOFTWARE //Microsoft//VisualStudio//10.0//", "InstallDir", null); } return installationPath; }


Medio ambiente: gracias a Zeb y Sam por la sugerencia de variable de entorno VS*COMNTOOLS . Para llegar al IDE en PowerShell:

$vs = Join-Path $env:VS90COMNTOOLS ''../IDE/devenv.exe''

Registro: parece que la ubicación del registro es HKLM/Software/Microsoft/VisualStudio , con subclaves específicas de la versión para cada instalación. En PowerShell:

$vsRegPath = ''HKLM:/Software/Microsoft/VisualStudio/9.0'' $vs = (Get-ItemProperty $vsRegPath).InstallDir + ''devenv.exe''

[Adaptado de aquí ]