VS批处理命令使用


在项目开始生成或者生成完成后想做一些操作,比如去编译非解决方案下的的项目,完成编译后复制文件到某个文件夹之类的纠结需求。

1. 基本使用

  • 预先生成事件命令行,可以在项目编译的过程中运行
  • 后期生成事件命令行,项目生成完成后

右键项目属性 >> 生成事件,如下所示

示例1:

C:

cd C:\

md webconfig

cd C:\webconfig\

svn checkout http://svn地址 

svn update C:\本地路径\

示例2:

chcp 936

"D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ..\..\..\B\B.csproj /t:Rebuild /p:Configuration=Debug

xcopy "..\..\..\B\Bin\Debug\*.dll" "%cd%" /s /e /y

echo current path: “%cd%”

"D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ..\..\..\A\A.csproj /t:Rebuild /p:Configuration=Debug

xcopy "..\..\..\APath\Bin\Debug\*.dll" "%cd%" /s /e /y

echo current path: ”%cd%“

3. 编译命令

  • devenv 一般是安装了vs才会有
  • MSBuild 不安装vs,安装了net也可以有,比如C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\

错误1:一些C#的高级语法在net安装目录下的msbuild不支持

解决方法:使用vs安装目录下的msbuild

e.g. "D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ..\..\..\xxx.csproj /t:Rebuild /p:Configuration=Debug

错误2:找不到指定的路径、无效的参数数量

解决方法:给路径都加上双引号

4. 一些技巧

chcp 936             在vs的输出目录中显示中文

$(SolutionDir)     当前解决方案的根目录,即sln文件所在的目录

$(TargetDir)        当前编译的根目录,比如debug

%cd%                当前cmd目录

svn checkout      从svn中获取一个库

svn update         从svn中获取最新的文件

IDE