`
isiqi
  • 浏览: 16671087 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

“Visual Studio 2005 命令提示”工具原理解析

阅读更多

观察“Visual Studio 2005 命令提示”的属性,发现运行“Visual Studio 2005 命令提示”即运行

%comspec% /k ""d:\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x86

其中comspec即%SystemRoot%\system32\cmd.exe,故以上命令行即“以x86为参数,运行vcvarsall.bat批处理文件”

查看vcvarsall.bat文件的源代码

@echooff
if
" %1 " == "" gotox86
ifnot
" %2 " == "" gotousage

if/i%
1 == x86gotox86
if/i%
1 == amd64gotoamd64
if/i%
1 == x64gotoamd64
if/i%
1 == ia64gotoia64
if/i%
1 == x86_amd64gotox86_amd64
if/i%
1 == x86_ia64gotox86_ia64
gotousage

:x86
ifnotexist
" %~dp0binvcvars32.bat " gotomissing
call
" %~dp0binvcvars32.bat "
goto:eof

:amd64
ifnotexist
" %~dp0binamd64vcvarsamd64.bat " gotomissing
call
" %~dp0binamd64vcvarsamd64.bat "
goto:eof

:ia64
ifnotexist
" %~dp0binia64vcvarsia64.bat " gotomissing
call
" %~dp0binia64vcvarsia64.bat "
goto:eof

:x86_amd64
ifnotexist
" %~dp0bin†_amd64vcvarsx86_amd64.bat " gotomissing
call
" %~dp0bin†_amd64vcvarsx86_amd64.bat "
goto:eof

:x86_ia64
ifnotexist
" %~dp0bin†_ia64vcvarsx86_ia64.bat " gotomissing
call
" %~dp0bin†_ia64vcvarsx86_ia64.bat "
goto:eof

:usage
echoErrorinscriptusage.Thecorrectusageis:
echo%
0 [ option ]
echowhere
[ option ] is:x86^|ia64^|amd64^|x86_amd64^|x86_ia64
echo:
echoForexample:
echo%
0 x86_ia64
goto:eof

:missing
echoThespecifiedconfigurationtypeismissing.Thetoolsforthe
echoconfigurationmightnotbeinstalled.
goto:eof

不难发现,实际运行的代码是

:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
goto :eof

即运行当前目录下的bin目录下的vcvars32.bat文件,这个文件的内容非常简单,如下:

"%VS80COMNTOOLS%vsvars32.bat"

其中VS80COMNTOOLS为系统变量,在我的机器上取值d:\Microsoft Visual Studio 8\Common7\Tools\

故找到该目录,并查看其下的vsvars32.bat,代码如下

@SETVSINSTALLDIR = d:MicrosoftVisualStudio 8
@SETVCINSTALLDIR
= d:MicrosoftVisualStudio 8 VC
@SETFrameworkDir
= C:WINDOWSMicrosoft.NETFramework
@SETFrameworkVersion
= v2 .0.50727
@SETFrameworkSDKDir
= d:MicrosoftVisualStudio 8 SDKv2 .0
@if
" %VSINSTALLDIR% " == "" gotoerror_no_VSINSTALLDIR
@if
" %VCINSTALLDIR% " == "" gotoerror_no_VCINSTALLDIR

@echoSettingenvironmentforusingMicrosoftVisualStudio
2005 x86tools.

@rem
@remRootofVisualStudioIDEinstalledfiles.
@rem
@setDevEnvDir
= d:MicrosoftVisualStudio 8 Common7IDE

@setPATH
= d:MicrosoftVisualStudio 8 Common7IDE ; d:MicrosoftVisualStudio8VCBIN;d:MicrosoftVisualStudio8Common7Tools;d:MicrosoftVisualStudio8Common7Toolsin;d:MicrosoftVisualStudio8VCPlatformSDKin;d:MicrosoftVisualStudio8SDKv2.0in;C:WINDOWSMicrosoft.NETFrameworkv2.0.50727;d:MicrosoftVisualStudio8VCVCPackages;%PATH%
@setINCLUDE = d:MicrosoftVisualStudio 8 VCATLMFCINCLUDE ; d:MicrosoftVisualStudio8VCINCLUDE;d:MicrosoftVisualStudio8VCPlatformSDKinclude;d:MicrosoftVisualStudio8SDKv2.0include;%INCLUDE%
@setLIB = d:MicrosoftVisualStudio 8 VCATLMFCLIB ; d:MicrosoftVisualStudio8VCLIB;d:MicrosoftVisualStudio8VCPlatformSDKlib;d:MicrosoftVisualStudio8SDKv2.0lib;%LIB%
@setLIBPATH = C:WINDOWSMicrosoft.NETFrameworkv2 .0.50727 ; d:MicrosoftVisualStudio8VCATLMFCLIB

@gotoend

:error_no_VSINSTALLDIR
@echoERROR:VSINSTALLDIRvariableisnotset.
@gotoend

:error_no_VCINSTALLDIR
@echoERROR:VCINSTALLDIRvariableisnotset.
@gotoend

:end

不能发现此文件的作用即为完成与VS2005相关的一些系统变量的设置,如:

VSINSTALLDIR——VS2005的安装路径;

VCINSTALLDIR——VC的安装路径;

FrameworkDir——Framework2.0的安装路径;

等等。

这样,如果我们需要自己写一个批处理文件,完成一些VS2005相关的设置,调用VS2005提供的一些工具(如gacutil,该工具在 D:\Microsoft Visual Studio 8\SDK\v2.0\Bin目录下,该目录没有被Path系统变量引用,故该命令无法直接在cmd中运行),就可以在批处理文件的开头先调用 vsvars32.bat,然后在调用VS2005的相关工具。代码举例如下:

call "%VS80COMNTOOLS%vsvars32.bat"
gacutil /i YejunWorkshop.IDUControlLibrary.Design.dll

该批处理文件直接运行即可将YejunWorkshop.IDUControlLibrary.Design.dll程序集添加到GAC中。

分享到:
评论

相关推荐

    mk2nm:为 Visual Studio 自动翻译 makefile CC++ 项目

    通过这种方式,开发者可以充分利用Visual Studio的高级功能,如代码编辑器的智能提示、重构工具,以及调试器,同时保留makefile的灵活性和跨平台性。这对于那些需要在不同操作系统上构建C/C++项目,或者习惯于使用...

    nginx1.7.9版本vs2010调试运行

    本文将详细介绍如何使用 Visual Studio 2010(VS2010)进行 Nginx 1.7.9 的编译、调试以及单进程模式运行,这对于深入理解和学习 Nginx 的工作原理非常有帮助。 首先,我们需要确保系统已经安装了 VS2010 和必要的...

    命令执行Web服务

    接着,使用记事本创建客户端命令,通过命令提示符利用CSC工具将WSDL文件转换为代理类源代码,并编译为DLL文件。最后,将这个代理类导入到客户端程序,运行并调用Web服务,实现了客户端和服务器之间的交互。 通过...

    鼠标手势demo

    4. **开发环境与工具**:本项目使用Microsoft Visual Studio 2005,这是一款强大的C++集成开发环境,支持Windows应用程序的创建、调试和发布。VS2005提供了丰富的库和API,方便开发者构建各种类型的应用程序。 5. *...

    用Visual Basic 开发交互式CAD系统(源代码+系统+答辩PPT).zip

    VB的Try...Catch语句可以捕获并处理运行时错误,同时,Visual Studio的调试工具可以帮助开发者查找和修复程序问题。 8. **答辩PPT准备**:在项目答辩中,PPT应当清晰地展示项目目标、设计思路、技术实现和成果展示...

    JSONCPP.zip

    3. 打开Visual Studio命令提示符或使用Visual Studio的“外部工具”来运行MSBuild或CMake。 4. 使用CMake配置项目,指定源代码目录和构建目录。 5. 运行构建命令,生成静态库或动态库以及相关的头文件。 JSONCPP...

    查看动态库中包含的函数

    例如,在命令提示符中运行`C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat`,该命令会设置必要的环境变量,使得可以在命令行下直接使用`dumpbin`等工具。 2. **运行`dumpbin`命令**: ...

    编译Boost1.38

    首先,以管理员身份运行Visual Studio 2008的命令提示符窗口,设置环境变量以便能够使用Microsoft Visual Studio 2008的x86工具集。 接下来,通过DOS命令行操作进入Boost的根目录以及`bjam`工具所在的子目录,执行`...

    自建CA详细文档,一步一步就可以

    - **步骤**:使用管理员权限打开命令提示符或PowerShell窗口。 ##### 2.2.2 编译 - **步骤**: 1. 切换到国密库的下载路径。 2. 使用Perl脚本进行配置,如`perl Configure VC-WIN64A no-asm --prefix="D:\gmssl-...

    SuperBat超级批处理编辑器(源码)

    《SuperBat超级批处理编辑器源码解析》 在IT领域,批处理脚本是一种高效自动化任务执行的方式,尤其在Windows系统中广泛使用。而SuperBat超级批处理编辑器则是专为此目的设计的一款工具,其提供了更为强大的功能和...

    ip messenger 3.20

    接着,IPMsg.sln是Visual Studio的解决方案文件,它包含了整个项目的所有组件和配置信息,是管理和组织多个相关项目的重要工具。通过这个文件,我们可以看到项目中的各个组件及其依赖关系,这对于重构或扩展软件非常...

    .net调试器不能启动解决方案

    1. **打开命令提示符**:首先,确保您以管理员身份运行命令提示符。 2. **切换到MDM所在目录**:输入`cd C:\Program Files\Common Files\Microsoft Shared\VS7Debug`,切换到包含MDM的目录。注意,路径中的空格需要...

    windows编译cesium-terrain-builder

    4. 运行CMake:打开命令提示符或PowerShell,进入“build”目录,然后运行CMake,指定源代码目录和生成器。例如: ``` cmake -G "Visual Studio 16 2019" .. ``` 5. 编译项目:在生成的解决方案文件(例如...

    cmake-3.19.6.tar.gz

    在Windows上,可能需要使用MSYS2或Visual Studio的Developer命令提示符来执行类似的步骤,或者使用CMake图形化界面(cmake-gui)进行配置和生成项目。 通过学习和研究CMake的源代码,开发者可以深入理解其内部工作...

    Kedvelop源码以及cmake

    通过研究源码,开发者可以学习到如何构建一个高效、可扩展的IDE,以及如何实现诸如代码智能提示、语法解析和调试支持等功能。同时,源码还揭示了KDevelop如何与CMake紧密集成,以支持多平台的构建和配置。 **CMake...

    STL port

    对于Windows系统,可能需要通过命令提示符或Visual Studio的Developer命令提示符来运行`configure.bat`。 4. **编译与安装**:配置成功后,使用`make`或相应编译器的命令进行编译,然后使用`make install`或类似...

    定时关机代码(vs2003)

    【定时关机代码(vs2003)】是一个基于Visual Studio 2003开发的应用程序,主要用于实现计算机的定时自动关机功能,并且具备自定义提示信息和播放音频的能力。这个项目对于那些需要在特定时间让电脑自动关闭或者进行...

    openssl-OpenSSL_1_1_0f

    如果编译失败,并非总是由于代码本身的问题,可能是编译器(如 Visual Studio,简称 vs)的配置不正确或者缺少必要的编译工具和依赖库。建议尝试重新安装编译环境来解决这类问题。 **标签解析:** "源码" 标签表明...

    16F877A.rar_单片机开发_Visual_C++_

    "单片机开发"表明这是一个关于微控制器编程的学习资料,而“Visual C++”则提示我们使用的编程环境是Microsoft的Visual Studio,且可能利用了C++语言进行开发。 描述中的“pic16F877A 读取 sht10 sht11,读取温湿度...

    VB源代码 网络检测

    VB(Visual Basic)是微软公司开发的一种编程语言,属于Visual Studio家族的一部分,它以其易学易用、可视化设计和强大的Windows应用程序开发能力而受到程序员的欢迎。VB源代码通常是用VB编写的应用程序的原始指令...

Global site tag (gtag.js) - Google Analytics