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