Visual Studio在生成项目工程前后,有时我们需要做一些特殊的操作,比如:拷贝生成的dll到指定目标下面等。

结合VS可以添加预先生成事件和后期生成事件,采用命令或bat批处理。

1、Visual Studio生成事件命令

  • 预先生成事件命令行,示例:

cd $(ProjectDir)\Resource
BuildResource.bat

  • 后期生成事件命令行,示例:

xcopy /r /y $(TargetPath) $(ProjectDir)..\Bin\
xcopy /r /y $(TargetDir)$(TargetName).dll $(ProjectDir)..\Bin\
xcopy /r /y $(TargetPath) $(ProjectDir)..\Release\
xcopy /r /y $(TargetDir)$(TargetName).dll $(ProjectDir)..\Release\
xcopy /r /y $(ProjectDir)Resource\zh-CN\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin\zh-CN\
xcopy /r /y $(ProjectDir)Resource\en-US\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin\en-US\
xcopy /r /y $(ProjectDir)Resource\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin

  • 对编译出的.dll,.lib,.pdb等文件进行复制copy并更改扩展名为.bytes

copy "$(TargetDir)$(ProjectName).*" "$(SolutionDir)\otherDir\$(ProjectName).*.bytes"

  • xcopy "TargetDir" "SolutionDir"

示例:
xcopy "$(TargetDir)\*.dll" "$(ProjectDir)..\Lib\*.dll" /D /F /K /R /Y
   在VS的项目属性“生成事件”标签页中添加“生成后事件命令行”, copy $(TargetDir) "D:\Program Files\Lib"
这样编译成功后会将生成的文件拷贝到D:\Program Files\Lib
注意:
如果项目无任何改动,“生成”是不会编译的,所以当运行生成后事件选中“生成更新项目输出时”,
 不会被执行,但“重新生成”会无条件的输出,并触发事件

2、部分宏列表宏说明

$(ProjectDir) 项目的目录(定义为驱动器 + 路径);包括尾随反斜杠“\”。

$(ProjectPath) 项目的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(ProjectName) 项目的基名称。

$(ProjectFileName) 项目的文件名称(定义为基名称 + 文件扩展名)。

$(ProjectExt) 项目的文件扩展名。 文件扩展名之前包括“.”。

$(SolutionDir) 解决方案的目录(定义为驱动器 + 路径);包括尾随反斜杠“\”。

$(SolutionPath) 解决方案的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(SolutionName) 解决方案的基名称。

$(SolutionFileName) 解决方案的文件名称(定义为基名称 + 文件扩展名)。

$(SolutionExt) 解决方案的文件扩展名。 文件扩展名之前包括“.”。

$(TargetDir) 生成的主输出文件的目录(定义为驱动器 + 路径);包括尾随反斜杠 “\”。

$(TargetPath) 生成的主输出文件的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(TargetName) 生成的主输出文件的基名称。 $(TargetFileName) 生成的主输出文件的文件名称(定义为基名称 + 文件扩展名)。

$(TargetExt) 生成的主输出文件的文件扩展名。 文件扩展名之前包括“.”。

$(Configuration) 当前项目配置的名称(例如“调试”)。

$(Platform) 当前项目平台的名称(例如“Win32”)。

$(RootNameSpace) 包含应用程序的命名空间(如果存在)。

$(VSInstallDir) 在其中安装了 Visual Studio 的目录。 $(FrameworkDir) 在其中安装了 .NET Framework 的目录。

$(FrameworkVersion) Visual Studio 使用的.NET framework 版本。 结合 $(FrameworkDir),Visual Studio 使用的.NET Framework 版本的完整路径。 $(FrameworkSDKDir) 在其中安装了 .NET Framework 的目录。 .NET Framework 可能已作为 Visual Studio 的一部分安装或单独安装。

$(WebDeployPath) 从 Web 部署根到项目输出位置的相对路径。 返回与 RelativePath 相同的值。

$(WebDeployRoot) <localhost> 的位置的绝对路径。 例如,c:\inetpub\wwwroot。 $(MSBuildProjectName)  项目的基名称。

$(MSBuildProjectExtension) 项目的文件扩展名。它包括文件扩展名前面的“.”。

$(PlatformName) 当前目标平台的名称(例如,“AnyCPU”)。

$(OutputPath) 生成的主输出文件的路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(OutputType) 项目的输出类型。对于数据库项目,此类型为“database”。

$(DBProduct) 目标数据库项目的 Microsoft SQL Server 版本。此结果将为 SQL Server 2010或 SQL Server 2016。

$(TargetDatabase) 目标数据库的名称。

$(TargetConnectionString) 用于连接到目标数据库当前驻留(或将驻留)的服务器的连接字符串。

Visual Studio 生成事件命令的更多相关文章

  1. Visual Studio 生成事件这件小事

    在上一篇<Visual Studio 调试技巧>中,介绍了一些VS常用的调试操作,今天,聊一聊VS当中一个不太常见,但有时又有妙用的操作——VS生成事件. 一.什么是VS生成事件 简单来说 ...

  2. Visual studio 生成事件的使用 、xcopy 实现 dll 复制操作、

    IF NOT "$(ConfigurationName)"=="publish" exit /B 0if not exist $(TargetPath)publ ...

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

    在做项目是总要把发布后的一些dll拷贝的根网站的bin目录下,为了避免每次都需要手动拷贝可以在 项目的生成事件中写入bat命令,下面的命令只在项目使用的发布配置时执行拷贝, (在生成->配置管理 ...

  4. 使用VS的生成事件命令行指令将生成的exe,dll文件复制到指定文件夹中

    VS预生成事件命令行 和 生成后事件命令行 宏说明 $(ConfigurationName)            当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir)   ...

  5. C# “预先生成事件命令行”和“后期生成事件命令行”

    概述 Visual studio 项目允许在项目属性生成事件一栏中指定预先生成和后期生成事件来实现项目生成与部署的自动化. 实例1: 我自己写了一个调试工具,该工具处于一边开发一边使用过程中.实际工作 ...

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

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

  7. VS2010-使用“预先生成事件命令行”和“后期生成事件命令行”功能

    原文:VS2010-使用"预先生成事件命令行"和"后期生成事件命令行"功能 xcopy /r /y $(TargetPath) $(ProjectDir)..\ ...

  8. Visual Studio 生成项目时脚本执行

    项目属性 - 生成事件 项目生成前:预先生成事件命令行: 项目生成后:后期生成事件命令行:例:copy $(ProjectDir)Reference\sms_cfg.ini $(TargetDir) ...

  9. visual studio使用dos命令在生成项目时复制文件到指定目录

    本人使用软件:vs2015 拷贝“项目1”的 bin目录 下, 项目配置的名称(“Release”,“Debug”)目录下,所有内容到“项目2”输出目录(存在直接覆盖): xcopy $(Soluti ...

随机推荐

  1. 使用mapreduce计算环比的实例

    最近做了一个小的mapreduce程序,主要目的是计算环比值最高的前5名,本来打算使用spark计算,可是本人目前spark还只是简单看了下,因此就先改用mapreduce计算了,今天和大家分享下这个 ...

  2. 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行

    背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...

  3. Spark 运行架构核心总结

    摘要: 1.基本术语 2.运行架构 2.1基本架构 2.2运行流程  2.3相关的UML类图  2.4调度模块: 2.4.1作业调度简介 2.4.2任务调度简介 3.运行模式 3.1 standalo ...

  4. AngularJs之三

    一.angularJs的指令模型ng-model指令 ng-model 指令 绑定 HTML 元素 到应用程序数据. 为应用程序数据提供类型验证(number.email.required).为应用程 ...

  5. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  6. 在网上摘录一段对于IOC的解析,比较直观,大家观摩观摩

    其实IoC非常简单,基本思想就是面向接口的编程,只是老外给起了个名字名充分利用之. 简单的说,传统模式下,如果你要用钱,你需要去银行取,IoC模式下,银联在你家安了一个取款机,你直接找取款机要钱就可以 ...

  7. SVN:Previous operation has not finished; run 'cleanup' if it was interrupted

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html cleanup failed to process the following ...

  8. SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

  9. 【Python五篇慢慢弹(4)】模块异常谈python

    模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...

  10. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...