“VS2012开发人员命令提示”中涉及的环境变量

2023-07-06 14:16:43 浏览数 (1)

我电脑的配置:操作系统为32位Win7,VS版本为2012Ultimate,VS安装目录为“D:Microsoft Visual Studio 11.0”

今天系统地研究了下“VS2012开发人员命令提示”,这个控制台用的就是Windows本身的控制台cmd.exe,只是在启动后执行了两个批处理脚本(扩展名BAT),在这两个脚本中从注册表里读取了若干个环境变量,打造了VS2012自己的开发人员命令提示。

这篇文章描述了批处理脚本“VsDevCmd.bat”和“VCVarsQueryRegistry.bat”为VS控制台添加的全部环境变量。本文描述的每个环境变量,都有以下两个属性:变量值是该环境变量在我的电脑中显示的值(这与我的计算机和VS安装路径有关),变量来源说明了该环境变量是怎么来的(即上面两个BAT文件是怎么获取的)。

1)%VS110ComnTools%

变量值:D:Microsoft Visual Studio 11.0Common7Tools

变量来源:下面四个注册表项中搜索键“11.0”,最先搜索到的非空字符串即为所求

HKLMSOFTWAREMicrosoftVisualStudioSxSVS7

HKCUSOFTWAREMicrosoftVisualStudioSxSVS7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVS7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVS7

将找出的值,最后添加上 Common7Tools,便是环境变量%VS110COMNTOOLS%的值

如果找不到这个环境变量,运行VS控制台就会报错(error_no_VS110COMNTOOLSDIR),错误内容为:

ERROR: Cannot determine the location of the VS Common Tools folder.

2)%WindowsSdkDir%

变量值:C:Program FilesWindows Kits8.0

变量来源:下面四个注册表项中搜索键“InstallationFolder”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0

HKCUSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0

HKLMSOFTWAREWow6432NodeMicrosoftMicrosoft SDKsWindowsv8.0

HKCUSOFTWAREWow6432NodeMicrosoftMicrosoft SDKsWindowsv8.0

3)%WindowsSdkDir_old%

变量值:C:Program FilesMicrosoft SDKsWindowsv8.0A

变量来源:下面四个注册表项中搜索键“InstallationFolder”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0a

HKCUSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0a

HKLMSOFTWAREWow6432NodeMicrosoftMicrosoft SDKsWindowsv8.0a

HKCUSOFTWAREWow6432NodeMicrosoftMicrosoft SDKsWindowsv8.0a

4)%GetWindowsSdkDir_35%

变量值:C:Program FilesMicrosoft SDKsWindowsv7.0Abin

变量来源:下面四个注册表项中搜索键“InstallationFolder”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0AWinSDK-NetFx35Tools

HKCUSOFTWAREMicrosoftMicrosoft SDKsWindowsv8.0AWinSDK-NetFx35Tools

HKLMSOFTWAREWow6432NodeMicrosoft SDKsWindowsv8.0AWinSDK-NetFx35Tools

HKCUSOFTWAREWow6432NodeMicrosoft SDKsWindowsv8.0AWinSDK-NetFx35Tools

5)%ExtensionSdkDir%

变量值:C:Program FilesMicrosoft SDKsWindowsv8.0ExtensionSDKs

变量来源:

若文件%ProgramFiles%Microsoft SDKsWindowsv8.0ExtensionSDKsMicrosoft.VCLibs11.0SDKManifest.xml存在,则%ProgramFiles%Microsoft SDKsWindowsv8.0ExtensionSDKs

若文件%ProgramFiles(x86)%Microsoft SDKsWindowsv8.0ExtensionSDKsMicrosoft.VCLibs11.0SDKManifest.xml存在,则%ProgramFiles(x86)%Microsoft SDKsWindowsv8.0ExtensionSDKs

二者都存在则取后者

6)%VSInstallDir%

变量值:D:Microsoft Visual Studio 11.0

变量来源:下面四个注册表项中搜索键“11.0”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVS7

HKCUSOFTWAREMicrosoftVisualStudioSxSVS7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVS7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVS7

如果找不到这个环境变量,运行VS控制台就会报错(error_no_VSINSTALLDIR),错误内容为:

ERROR: Cannot determine the location of the VS installation.

7)%VCInstallDir%

变量值:D:Microsoft Visual Studio 11.0VC

变量来源:下面四个注册表项中搜索键“11.0”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREMicrosoftVisualStudioSxSVC7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

8)%FSharpInstallDir%

变量值:C:Program FilesMicrosoft SDKsF#3.0Frameworkv4.0

变量来源:下面四个注册表项中搜索键“ProductDir”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudio11.0SetupF#

HKCUSOFTWAREMicrosoftVisualStudio11.0SetupF#

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudio11.0SetupF#

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudio11.0SetupF#

9)%FrameworkDir32% (仅限32bit)

变量值:C:WindowsMicrosoft.NETFramework

变量来源:下面四个注册表项中搜索键“FrameworkDir32”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREMicrosoftVisualStudioSxSVC7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

如果找不到这个环境变量,运行VS控制台就会报错(error_no_FrameworkDIR32),错误内容为:

ERROR: Cannot determine the location of the .NET Framework 32bit installation.

10)%FrameworkVersion32% (仅限32bit)

变量值:v4.0.30319

变量来源:下面四个注册表项中搜索键“FrameworkVer32”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREMicrosoftVisualStudioSxSVC7

HKLMreg query "%1SOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

HKCUreg query "%1SOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

如果找不到这个环境变量,运行VS控制台就会报错(error_no_FrameworkVer32),错误内容为:

ERROR: Cannot determine the version of the .NET Framework 32bit installation.

11)%FrameworkDir64% (仅限64bit)

变量值:(无)

变量来源:下面四个注册表项中搜索键“FrameworkDir64”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREMicrosoftVisualStudioSxSVC7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

12)FrameworkVer64 (仅限64bit)

变量值:(无)

变量来源:下面四个注册表项中搜索键“FrameworkVer64”,最先搜索到的非空字符串即为该环境变量的值

HKLMSOFTWAREMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREMicrosoftVisualStudioSxSVC7

HKLMSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

HKCUSOFTWAREWow6432NodeMicrosoftVisualStudioSxSVC7

13)%Framework35Version%

直接指定为v3.5

如果找不到这个环境变量,运行VS控制台就会报错(error_no_Framework35Version),错误内容为:

ERROR: Cannot determine the .NET Framework 3.5 version.

14)%FrameworkDir%

同%FrameworkDir32%

15)%FrameworkVersion%

同%FrameworkVersion32%

16)�vEnvDir%

变量值:D:Microsoft Visual Studio 11.0Common7IDE

变量来源:%VSINSTALLDIR%Common7IDE

17)%path%、%include%、%lib%、%libpath%

PATH环境变量:运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找

其余几个环境变量的意义,可以在下面两个MSDN页面中看到:

1. http://msdn.microsoft.com/zh-cn/library/kezkeayy(v=vs.80).aspx

CL 工具使用下列环境变量:

CL(如果已定义)。在处理命令行之前,CL 工具处理在 CL 环境变量中定义的选项和参数。

INCLUDE,它必须指向 Visual C 安装的 include 子目录

LIBPATH,它指定从中搜索使用 #using 引用的元数据文件的目录

2. http://msdn.microsoft.com/zh-cn/library/6y6t9esh.aspx

LINK 工具使用下列环境变量:

LINK(如果已定义)。 在处理命令行之前,LINK 工具处理在 LINK 环境变量中定义的选项和参数。

LIB(如果已定义)。 LINK 工具在搜索对象、库或在命令行上或由 /BASE 选项指定的其他文件时,使用 LIB 路径。 它还使用 LIB 路径查找在对象中指定的 .pdb 文件。 LIB 变量可包含一个或多个由分号分隔的指定路径。 一个路径必须指向 Visual C 安装的 lib 子目录。

PATH,如果该工具需要运行 CVTRES 并且找不到与 LINK(链接)其自身相同的目录中的文件。(LINK 需要 CVTRES 链接一个 .res 文件。)PATH 必须指向 Visual C 安装的 bin 子目录。

TMP,以在链接 OMF 或 .res 文件时指定一个目录。

---------------------------------------------------

批处理脚本“VsDevCmd.bat”和“VCVarsQueryRegistry.bat”添加的这四个环境变量列表:

(有些环境变量因计算机具体环境不同,可能不会被添加)

★PATH

%WindowsSdkDir_old%binNETFX 4.0 Tools;

%WindowsSdkDir_35%;

%WindowsSdkDir%binx86;

%VSINSTALLDIR%Team ToolsPerformance Tools;

%ProgramFiles%HTML Help Workshop;

%ProgramFiles(x86)%HTML Help Workshop;

%VCINSTALLDIR%VCPackages;

%FrameworkDir%%Framework35Version%;

%FrameworkDir%%FrameworkVersion%

%VSINSTALLDIR%Common7Tools;

%VCINSTALLDIR%BIN;

�vEnvDir%;

%VSINSTALLDIR%VSTSDBDeploy;

%FSHARPINSTALLDIR%;

�vEnvDir%CommonExtensionsMicrosoftTestWindow;

★INCLUDE

%WindowsSdkDir%includeshared;

%WindowsSdkDir%includeum;

%WindowsSdkDir%includewinrt;

%VCINSTALLDIR%ATLMFCINCLUDE;

%VCINSTALLDIR%INCLUDE;

★LIB

%WindowsSdkDir%libwin8umx86;

%VCINSTALLDIR%ATLMFCLIB;

%VCINSTALLDIR%LIB;

★LIBPATH

%WindowsSdkDir%ReferencesCommonConfigurationNeutral;

%ExtensionSDKDir%Microsoft.VCLibs11.0ReferencesCommonConfigurationneutral;

%VCINSTALLDIR%ATLMFCLIB;

%VCINSTALLDIR%LIB;

%FrameworkDir%%Framework35Version%;

%FrameworkDir%%FrameworkVersion%;

附:几个注册表用到的缩写

HKCR: HKEY_CLASSES_ROOT

HKCU: HKEY_CURRENT_USER

HKLM: HKEY_LOCAL_MACHINE

HKU: HKEY_USERS

HKCC: HKEY_CURRENT_CONFIG

END

0 人点赞