我们知道开发有很多的环境,一般我们会分为开发环境,测试环境,生产环境.而我们使用的vs默认配置就两种:Debug和Release.当然vs支持通过配置管理器来添加,编辑及删除配置.

为此不同的环境和配置我们的应用程序在发布的时候会复制,粘贴各种配置文件,比如数据库的链接字符串等,这样容易出错而且增加精力去维护.

通过使用vs编译事件使配置文件自动化,简单来说就是在我发布或编译的时候如果是开发环境则使用开发环境的配置文件.如果是生产环境则使用生产环境的配置文件.

下面先介绍下编译事件的几个宏说明:

1:$(ProjectDir)  代表当前应用程序的根目录;

2:$(TargetDir)  代表当前应用程序bin目录;

3:$(ConfigurationName) 代表当前配置名称(比如Debug);

我们先设置一个应用场景:假定当前我们就两个环境,debug(开发环境)和release(生产环境)

如果一个应用程序的目录结构是这样的:

  ---root

    --config

      ---debug.config.publish

      ---release.config.publish

      ---setting.config

  ----a.aspx

  ----b.aspx

  ----web.config

其中web.config 里面有段配置文件为:<appSettings file="config\setting.config"></appSettings>;

debug.config.publish为开发环境的数据库连接字符串配置;

release.config.publish为生产环境的数据库连接字符串;

如果我们现在要编译或发布应用程序到生产环境即release,我们的目标是在编译或发布应用程序时将release.config.publish里面配置文件自动拷贝到setting.config里面.

该如何做呢?其实很简单按如下操作:

1: "$(ProjectDir)copyconfigcontent.bat" "$(ProjectDir)config\$(ConfigurationName).config.publish" "$(ProjectDir)config\setting.config"
     将此代码配置到属性---》生成事件----》预生成事件命令行里面即可
2:下载  copyconfigcontent.bat  将此批处理放到应用程序目录下.

使用vs编译事件来动态发布配置文件的更多相关文章

  1. Qt 官方一键动态发布技能

    苦找了好几天动态库,程序可以运行了,结果没有图标还是少了运行库很苦恼,发现Qt 官方有一键动态发布功能感觉自己萌萌的,来自qt吧亲测可用. 集成开发环境 QtCreator 目前生成图形界面程序 ex ...

  2. SparkStreaming动态读取配置文件

    SparkStreaming动态读取配置文件 标签: SparkStreaming HDFS 配置文件 MySql 需求 要实现SparkStreaming在流处理过程中能动态的获取到配置文件的改变 ...

  3. electron-vue 项目启动动态获取配置文件中的后端服务地址

    前言 最近的项目迭代中新增一个需求,需要在electron-vue 项目打包之后,启动exe 可执行程序的时候,动态获取配置文件中的 baseUrl 作为服务端的地址.electron 可以使用 no ...

  4. 在Windows用Rebar来构建,编译,测试,发布Erlang项目

    rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用 ...

  5. QTP鼠标点击和浏览器事件的动态切换

    今天在群里有人问到一个问题,我觉得应该会有很多人会碰到,今天根据自己的思路把这个解决方案整理出来,供自己和大家参考 需求描述: 当输入一个身份证号码的时候,这个号码所对应的数据会被加载到所属的省和市的 ...

  6. C#中的事件-订阅与发布

    我们用一个简单的例子,来说明一下这种消息传递的机制. 有一家三口,妈妈负责做饭,爸爸和孩子负责吃...将这三个人,想象成三个类. 妈妈有一个方法,叫做“做饭”.有一个事件,叫做“开饭”.做完饭后,调用 ...

  7. 修改OpenSSL默认编译出的动态库文件名称

    在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...

  8. 用 rebar 来构建、编译、测试、发布 Erlang 应用程序

    转自:http://dhq.me/build-compile-eunit-release-erlang-application-with-rebar rebar 是一个遵循 Erlang/OTP 原则 ...

  9. 【JavaScript】让事件支持先发布后订阅

    之前写过一个的事件管理器,就是普通的先订阅后发布模式.但实际场景中我们需要做到后订阅的也能收到发布的消息.比如我们关注微信公众号,还是能看到历史消息的.类似于qq离线消息,我先发给你,你登录了就能收到 ...

随机推荐

  1. Android Studio的Terminal配置

    1.首先检查你的setting设置如下图 2.如果是已经ok的,请在你的Android sdk的文件夹目录下找到adb.exe,并配置环境变量 3.重启as,在terminal内输入 -adb hel ...

  2. python环境搭建和打包

    安装: python是有两个版本的一个是2.x,一个是3.x,这两个版本是不兼容的所有请使用前看准版本.下面我们主要说3.5版本. Mac:https://www.python.org/ftp/pyt ...

  3. angularJS+Ionic移动端图片上传的解决办法

    前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有 ...

  4. POJ3228 并查集或二分最大流枚举答案

    忘记写题意了.这题题意:给出每个地点的金矿与金库的数量,再给出边的长度.求取最大可通过边长的最小权值使每个金矿都能运输到金库里. 这题和之前做的两道二分枚举最大流答案的问法很相识,但是这里用最大流速度 ...

  5. React——state

    在React--组件中介绍过组件有两种定义方式:函数形式以及类形式.但是要想在组件中使用state,就必须使用类形式定义组件. 组件中的state是组件私有的,完全由组件自己控制. 使用类形式定义一个 ...

  6. 我们为什么需要SDN?---致新人

    引言:SDN为什么会出现?是什么原因使得学术界提出SDN?我们为什么需要SDN?如果你刚接触SDN方案时,你一定有这样的疑问.而问题的答案是:我们需要拥有更多可编程能力的网络,来支持快速增长的网络业务 ...

  7. ini文件必须要全路径名啊

    弄半天必须要全路径名啊.实在不行用./set.ini也可以 用UNICODE保存ini文件

  8. 团队作业4——第一次项目冲刺(Alpha版本) Day7

    首先和助教及老师表示抱歉,博客确实当时就写了,但是一直不算写好,因为这几天卡住了,预计实现的功能实现不了,进度跟不上,现在也在寻求解决方法. 1.站立式会议: 遇到的困难和收获:在开发的过程中其实遇到 ...

  9. 201521123098 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1. 泛型的本质: 1. 他只是一个编译器现象: 2. 虚拟机里只有普通的类和方法: 3. 运行时没有类型参数 ...

  10. 201521123019 《Java程序设计》第5周学习总结

    1. 本章学习总结 2. 书面作业 一.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. Ans ...