Visual Studio build event command line 使用方法

一、修改一个工程生成的主文件的扩展名。

说明:一个工程,如果设置输出类型为class library,则编译链接后生成的主文件默认的扩展名为.dll。如果有需要要将扩展名改为其他,如.plugin,那么如何设置呢?

问题:在VS2008中,C#类型的工程的属性中并没有设置输出文件名称这一项。。。

解决:在Build Events标签的Pre-build events command line 和 Post-build event command line中分别如下设置:

    Pre-build event command line :if exist $(TargetName).plugin del $(TargetName).plugin
    Post-build event command line:ren $(TargetName)$(TargetExt) $(TargetName).plugin

说明:1)Pre-build event command line 和Post-build event command line真的非常有用非常灵活,它们分别提供了在编译链接前和编译链接后的用户接口,可以供用户方便的定制这两个时间段的操作。
2)Pre-build event command line 和Post-build event command line中的输入内容遵循DOS的语法规则——实际上,它们就是两个批处理文件。
3)可以看到有个Macros按钮,展开可以看到很多的宏,这些宏仅仅是一些提示,提供工程相关的对象的名称。
4)可以在编译时的OutPut窗口中看到Pre-build event command line 和Post-build event command line中批处理命令的执行语句,它们也确实是在当前工程编译之前和编译之后执行的。
5)if exist $(TargetName).plugin del $(TargetName).plugin:首先在编译前将之前可能存在的.plugin文件删除,如果不删除,编译后执行的重命名操作会报错(提示有一个重名文件存在);ren $(TargetName)$(TargetExt) $(TargetName).plugin完成后缀名的修改。其中,$(TargetName)就是通过Macros按钮的提示找到的宏,它的意思就是主输出文件的文件名,$(TargetExt)是默认的扩展名,这里面是.dll。

copy file

xcopy $(ProjectDir)Output $(TargetDir) /Y /E //复制项目根目录文件至debug目录

copy "$(TargetDir)$(TargetName).lib" ..\lib\deploy\$(TargetName).lib
编译完成后将一个.lib 文件拷贝到指定目录


Post-Build Event command line
在vs2003 和2005中都支持了Build Events, 但是2003只支持单行的命令,而2005可以支持多行命令.

要想在2003中执行多行命令,只能把命令写在一个批处理文件中,然后通过调用批处理来执行.

1.在Solution explorer中用context meun查看project的property.

2.选择Build Events,可以看到Pre-build 和Post-build event command line,以及运行Post-build event 的条件

二、用法收集

1.build完后修改build产物的名字(后缀),并覆盖已有的同名文件.

copy $(TargetFileName) $(TargetName).XXX y

2. 调用外部命令或批处理:

call "C:\Program Files\XXX.exe"

3. 条件判断:

IF NOT $(ConfigurationName) == Release GOTO end

    call "C:\Program Files\XXX.exe" $(ProjectDir)$(TargetName).cvp

:end

4.web project 自动部署

copy     $(TargetDir)*.*     //MyServer/MyService/bin
copy     $(ProjectDir)*.ascx     //MyServer/MyService

5. copy from one path to the other path

Copy "$(ProjectDir)pri.bin" "$(SolutionDir)$(SolutionName)\$(OutDir)"

copy  pri.bin(file name) from $(ProjectDir) to $(SolutionDir)$(SolutionName)\$(OutDir)

三、Macro收集

$(DevEnvDir)

$(ProjectDir)

$(BuiltOuputPath)

$(ConfigurationName)

$(TargetName)  不含扩展名

$(TargetFileName)  包含扩展名

上一篇:[bug]spring项目通过反射测试私有方法时,注入对象异常


下一篇:【Java代码之美】 -- 通过Value获取Map中的键值Key的四种方法