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中的预先生成事件和后期生成事件的更多相关文章
- C# “预先生成事件命令行”和“后期生成事件命令行”
概述 Visual studio 项目允许在项目属性生成事件一栏中指定预先生成和后期生成事件来实现项目生成与部署的自动化. 实例1: 我自己写了一个调试工具,该工具处于一边开发一边使用过程中.实际工作 ...
- VS2010-使用“预先生成事件命令行”和“后期生成事件命令行”功能
原文:VS2010-使用"预先生成事件命令行"和"后期生成事件命令行"功能 xcopy /r /y $(TargetPath) $(ProjectDir)..\ ...
- 项目属性-->生成事件-->后期生成事件命令行
以开源记牌器https://github.com/Epix37/Hearthstone-Deck-Tracker 为例,Hearthstone Deck Tracker项目中的后期生成事件命令行: i ...
- Js - JQ事件委托( 适用于给动态生成的脚本元素添加事件)
最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...
- JS笔记 - JQ事件委托( 适用于给动态生成的脚本元素添加事件)
最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...
- jQuery中如何给动态添加的元素绑定事件
jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这 ...
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- vs2015 编译时错误列表中没有错误,dll却没有生成出来
最近发现vs2015的一个问题, 编译时,错误列表中没有错误,dll却没有生成出来,vs重启也无效 解决: 多次排查发现如果一个类库设置的是framework 4.0版本,但引用了framework4 ...
- JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)
主要原因:在页面给元素注册点击事件的时候[ $(function () { XXX }); ],JS动态生成的元素还尚未生成,所以click事件就没有生效 解决方法: 方案一:js动态生成元素后再给 ...
随机推荐
- JavaBean基础
JavaBean的概念 JavaBean是一种可重复使用.且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean:还有一种是没有用户界 ...
- 饿了么 ---Java面试
下午去饿了么参加面试,其实也满怀期待,毕竟也是个大公司. 交通:偏外环,真北路 环境:感觉压抑,不通风,面试人很多,可能是屋子高度低,不舒服. 填了资料,等待面试,两轮,真是憋屈 都是搞技术的,何苦为 ...
- LVS图解 ---阿里
LVS在大规模网络环境中的应用 1. SLB总体架构 LVS本身是开源的,我们对它进行了多方面的改进,并且也已开源-https://github.com/alibaba/LVS. 接下 ...
- Bigcommerce:intershop编程经验总结
1.修改或者添加网页Title,Keywords,Decoration的代码: $full_url = $_SERVER['REQUEST_URI']; //获取请求的url $letter = s ...
- c++逆向 vector
最近弄Android c/c++方面的逆向,发现c++的类,stl模板,在逆向的时候相比c语言都带来了不小的困难. 今天自己写了个小程序,然后逆向分析了一下 vector<int> arr ...
- [转] C++虚函数与虚函数表
http://www.cnblogs.com/Ripper-Y/archive/2012/05/15/2501930.html http://blog.csdn.net/haoel/article/d ...
- iOS开发系列之远程控制事件
在今天的文章中还剩下最后一类事件:远程控制,远程控制事件这里主要说的就是耳机线控操作.在前面的事件列表中,大家可以看到在iOS中和远程控制事件有关的只有一个- (void)remoteControlR ...
- iOS开发系列之触摸事件
基础知识 三类事件中触摸事件在iOS中是最常用的事件,这里我们首先介绍触摸事件. 在下面的例子中定义一个KCImage,它继承于UIView,在KCImage中指定一个图片作为背景.定义一个视图控制器 ...
- 解除网页右键限制和开启网页编辑状态的js代码
当访问页面右键被限制了怎么办?很好办!将以下代码添加进收藏夹,点击执行即可: javascript:alert(document.onselectstart = document.onbeforeco ...
- python简单小爬虫爬取易车网图片
上代码: import requests,urllib.request from bs4 import BeautifulSoup url = 'http://photo.bitauto.com/' ...