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. Axure原型制作规范

    一. 名词定义: Sitemap 导航图 Widgets 组件 Master 库 Label 控件名 Interactions 交互动作 Annotations 注释 Location and siz ...

  2. JS对象继承篇

    JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...

  3. 【原】objc_setAssociatedObject和objc_getAssociatedObject

    本文转载请注明出处--polobymulberry-博客园 两个函数名称中都有associate,意思是关联,这里的关联表示的是一种 从属关系,即有一个关联者和被关联者,我们说NSArray的对象ar ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录

    系列目录 我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先完成了,要不权限是讲不下去了 把我们之前的表更新到EF中去 登录在Account控制器,所以我们要添加Account ...

  5. EF Core 数据库迁移(Migration)

    工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用  Pomelo.EntityFrameworkCore.MySql   源代码地址(https://github. ...

  6. geotrellis使用(二十六)实现海量空间数据的搜索处理查看

    目录 前言 前台实现 后台实现 总结 一.前言        看到这个题目有人肯定会说这有什么可写的,最简单的我只要用文件系统一个个查找.打开就可以实现,再高级一点我可以提取出所有数据的元数据,做个元 ...

  7. git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议

    1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...

  8. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  9. 前端精选文摘:BFC 神奇背后的原理

    BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...

  10. redis成长之路——(三)

    redis连接封装 StackExchange.Redis中有一些常功能是不在database对中,例如发布订阅.获取全部key(本代码中已封装到operation中了)等,而且StackExchan ...