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

概述

Visual studio 项目容许在项目属性生成事件一栏中指定预先生成和后期生成事件来实现项目生成与部署的自动化。windows

实例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:

程序须要依赖某些配置文件,在编译生成前使用一个预先生成事件将某路径下的文件拷贝到输出路径下去spa

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

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

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

Microsoft Ref:xcopycode

baike.baidu.com Ref:xcopyorm

相关文章
相关标签/搜索