原文:VS中的预先生成事件和后期生成事件

在C#开发中,有时候需要在程序编译之前或之后做一些操作。

要达到这个目的,可以使用Visual Studio中的预先生成事件和后期生成事件。

下图是一个简单例子:

将工程目录中的一些资源文件和库文件拷贝到debug目录下

指定预先生成命令行

1.         在“解决方案资源管理器”中,右击要为其指定预先生成命令行的数据库项目,再单击“属性”。

2.         在“项目属性”窗口中单击“生成事件”选项卡。

3.         执行下列操作之一:

a.       如果已知要执行的命令行,请在“预先生成事件命令行”中键入要在生成数据库项目之前执行的命令行,然后转到步骤 5。

b.       如果要使用生成宏,请单击“编辑预先生成事件”。在“预先生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。

4.         在完成命令行的编辑之后,请单击“确定”。

5.         在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之前执行。

指定后期生成命令行

1.         在“解决方案资源管理器”中,右击要为其指定后期生成命令行的数据库项目,再单击“属性”。

2.         在“项目属性”窗口中单击“生成事件”选项卡。

3.         执行下列操作之一:

c.       如果知道要执行的命令行,请在“后期生成事件命令行”中键入数据库项目生成后要执行的命令行,然后转到步骤 5。

d.       如果要使用生成宏,请单击“编辑后期生成事件”。在“后期生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。

4.         在完成命令行的编辑之后,请单击“确定”。

5.         如果希望仅在生成成功时才运行命令行,请在“运行后期生成事件”列表中,单击“成功生成时”。如果希望命令行总是运行(即使生成失败时),请在“运行后期生成事件”列表中,单击“总是”。

6.         在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之后执行。

注意:应在运行 .bat 文件的每个后期生成命令之前添加 call 语句。例如,可以添加 call C:\MyFile.bat 或 call C:\MyFile.bat

部分宏列表

说明

$(Configuration)

当前项目配置的名称(例如,“Default”)。

$(MSBuildProjectName)

项目的基名称。

$(MSBuildProjectExtension)

项目的文件扩展名。它包括文件扩展名前面的“.”。

$(PlatformName)

当前目标平台的名称(例如,“AnyCPU”)。

$(OutputPath)

生成的主输出文件的路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(OutputType)

项目的输出类型。对于数据库项目,此类型为“database”。

$(DBProduct)

目标数据库项目的 Microsoft SQL Server 版本。此结果将为 SQL Server 2000 或 SQL Server 2005。

$(TargetDatabase)

目标数据库的名称。

$(TargetConnectionString)

用于连接到目标数据库当前驻留(或将驻留)的服务器的连接字符串。

$(MSBuildBinPath)

MSBuild 二进制文件的路径(例如,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)。

$(DefaultSchema)

非限定对象的默认架构。

$(DeploymentCollationPreference)

如果指定,则为如何处理源和目标排序规则之间冲突的首选项。默认情况下,该首选项为 None。

$(AnsiNulls)

有关更多信息,请参见数据库项目设置概述

$(AnsiPadding)

有关更多信息,请参见数据库项目设置概述

$(AnsiWarnings)

有关更多信息,请参见数据库项目设置概述

$(ArithAbort)

有关更多信息,请参见数据库项目设置概述

$(ConcatNullYieldsNull)

有关更多信息,请参见数据库项目设置概述

$(NumericRoundAbort)

有关更多信息,请参见数据库项目设置概述

$(QuotedIdentifier)

有关更多信息,请参见数据库项目设置概述

$(SolutionDir)

解决方案的目录(定义为驱动器 + 路径)。此结果包括尾部的反斜杠“\”。

$(SolutionPath)

解决方案的绝对路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(SolutionName)

解决方案的基名称。

$(SolutionFileName)

解决方案的文件名(定义为基名称 + 文件扩展名)。

$(SolutionExt)

解决方案的文件扩展名。此结果包括文件扩展名前面的“.”。

$(DevEnvDir)

Visual Studio 2005 的安装目录(定义为驱动器 + 路径)。此结果包括尾部的反斜杠“\”。

参考

https://msdn.microsoft.com/zh-cn/library/aa833213(v=vs.80).aspx

VS中的预先生成事件和后期生成事件的更多相关文章

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

    概述 Visual studio 项目允许在项目属性生成事件一栏中指定预先生成和后期生成事件来实现项目生成与部署的自动化. 实例1: 我自己写了一个调试工具,该工具处于一边开发一边使用过程中.实际工作 ...

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

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

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

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

  4. Js - JQ事件委托( 适用于给动态生成的脚本元素添加事件)

    最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...

  5. JS笔记 - JQ事件委托( 适用于给动态生成的脚本元素添加事件)

    最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...

  6. jQuery中如何给动态添加的元素绑定事件

    jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这 ...

  7. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  8. vs2015 编译时错误列表中没有错误,dll却没有生成出来

    最近发现vs2015的一个问题, 编译时,错误列表中没有错误,dll却没有生成出来,vs重启也无效 解决: 多次排查发现如果一个类库设置的是framework 4.0版本,但引用了framework4 ...

  9. JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)

    主要原因:在页面给元素注册点击事件的时候[ $(function () {  XXX }); ],JS动态生成的元素还尚未生成,所以click事件就没有生效 解决方法: 方案一:js动态生成元素后再给 ...

随机推荐

  1. iOS中@class #import #include 简介

    [转载自:http://blog.csdn.net/chengwuli125/article/details/9705315] 一.解析        很多刚开始学习iOS开发的同学可能在看别人的代码 ...

  2. Java里的IO流里的 ObjectInputStream 的读取\写入!

    各位好!!我又来了!!今天遇见了一个小问题!! IO流里的对象读取总是出错!各种报错!!神烦啊!!百思不得其解啊!然后就上网百度!找了好久终于让我找到了!下面就让我来说一说! 当你用IO流里的对象流写 ...

  3. HDU4530:小Q系列故事——大笨钟

    Problem Description 饱尝情感苦恼的小Q本打算隐居一段时间,但仅仅在3月25号一天没有出现,就有很多朋友想念他,所以,他今天决定再出来一次,正式和大家做个告别. 小Q近来睡眠情况很差 ...

  4. Linux 开机自检的设置(tune2fs和fsck)

      tune2fs和fsck的用法 tune2fs--调整ext2/ext3文件系统特性的工具. -l <device> 查看文件系统信息 -c <count> 设置强制自检的 ...

  5. 文件标准IO的mode

    1. r / r+ 是不创建文件,前者只读,后者可读写 2. w / w+ 是能创建文件,并且把文件置空,前者只写,后者可读写 3. a / a+ 是能创建文件,但不置空文件,在文件末尾写,前者只写, ...

  6. AC自动机学习笔记

    AC自动机 ----多个模板的字符串匹配 字典树Trie加上失配边构成 插入操作:ac.insert(p[i],i);构造失配函数:ac.getFail();计算文本串T中每个模板串的匹配数:ac.f ...

  7. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  8. Android 环境下编译FFmpeg

    Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1.    X2 ...

  9. ADLINK 8158控制程序-连续运动(VB.NET)

    运动平台:日脉的二维运动平台(一个旋转平台和一个滑动平台) 开发环境:VS2010 + .NET Framework + VB.NET 使用文件:pci_8158.vb motion_8158_2D. ...

  10. Sublime Text3使用详解

    Sublime Text简介 Sublime Text - 性感的代码编辑器.程序员之必备神器 Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text ...