博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinForm 生产环境、测试环境 多配置-App.config(分享)
阅读量:4677 次
发布时间:2019-06-09

本文共 2496 字,大约阅读时间需要 8 分钟。

工作中遇到这样的需求:

说有这么一个项目

发布成 Debug 模式的时候, 访问的是 测试服务器。
发布成 Release 模式的时候, 访问的是 正式服务器。

服务器的 域名 / 路径 / 端口 信息,是存储在 app.config 里面的。

 

一开始的时候,端口号是一样的。

对于 Debug 模式, 访问的是  http://局域网的测试服务器:8080

对于 Release 模式, 访问的是  .不可说不可说.com:8080

为了避免 每次生成代码的时候, 都重复地 修改 app.config 。

配置文件里面,就写死了, 是 .不可说不可说.com:8080

然后,在测试计算机上面,修改 C:\Windows\System32\drivers\etc\hosts 文件。

增加一行
局域网的测试服务器IP地址  www.不可说不可说.com

例如:

192.168.1.2      www.不可说不可说.com

运行了一段时间,一切还好。

 

-------------------- 分割线 --------------------

但是不久以后,新的需求来了。
需要有 远程测试的功能。
端口号要不一样了。

对于 Debug 模式, 访问的是  .不可说不可说.com:9090

对于 Release 模式, 访问的是  .不可说不可说.com:8080

一想到每次发布不同的版本,都要去修改 app.config. 就脑袋疼啊。
想到 Web 项目里面, 可以有 Web.config / Web.Debug.config / Web.Release.config 这种模式的。

App.config 可以有么?
网上查询了一下,好像是没有找到。
只有自己想想解决办法了。

查看了一下 项目里面, 有个 “生成事件” 的选项。 暂时想到一个解决办法。
勉强能避免每次发布时,根据 Debug / Release  手动 修改配置文件的情况。

-------------------- 分割线 --------------------

下面是一个简单的测试可行性的例子.

app.config 中只包含一个 字符串信息。
通过 “生成事件”, 动态地 替换掉 app.config

首先是那个 测试的属性.
图片1:

测试的代码.
图片2:

 

项目的结构:

图片3:

项目包含 app.config / app.Debug.config / app.Release.config

app.Debug.config  部分内容

<applicationSettings>

 <A4001_DebugRelease.Properties.Settings>
  <setting name="TestName" serializeAs="String">
   <value>我现在运行在 Debug 模式下</value>
  </setting>
 </A4001_DebugRelease.Properties.Settings>
</applicationSettings>

app.Release.config  部分内容

<applicationSettings>

 <A4001_DebugRelease.Properties.Settings>
  <setting name="TestName" serializeAs="String">
   <value>我现在运行在 Release 模式下</value>
  </setting>
 </A4001_DebugRelease.Properties.Settings>
</applicationSettings>

 

重要的在这里

图片4:

copy $(ProjectDir)app.Debug.config  $(ProjectDir)bin\Debug\$(TargetName).exe.config
copy $(ProjectDir)app.Release.config  $(ProjectDir)bin\Release\$(TargetName).exe.config

作用就是 当编译处理结束后,用 项目中的  app.Debug.config  替换掉  Debug 目录下的 config
用 项目中的  app.Release.config  替换掉  Release 目录下的 config

 

 

测试运行结果

图片5:

图片6:

 

-------------------- 分割线 --------------------

这么折腾一下以后, 可以不用 在  Debug / Release 切换的时候, 修改 app.config 了。

缺点嘛,就是  SVN 服务器上面, 又要多两个文件了 ......

 

 

-------------------- 最后的分割线 --------------------

说话我把测试项目测试好, Debug / Release 都测试好了, 往服务器上传代码的时候,竟然失败了...

难道是代码写得不够好?
再仔细看看那2行

copy $(ProjectDir)app.Debug.config  $(ProjectDir)bin\Debug\$(TargetName).exe.config

copy $(ProjectDir)app.Release.config  $(ProjectDir)bin\Release\$(TargetName).exe.config

每次都要复制2个文件, 也不环保啦。

修改修改

最后修改成下面这个样子:

 

copy $(ProjectDir)app.$(ConfigurationName).config  $(ProjectDir)bin\$(ConfigurationName)\$(TargetName).exe.config

 

恩,看上去顺眼多了...

转载于:https://www.cnblogs.com/skyangell/archive/2013/01/15/2861579.html

你可能感兴趣的文章
Android手机 Fildder真机抓包
查看>>
[stm32] 中断
查看>>
L1-043 阅览室
查看>>
我大学时代的好朋友要结婚了!
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
PAT-1134. Vertex Cover (25)
查看>>
git 命令图解
查看>>
分布式存储系统可靠性系列三:设计模式
查看>>
this关键字的由来及使用
查看>>
两个时间相差多少 .net中的timespan应用
查看>>
递归 换零钱问题——由打靶子问题引申
查看>>
Python-函数基础
查看>>
Extensible Messaging and Presence Protocol (XMPP) 简介
查看>>
Farm Irrigation
查看>>
windows平板的开发和选型
查看>>
无平方因子的数(数论初步) By ACReaper
查看>>
C语言截取字符串
查看>>
如何查自己的账单
查看>>
JAVA8学习笔记(二)----三个预定义接口
查看>>
JDBC连接各种数据库的字符串
查看>>