博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
磨刀不误砍柴工——VS生成事件
阅读量:7048 次
发布时间:2019-06-28

本文共 1237 字,大约阅读时间需要 4 分钟。

原文:

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

 

2014.10.23更新:记得使用的时候有些目录可能无法写入,以管理员身份运行Visual Studio,并确认写入到的目录的权限问题。

  我有一个解决方案,还有另一个解决方案下的项目需用到IdleTest最新的dll,而原IdleTest下生成的dll由于还有其他项目也在用,故需要将IdleTest解决方案的几个项目生成的dll拷贝到一个新的目录。但是每次修改声称拷贝很麻烦,于是乎就想到了生成事件,百度说生成事件里的命令行是支持dos命令的,我就尝试了在后期生成事件命令行中输入 “copy [源文件全路径] 拷贝到的路径”,果然奏效。

  但是我需要将多个项目生成的dll都拷贝到新的路径下,这样一来这个“[源文件全路径]”就显得很麻烦,没有体现复用性,有木有更好的办法呢?
打开生成事件中的宏如下图所示

  可以看到有一个列表(含有“宏”和“值”列),而“宏”下的“TargetPath”对应的值就是当前项目生成的 dll/exe 文件对应的物理路径,双击该行,在上方的方框中就出现了“$(TargetPath)”,好了不罗嗦了。
  直接在每个项目的生成事件窗口中的“后期生成事件命令行”写下“copy $(TargetPath) E:\projects\MyDemo\JoeyLibs\IdleTest\dlls”,并在下方的 “运行后期生成事件” 选择 “成功生成时” 搞定。

这个功能我还用来干一件事,就是当解决方案下又数十个项目时,我会在生成的最后一个项目(一般是UI或者服务)用到,操作与上文类似,只是命令变成了:

@echo msgbox "[$(ProjectName)]生成已完成!">msg.vbs @msg.vbs@del msg.vbs

 

这样在缓慢的项目生成过程中就可以1024,生成完成又可以马上继续coding。

关于生成事件目前我只用到这两点,如果你有更好的使用场景不妨分享下。

 

========把某项目的dll复制当前项目的某目录的所有子目录中======== 

set MY_TARGET_PATH=$(TargetDir)Interface\All\set MY_SOURCE_PATH=$(SolutionDir)\MyInterface\$(OutDir)MyInterface.dllfor /d %%i in (%MY_TARGET_PATH%*) do ( @echo msgbox "%%i">>msg.vbs@msg.vbs@del msg.vbs copy %MY_SOURCE_PATH% %%i)

 

转载地址:http://thzol.baihongyu.com/

你可能感兴趣的文章
文档对象模型DOM
查看>>
2019北京国际康复及个人健康博览会将在中国国际展览中心举办
查看>>
JVM——类加载机制(一)
查看>>
超清晰的 DNS 原理入门指南 (资源)
查看>>
大神笔记
查看>>
spring cloud构建java b2b2c 电子商务云商平台
查看>>
阿里顶级Java架构师,教你这样手写Spring!
查看>>
android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码
查看>>
CLOB字段在java中操作
查看>>
磁盘清理
查看>>
javascript 判断数据类型 判空
查看>>
matplotlib 中文字体问题
查看>>
protobuf v3测试
查看>>
(1)知识准备【利用objective-c的runtime特性,结合FMDB实现一个轻量级的ORM】
查看>>
Angular js开发的各种坑(持续更新中。。。)
查看>>
Google Apps - Gmail API的通知功能
查看>>
调试java8 函数式
查看>>
Intellij使用心得(二) -- 关于启动Web服务器的几个事
查看>>
linux源代码安装软件
查看>>
2013年4月IT技术行业网站综合影响力排名
查看>>