C# “预先生成事件命令行”和“后期生成事件命令行”
概述
Visual studio 项目允许在项目属性生成事件一栏中指定预先生成和后期生成事件来实现项目生成与部署的自动化。
实例1:
我自己写了一个调试工具,该工具处于一边开发一边使用过程中。实际工作中可能时不时的我会遇到一些新的特性需求想要加到该工具类库中,每次开发到一个稳定版本我会发布到我的部署目录下。我希望我项目生成的文件自动copy到某个特定的部署目录中,因此可以通过制定以下后期生成事件实现:
if $(Configuration)==Release (
xcopy $(ProjectDir)$(OutDir)*.* C:\SeeSharp\JXInst\SeeSharpTools\Debug\Bin\ /y
del C:\SeeSharp\JXInst\SeeSharpTools\Debug\Bin\*.tmp
)
- if $(Configuration)==Release表示在正式发布版才执行该操作,我不希望在调试过程生成的版本也被发布到部署目录下
- (ProjectDir)$(OutDir)*.* 表示项目输出路径下生成的所有文件
- C:\SeeSharp\JXInst\SeeSharpTools\Debug\Bin\ 是我的部署路径
- XCOPY复制组文件
XCOPY与COPY命令类似,也是文件对文件的复制,只是XCOPY命令可以将子目录的文件一并复制,COPY命令只可以复制某一指定目录下的文件,无法将子目录区一并复制。另外应注意的是,XCOPY是外部命令,而COPY为内部命令;
实例2:
程序需要依赖某些配置文件,在编译生成前使用一个预先生成事件将某路径下的文件拷贝到输出路径下去
if not exist $(ProjectDir)$(OutDir)SystemSettings.ini xcopy $(ProjectDir)Resources\SystemSettings.ini $(ProjectDir)$(OutDir)
if not exist "$(ProjectDir)$(OutDir)all product\PXIe7506ProductInfo.csv" copy "$(ProjectDir)Resources\PXIe7506ProductInfo.csv" "$(ProjectDir)$(OutDir)all product\"
- 通过 if not exist 来检查文件是否存在,如果存在的话就不执行拷贝操作
- 如果路径中存在空格的话必须要把整条路径用双引号括起来,否则会导致生成失败,错误列表提示 命令“balabalabala”已退出,代码为3(也可能是代码为4);输出窗口提示系统找不到指定的路径
- 需要注意如果路径中有一些特殊符号的话会导致事件执行失败,比如某文件夹名字中带符号&,错误列表提示 命令“balabalabala”已退出,代码为255;输出窗口提示 此时不应有 &
- 尽量使用XCOPY而不是COPY,XCOPY刻意通过 /y指定在遇到文件夹不存在时直接新建一个,文件存在的情况下直接覆盖等操作
Reference
Microsoft Ref:预生成事件/生成后事件命令行对话框
Ref:C# XCOPY命令 “预先生成事件命令行”和“后期生成事件命令行”
C# “预先生成事件命令行”和“后期生成事件命令行”的更多相关文章
- VS2010-使用“预先生成事件命令行”和“后期生成事件命令行”功能
原文:VS2010-使用"预先生成事件命令行"和"后期生成事件命令行"功能 xcopy /r /y $(TargetPath) $(ProjectDir)..\ ...
- C# XCOPY命令 预先生成事件命令行”和“后期生成事件命令行”
$(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) 输出文件目录的路径,相对于项目目录.这解析为“输出目录”属性的值.它包括尾部 ...
- 项目属性-->生成事件-->后期生成事件命令行
以开源记牌器https://github.com/Epix37/Hearthstone-Deck-Tracker 为例,Hearthstone Deck Tracker项目中的后期生成事件命令行: i ...
- VS中的预先生成事件和后期生成事件
原文:VS中的预先生成事件和后期生成事件 在C#开发中,有时候需要在程序编译之前或之后做一些操作. 要达到这个目的,可以使用Visual Studio中的预先生成事件和后期生成事件. 下图是一个简单例 ...
- jmeter命令行运行与生成报告
一. 使用命令行方式运行Jmeter 1.1 为什么 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死. 所以正确的打开方式是在GUI模式下调 ...
- jmeter 命令行运行与生成报告
一. 使用命令行方式运行Jmeter 1.1 为什么 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死. 所以正确的打开方式是在GUI模式下调 ...
- 支持行单击、双击事件的GridView和DataList控件(译)
支持行单击.双击事件的GridView和DataList控件(译) 让GridView 和 DataList 控件响应鼠标单击.双击事件.并且,使用 ClientScript.Regi ...
- 烽火2640路由器命令行手册-12-IBM网络配置命令
IBM网络配置命令 目 录 第1章 DLSW配置命令... 1 1.1 DLSW配置命令... 1 1.1.1 dlsw local-peer 1 1.1.2 dlsw remote-peer 3 ...
- xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理
之前正常运行的hudson iOS编译服务器slave节点,忽然出现编译失败.发现原因有2个: 第一个原因是编译机上用来签名的用户帐号过期,第二个原因是操作系统和xCode升级造成的. 对于第一个,重 ...
随机推荐
- 获取音视频文件AVMetadata数据
获取音视频文件AVMetadata数据 问题来源: http://stackoverflow.com/questions/16318821/extracting-mp3-album-artwork-i ...
- [Android Pro] Android 手机root 并 安装 BusyBox pro 和 Android Terminal Emulator
Android root 工具:http://www.z4root.cn/yijianrootshouji/ 推荐的是:root精灵手机版 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说 ...
- iOS:搜索栏控件UISearchBar and SearchDisplayController的使用
UISearchBar and SearchDisplayController控件: 这是一个带搜索栏和搜索显示控制器的控件,前面的SearchBar是一个搜索栏,它提供一个输入搜索条件的类似于文本框 ...
- Python开发之AJAX全套
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
- JavaScript中的单引号和双引号解决
在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...
- jQuery代码性能优化
代码优化是一个很重要的开发态度,一点点的优化对于程序来讲可能是微乎其微的,但是把所有的一点都加起来就能够达到水滴石穿的效果,所以要在平时的开发过程中养成优化代码的好习惯. 1. 检测元素是否存在 避免 ...
- WEB打印控件Lodop(V6.x)使用说明及样例
WEB打印控件Lodop(V6.x)使用说明及样例 Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页. 控件功能强大,却简单易用,所有调用如同JavaScript扩展 ...
- angular中$location读取url信息
读取url信息: <html ng-app="myApp"> <head> <title>angularjs-demo</title> ...
- Oracle 之 分析函数
一.分析函数 1.分析函数 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 2.分析函数 ...
- html中嵌入flvplayer.swf播放器,播放视频
只需要改动红色的代码: <object classid='clsid:D27CDB6E-AE6D-11cf-96B8-4445535411111' codebase='http://downlo ...