Visual Studio 生成事件这件小事
在上一篇《Visual Studio 调试技巧》中,介绍了一些VS常用的调试操作,今天,聊一聊VS当中一个不太常见,但有时又有妙用的操作——VS生成事件。
一、什么是VS生成事件
简单来说,VS生成事件就是在编译项目的过程中发生的一些事件。根据事件发生的时机,允许自定义一些操作。
VS生成事件可以在项目上右键,选择属性菜单后看到。VS生成事件分为以下两大部分:
1. 生成前事件命令行,可以指定在项目编译之前执行的一些命令行操作。
通过点击编辑预先生成按钮,可以编辑生成前事件命令行。其中宏按钮允许插入一些预定义变量,可以代表文件路径。
2. 生成后事件命令行,可以指定在项目编译之后执行的一些命令行操作。
运行后生成事件可以指定运行生成后事件的发生条件。
简单了解VS生成事件之后,再以真实案例说明下VS生成事件的运用。
二、VS生成事件应用
1.使用xcopy拷贝dll
在实际的开发过程中,有时需要使用C#调用C++ dll。然而,C++ dll 分为x86和x64版本。C#程序运行时,需要依据操作系统的类型加载合适版本的dll。这个时候,一个解决方案就是,将公有位置上x86和x64版本的C++ dll ,通过VS生成事件,使用xcopy命令拷贝到程序生成目录的x86和x64文件夹下面,C#程序启动时,自动从x86或x64文件夹下拷贝合适版本的C++ dll。具体命令行实例如下:
/// <summary>
/// author LightSmaile
/// </summary>
private void CheckBlogPosition()
{
if(thisBlogPostion != "cnblogs")
{
Console.WriteLine("this blog has been crawled!");
}
}
2.自动修改程序安装包图标
VS可以制作程序安装包,默认生成setup.exe以及setup.msi。由于setup.exe的图标不能在制作程序安装包的项目当中指定,所以萌生了借助VS生成事件,调用第三方工具替换setup.exe的图标的想法。
经过一番搜索,发现 ResourceHacker 既可以支持界面操作,也可以支持命令行操作。仔细阅读相关说明后,得出如下事件命令行:
需要注意的是,程序安装包似乎没有VS编译事件,可以新建一个空项目,并填写事件命令行内容。通过右键,将制作安装包项目设置为新建空项目的项目依赖项。
三、写在最后
以上只是VS事件的简单介绍,可以依据项目实际需求,具体调整事件命令行内容。原则上来讲,cmd命令行支持的内容,VS事件命令行也会支持。
特别声明:本文版权归本人以及博客园所有,禁止任何未授权个人以及网站部分或全部使用。
Visual Studio 生成事件这件小事的更多相关文章
- Visual Studio 生成事件命令
Visual Studio在生成项目工程前后,有时我们需要做一些特殊的操作,比如:拷贝生成的dll到指定目标下面等. 结合VS可以添加预先生成事件和后期生成事件,采用命令或bat批处理. 1.Visu ...
- Visual studio 生成事件的使用 、xcopy 实现 dll 复制操作、
IF NOT "$(ConfigurationName)"=="publish" exit /B 0if not exist $(TargetPath)publ ...
- Visual studio 生成后事件说明
在“配置属性->生成事件->生成后事件”属性页中的“命令行”编辑框中输入如下命令: copy "$(ProjectDir)$(IntDir)\$(ProjectName).t ...
- 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)
在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...
- Visual Studio 生成DLL文件
新建一个项目,在菜单栏中选择“项目”/“**属性”选项,该页面中将“输出类型”下拉列表中的选项选择为“类库”,然后重新生成一下该项目,或者在“Visual Studio 2008命令提示”中输入以下命 ...
- 探索Visual Studio生成的.vs文件夹内部结构和作用
这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局.最后打开的选项卡/操作记录/文件文档.某些自定义配 ...
- Visual Studio生成webservice代理类
首先点击 vs菜单栏->工具 ,选择 外部工具, 在弹出的窗口中点击 添加, 然后在“标题”行中输入"WSDL生成代理类", "命令"行中输入" ...
- 探究Visual Studio生成的.vs文件夹内部结构和作用
https://shiyousan.com/post/636441130259624698 在某个契机的引发下,对VS解决方案中自动生成的.vs文件夹产生了兴趣,以前总对这个文件夹不怎么上心,最近正好 ...
- 为Visual Studio安装其他控件(cognex 康耐视)时报错:未能加载文件或程序集 EnvDTE, Version=8.0.0.0
解决办法: 在VS的路径下(一般为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Private ...
随机推荐
- MySQL实现Oracle rank()排序
一.Oracle写法介绍 MySQL5.7版本没有提供类似Oracle的分析函数,比如开窗函数over(...),oracle开窗函数over(...)使用的话一般是和order.partition ...
- 连环清洁工之特殊任务--java资源如何关闭?
小C是一名特殊的黑客,他专门为黑客提供服务,扫除黑客攻击的痕迹,避免被查到为何人攻击. 今天他正兴致勃勃的玩游戏<连环清洁工>,连环清洁工是由iFun4all S.A.制作发行的一款犯罪题 ...
- 使用Consul做leader选举的方案
在分布式集群部署模式下,为了维护数据一致性,通常需要选举出一个leader来进行协调,并且在leader挂掉后能从集群中选举出一个新的leader.选举leader的方案有很多种,对Paxos和Raf ...
- Spring Boot中@ConfigurationProperties注解实现原理源码解析
0. 开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis ...
- vue把链接转二维码
使用qrcodejs2插件 1. 安装qrcodejs2:npm install qrcodejs2 --save 2. 在组件里面引入: import QRCode from 'qrcodejs2' ...
- 如何判断前后端bug
测试工程师不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产品的流程.开发方案.开发人员 ...
- event.stopPropagation()、event.preventDefault()与return false的区别
做小demo时经常用到return false来取消默认事件,但一直不是很懂它和preventDefault()等的区别,今天查了查文档和大神们的博客,在这里对相关知识点做一个总结 首先开门见山,总结 ...
- 【JVM 知识体系框架总结】
JVM 内存分布 线程共享数据区: 方法区->类信息,静态变量 堆->数组对象 线程隔离区 虚拟机栈-> 方法 本地方法栈->本地方法库 native 堆.程序计数器 JVM ...
- idea Error: java: OutOfMemoryError: insufficient memory处理
在更新项目代码或者运行项目时报错 OutOfMemoryError: insufficient memory,解决方式如下: 方式1: 点击file,选择Invalidate Caches 进行清理一 ...
- centos7 远程连接其他服务器redis
在本地远程连接 在终端输入: redis-cli -h 服务器ip地址 -p 端口 -a 密码