在项目开始生成或者生成完成后想做一些操作,比如去编译非解决方案下的的项目,完成编译后复制文件到某个文件夹之类的纠结需求。
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 Studio2017EnterpriseMSBuild15.0Binmsbuild.exe" ......BB.csproj /t:Rebuild /p:Configuration=Debug
xcopy "......BBinDebug*.dll" "%cd%" /s /e /y
echo current path: “%cd%”
"D:Program Files (x86)Microsoft Visual Studio2017EnterpriseMSBuild15.0Binmsbuild.exe" ......AA.csproj /t:Rebuild /p:Configuration=Debug
xcopy "......APathBinDebug*.dll" "%cd%" /s /e /y
echo current path: ”%cd%“
3. 编译命令
- devenv 一般是安装了vs才会有
- MSBuild 不安装vs,安装了net也可以有,比如C:WINDOWSMicrosoft.NETFrameworkv4.0.30319
错误1:一些C#的高级语法在net安装目录下的msbuild不支持
解决方法:使用vs安装目录下的msbuild
e.g. "D:Program Files (x86)Microsoft Visual Studio2017EnterpriseMSBuild15.0Binmsbuild.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中获取最新的文件