概述

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:预生成事件/生成后事件命令行对话框

Microsoft Ref: 如何:指定生成事件 (C#)

Ref:C# XCOPY命令 “预先生成事件命令行”和“后期生成事件命令行”

Microsoft Ref:xcopy

baike.baidu.com Ref:xcopy

C# “预先生成事件命令行”和“后期生成事件命令行”的更多相关文章

  1. VS2010-使用“预先生成事件命令行”和“后期生成事件命令行”功能

    原文:VS2010-使用"预先生成事件命令行"和"后期生成事件命令行"功能 xcopy /r /y $(TargetPath) $(ProjectDir)..\ ...

  2. C# XCOPY命令 预先生成事件命令行”和“后期生成事件命令行”

    $(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) 输出文件目录的路径,相对于项目目录.这解析为“输出目录”属性的值.它包括尾部 ...

  3. 项目属性-->生成事件-->后期生成事件命令行

    以开源记牌器https://github.com/Epix37/Hearthstone-Deck-Tracker 为例,Hearthstone Deck Tracker项目中的后期生成事件命令行: i ...

  4. VS中的预先生成事件和后期生成事件

    原文:VS中的预先生成事件和后期生成事件 在C#开发中,有时候需要在程序编译之前或之后做一些操作. 要达到这个目的,可以使用Visual Studio中的预先生成事件和后期生成事件. 下图是一个简单例 ...

  5. jmeter命令行运行与生成报告

    一.     使用命令行方式运行Jmeter 1.1 为什么 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死. 所以正确的打开方式是在GUI模式下调 ...

  6. jmeter 命令行运行与生成报告

    一.     使用命令行方式运行Jmeter 1.1 为什么 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死. 所以正确的打开方式是在GUI模式下调 ...

  7. 支持行单击、双击事件的GridView和DataList控件(译)

    支持行单击.双击事件的GridView和DataList控件(译)         让GridView 和 DataList 控件响应鼠标单击.双击事件.并且,使用 ClientScript.Regi ...

  8. 烽火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 ...

  9. xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理

    之前正常运行的hudson iOS编译服务器slave节点,忽然出现编译失败.发现原因有2个: 第一个原因是编译机上用来签名的用户帐号过期,第二个原因是操作系统和xCode升级造成的. 对于第一个,重 ...

随机推荐

  1. Fully Digital Implemented Delta-Sigma Analog to Digital Converter

    http://www.design-reuse.com/articles/14886/fully-digital-implemented-delta-sigma-analog-to-digital-c ...

  2. 深入Delphi下的DLL编程

    深入Delphi下的DLL编程 作者:岑心 引 言 相信有些计算机知识的朋友都应该听说过“DLL”.尤其是那些使用过windows操作系统的人,都应该有过多次重装系统的“悲惨”经历——无论再怎样小心, ...

  3. Hough变换的方法检测直线段,效果良好

    转自pund, Hough_Grd 程序下载地址:点击下图,并在下图所示的路径下寻找

  4. golang的缓冲channel和无缓冲channel的区别

    话说golang的channel同步的定义真是让人无力吐槽,码农的用户体验就这么难搞么,超耐磨阿,无缓冲和缓冲居然有这么大区别....靠 转载一段网上的资料 --------------------- ...

  5. https://github.com/wytings

    博客中写了很多比较杂乱的东西,有时候可能一时看不出效果,毕竟代码问题确实是 “Talk is cheap. Show me the code” 所以,就开了一个github,把一些日常开发和使用的工具 ...

  6. Js组件layer的使用

    作为独立组件使用 layer 引入好layer.js后,直接用即可 <script src="layer.js"></script> <script& ...

  7. go语言基础之获取命令行参数

    1.获取命令行参数 示例: package main //必须 import "fmt" import "os" func main() { list := o ...

  8. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  9. http响应报文,如果响应的内容比较大,客户端怎么样判断接收完了呢?

    1.   http协议有正文大小说明的content-length 2. 或者分块传输chunked的话  读到0\r\n\r\n 就是读完了 ---------------------------- ...

  10. android学习的网站收集

    1. http://mob.com/#/index 提供分享等统一解决方案 2. http://bbs.apkbus.com/explore/ 这个类似的quroa问答模块,覆盖不错.就是人气,稍差. ...