我们知道开发有很多的环境,一般我们会分为开发环境,测试环境,生产环境.而我们使用的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. javascript基础进阶——执行环境及作用域链

    概念 执行环境 执行环境定义了变量或函数有权访问的其他函数,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象. 变量对象 环境中定义的所有变量和函数都保存在这个对象中. 全局执行环境 全局 ...

  2. Visual Studio2017 远程调试 Remote Debugger

    前言 大家在使用vs打包后的文件部署到服务器后,有时候我们需要对线网的后台进行调试.但是它不像在VS中.这个时候我们该怎么调试呢? 微软想到了这一点,他们在 VS 中给我们提供了一个功能: Remot ...

  3. CSS编码技巧

    前面的话 本文将从DRY.currentColor.inherit和合理使用简写这几方面来详细介绍CSS编码技巧 DRY DRY,即don`t repeat yourself,尽量减少代码重复 在软件 ...

  4. memcache的原理和命中率的总结

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt267 1       Memcache是什么Memcache是danga.c ...

  5. javascript计算啤酒2元一瓶,4个盖换一瓶,2个瓶换一瓶,10元钱最多喝多少瓶

    var n = 0//当前剩下多少瓶加上喝赢了多少瓶 var x = 5//初始多少瓶 var y = 0//除了喝掉的,剩下多少瓶 var z = 0;//总数 var arr = []//定义一个 ...

  6. ELM极限学习机

    极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解神经网络算法.ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),ELM比传统的 ...

  7. NHibernate教程(21)——二级缓存(下)

    本节内容 引入 使用NHibernate二级缓存 启用缓存查询 管理NHibernate二级缓存 结语 引入 这篇我还继续上一篇的话题聊聊NHibernate二级缓存剩下的内容,比如你修改.删除数据时 ...

  8. CCNA基础知识摘录

    cisco设备的启动要点: 1.检测硬件(保存在rom) 2.载入软件(IOS)(保存在Flash) 3.调入配置文件(密码,IP地址,路由协议都保存在此)(此文件保存在NVRAM) 0x2102:正 ...

  9. JS中的运算符和JS中的分支结构

    JS中的运算符 1.算术运算(单目运算符) + .-.*. /. %取余.++自增 .--自减 +:两种作用,链接字符串/加法运算.当+两边全为数字时,进行加法运算:当+两边有任意一边为字符串时,起链 ...

  10. 集美大学网络1413第十一次作业成绩(团队七) -- Alpha冲刺之事后诸葛亮

    题目 团队作业7--Alpha冲刺之事后诸葛亮 团队作业7成绩  团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队角色. 管理.合作 总结 讨论照片 团队成员 角色.贡献 总 ...