使用vs编译事件来动态发布配置文件

我们知道开发有很多的环境,一般我们会分为开发环境,测试环境,生产环境.而我们使用的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  将此批处理放到应用程序目录下.

时间: 2024-10-12 07:57:26

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

C#中事件的动态调用实现方法

本文实例讲述了C#动态调用事件的方法.一般来说,传统的思路是,通过Reflection.EventInfo获得事件的信息,然后使用GetRaiseMethod方法获得事件被触发后调用的方法,再使用MethodInfo.Invoke来调用以实现事件的动态调用. 但是很不幸的,Reflection.EventInfo.GetRaiseMethod方法始终返回null.这是因为,C#编译器在编译并处理由event关键字定义的事件时,根本不会去产生有关RaiseMethod的元数据信息,因此GetRai

编译LNMP部署动态网站环境

title: 编译LNMP部署动态网站环境 date: 2018-11-08 13:59:59 tags: Linux 服务配置 categories: Linux 服务配置 copyright: true --- LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Nginx=1.13 --> MySQL=5.6 --> PHP=7.0 无错误版. 安装编译环境 在使用源码包安装服务

编译LAMP部署动态网站环境

title: 编译LAMP部署动态网站环境 date: 2018-11-08 19:08:41 tags: Linux 服务配置 categories: Linux 服务配置 copyright: true --- LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Apache=2.4.33 --> MySQL=5.5 --> PHP=7.0 无错误版. 安装准备环境 ◆安装gcc

4.IDEA使用maven编译工程之后xml等配置文件丢失问题

1.使用maven编译工程之后xml等配置文件丢失的问题: 1.1工程编译之后配置文件不见了,导致工程无法访问: 1.2解决办法:在pom.xml中加入如下配置就搞定了: <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </reso

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

在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中加入预编译指令 #pragma comment (lib,”*.lib”).b) 显式的运行时链接.不使用 *.lib (导入库)文件,使用 Load Library(),GetProcAddress() 函数来加载动态库中的函数.要注意的是在导入库 lib 文件内部包含了其对应 dll 文件的名称

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化 js监听输入框值的即时变化 网上有很多关于 onpropertychange.oninput的讲解,但是他们都不是我想要的,我想要的是动态的监听input,textarea等之前值和之后改变的值,比如像KISSY中的valuechange事件一样,当我在输入框里面开始输入1的时候,那么之前值是undefined,现在的值是1,当我接着输入2时候,那么之前的值是1,现在的值是2.等,

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

之前写过一个的事件管理器,就是普通的先订阅后发布模式.但实际场景中我们需要做到后订阅的也能收到发布的消息.比如我们关注微信公众号,还是能看到历史消息的.类似于qq离线消息,我先发给你,你登录了就能收到了.就是确保订阅该事件的方法都能被执行. var eventManger = { cached: {}, handlers: {}, //类型,绑定事件 addHandler: function (type, handler) { if (typeof handler !== "function&q

Android开发记录19-朋友圈动态发布时间计算

Android开发记录19-朋友圈动态发布时间计算 转载请注明:IT_xiao小巫,http://blog.csdn.net/wwj_748 如果觉得博文不错,请移步到2014年博客之星投票地址:http://vote.blog.csdn.net/blogstar2014/details?username=wwj_748#content 前面的一篇文章给大家关于时间知识点的分享http://blog.csdn.net/wwj_748/article/details/11536421,本篇博客笔者

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

转自:http://dhq.me/build-compile-eunit-release-erlang-application-with-rebar rebar 是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用程序.更强大的是,rebar 提供一种依赖管理机制,它可以使开发者很方便地通过 Git.Hg 等方式重用常见的第三方 Erlang 模块或库. 安装