VS 生成事件

转载自: http://hi.baidu.com/gisince/item/7f0439ee610c94255a2d64b4

今天写了生成事件的处理,如下:

从网上Down了一个例子,运行时提示错误 命令"copy F:\…… F:\……"已退出,返回值为 1;以前没遇到过,从网上查了一下,有个网友也有这个问题,他是把一个程序复制一遍,程序名称变成了“复制 程序名”,就出现了这个问题,而源程序没任何问题;于是我把程序放到F盘的根目录下,运行,程序正常。再一分析,是该程序设置了“生成后事件”,进行了一些复制操作,但不知道和路径有什么问题,仔细一看,我们两个程序的路径中都有空格,难道是空格的原因,把路径中的空格删了,没有任何问题了。

看来VS中生成事件的命令行中的路径不支持空格,以后得注意了。

copy /V "$(TargetDir)$(TargetName).dll" "..\..\..\..\Bin\" 
if Exist $(TargetDir)$(TargetName).pdb copy /V "$(TargetDir)$(TargetName).pdb" "..\..\..\..\Bin\"
if Exist $(TargetDir)$(TargetName).xml copy /V "$(TargetDir)$(TargetName).xml" "..\..\..\..\Bin\"
以上实现在编译生成后将程序集文件拷贝至指定目录,这里为根目录下的一个bin文件夹下

把生成的dll,lib分别拷贝到指定的目录下面:
set MY_TARGET_PATH=..\..\bin
copy /y $(TargetPath) %MY_TARGET_PATH%
copy /y $(TargetDir)$(TargetName).pdb %MY_TARGET_PATH%
set MY_TARGET_PATH=..\Lib
copy /y $(TargetDir)$(TargetName).lib %MY_TARGET_PATH%

在VS的项目属性“生成事件”标签页中有“生成后事件命令行”,可在这里输入比如:
copy $(TargetDir) "C:\Program Files\MailSetup"
这样编译成功后会将生成的文件拷贝到C:\Program Files\MailSetup
这里有两点注意:
1、目标路径要用双引号括起来
2、使用了宏的源不需要,比如可以写成$(TargetDir)*.exe
3、如果项目无任何改动,“生成”是不会编译的,所以当运行生成后事件选中“生成更新项目输出时”,不会被执行,但“重新生成”会无条件的输出,并触发事件

时间: 2024-10-08 23:37:08

VS 生成事件的相关文章

VS2013 生成事件,删除不必要的DLL

解决方案中有一个 Project 是 Windows Service,用来从消息队列中取出事件,发送通知电邮: UI是一个MVC网站,两个Project都引用了同一个类库,这个类库引用了第三方的生成PDF组件 Pechkin: 我每次生成网站时,Pechkin的7个DLL都会自动拷贝到 bin 目录,7个DLL加起来30几兆,而且网站运行时就会报错(修改IIS应用程序池可以解决),害我每次调试网站,都要手动从BIN目录删除这些DLL,很耽误效率, 其实只有 Windows Services 项目

VS"后生成事件" 菜单的使用

网上有很多的文章都在介绍怎样创建一个自己定义的dll文件,以及怎样使用一个dll文件,在此不在赘述.本文主要介绍怎样使用VS2008的"生成后事件"的命令行,将一个dll文件直接复制到项目的debug,或者release文件里. 首先.找到项目属性下的"生成事件"选项例如以下图所看到的: 单击"命令行"右側的三点号.出现了命令行加入窗体,例如以下图所看到的.输入命令"copy /b "$(InputDir)/lib/*.dll

VS中的生成事件

1:为什么需要使用生成事件? 在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情 我们可以利用VS中的项目生成事件属性来进行生成后的DLL复制到指定的目录,或者进去其他的操作,比如打包成.zip的压缩包 2:怎么使用? 一.位置: 项目-->右键-->属性-->生成事件. 预先生成事件就是在编译之前我需要做的事情,后期生成事件就是编译成功之后我要做的事情. 二.地址: 我们看到这样的命令: cop

visual studio C/C++ 编程学习 visual studio 中的生成事件

也许是太方便了,大家在visualstudio中调试代码时,大多习惯了直接点这个小绿箭头,但其实从点这个小绿箭头直到程序开始运行中间经历了多个步骤. 下面我就这段事件在编译过程中遇到的问题,讲一些我的经验. 今天先来说一说 visual studio 中的生成事件 一个事例:有几幅bmp图像数据文件放在 test .vcproj工程文件所在文件夹下面的Data文件夹中.此时,外界调用该工程所生成的DLL文件,且需要取Data文件夹中bmp图像数据文件. 如下图所示: 作为首启动项的CallTes

C#生成事件

xcopy/copy $(TarggetFileName) $(SolutionDir)要复制进去的文件夹 xcopy表示,复制的时候,没有文件夹会自动生成文件夹copy表示,只能复制到指定的文件夹中 文件夹的名字不可有空格 C#生成事件,布布扣,bubuko.com

利用VS的预生成事件获取SVN版本作为项目内部版本号

VS中的Properties下的AssemblyInfo.cs可以设置相应的版本号.下面是AssemblyInfo.cs设置版本的方式. [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] 但是,这个需要每次都设定,而且与SVN上的版本号并不一致,追塑起来不是很方便.所以就想着取SVN上的版本号作为项目的版本号.要得到SVN的版本号,可以在SVN的节眯下,

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

以开源记牌器https://github.com/Epix37/Hearthstone-Deck-Tracker 为例,Hearthstone Deck Tracker项目中的后期生成事件命令行: if "$(ConfigurationName)" == "Release" ( rmdir /S /Q "..\Hearthstone Deck Tracker" mkdir "..\Hearthstone Deck Tracker&quo

VS生成事件

源自:http://www.cnblogs.com/FreeDong/p/3406737.html 如果说磨刀不误砍柴工,同样用好Visual Studio,会大大增加咱.NET程序猿效率.本文说的就是Visual Studio中的生成事件,在解决方案下右击某个项目然后选择 “属性” 打开窗口后即可看到 “生成事件” 选项,这个东西其实并不常用,甚至写几年代码都不会碰它一次,但是我今天需要她了. 我有一个解决方案IdleTest,还有另一个解决方案下的项目需用到IdleTest最新的dll,而原

Visual studio中后期生成事件命令使用

在做项目是总要把发布后的一些dll拷贝的根网站的bin目录下,为了避免每次都需要手动拷贝可以在 项目的生成事件中写入bat命令,下面的命令只在项目使用的发布配置时执行拷贝, (在生成->配置管理器中可以设置各个项目的配置项) @echo off set "str=$(ConfigurationName)" if "%str%"=="Release" (xcopy "$(TargetDir)*.dll" "C:\