VS中的预先生成事件和后期生成事件
原文: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

posted on 2015-12-09 14:05 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/5032653.html

VS中的预先生成事件和后期生成事件相关推荐

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

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

  2. VS 后期生成事件语法格式

    说明 在进行 VS 多工程管理时候,经常需要复制一些 lib 或者 dll,此时就需要后处理语句 具体在配置属性 -> 生成事件 -> 后期生成事 件-> 命令行添加 语法 xcop ...

  3. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  4. JavaScript中的嵌套事件处理(在鼠标移动事件上)

    Multiple event handling is the secret ingredient of dynamic WebPages seen now-a-days. 多重事件处理是当今动态网页的 ...

  5. 动态生成的dom为什么绑定事件会失效,以及如何解决

    之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试 ...

  6. 触摸事件中touchstar、touchmove、touchend、touchcancel事件应用方法及实例

    触摸事件中touchstar.touchmove.touchend.touchcancel事件应用方法及实例 一. 分享到: 前面我们介绍过移动设备中一些设备事件,例如手机旋转90度.倾斜等设置放置姿 ...

  7. 触摸事件中touchstart、touchmove、touchend、touchcancel事件应用方法及实例

    触摸事件中touchstar.touchmove.touchend.touchcancel事件应用方法及实例 一. 分享到: 前面我们介绍过移动设备中一些设备事件,例如手机旋转90度.倾斜等设置放置姿 ...

  8. js基础(七){事件的分类 绑定事件 函数中的this 字符串 函数的传参规则 严格模式}

    JS中的常用事件 什么叫做事件 所谓的事件,是浏览器监听用户行为的一种机制. 比如,当用户使用鼠标 "点击" 一个按钮,会触发该按钮的"点击"事件 如果此时我们 ...

  9. pandas使用dt.day_name函数从dataframe(Series)中的日期数据列中抽取日期对应的星期信息生成新的数据列(Monday、Sunday)

    pandas使用dt.day_name函数从dataframe(Series)中的日期数据列中抽取日期对应的星期信息生成新的数据列(Monday.Sunday) 目录

最新文章

  1. SSD配置+训练VOC0712+训练自己的数据集
  2. layui数据表格自定义复选框表头_layui中table表头样式修改方法
  3. Spring MVC 3模板和Apache Tiles
  4. aix 的c库为什么都是静态库_Linux静态库生成指南
  5. vue 计算属性_lt;Vue 源码笔记系列6gt;计算属性 computed 的实现
  6. gezabo变黑闪退,报错[gazebo_gui-2] process has died
  7. 本科是最底层?学历真的那么重要么?
  8. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南):签到题CDGM
  9. CI中创建你自己的类库
  10. windows下怎么样搭建RobotFramework测试环境
  11. Codeforces Round #435 (Div. 2) E. Mahmoud and Ehab and the function[二分]
  12. 网页扫雷(简易版)(一)
  13. Aqua Comms携手Ciena 测试海底光缆网络150Gbps波长传输
  14. Thief-Book鼠标控制翻页插件(Vscode )
  15. 有一种单身叫宁缺勿滥 -- 纪念百年神棍节
  16. android 手机 对比,看!Android平台三款手机浏览器对比评测
  17. postman使用自定义函数
  18. 2019年数学建模A题 高压油管的压力控制
  19. Jquery中$(document).ready()的作用
  20. 蓝桥杯1——李白打酒加强版

热门文章

  1. 解决批处理命令执行完毕后自动关闭cmd窗口
  2. Ubuntu关闭防火墙
  3. Kotlin入门教程——目录索引
  4. egg 完整实例 增删改查MongoDB,websocket
  5. jQuery获取不到隐藏DIV的高度和宽度
  6. Divergent series
  7. (基础篇)PHP获取时间、时间戳的各种格式写法汇总
  8. RocketMQ使用mmap - TODO
  9. Eclipse-无法引用maven依赖的类/没有MavenDependencies/没有buildpath
  10. python强制暂停线程_关于python:使用ThreadPoolExecutor强制线程超时