app.config *.exe.config 和*.vshost.exe.config基础学习

转载:https://www.cnblogs.com/leenice/p/5286451.html

一.问题描述

    在使用config文件来保存一些参数,便于下次启动程序时自动加载上次设置的参数的功能时,

碰到个问题,vs2010下调试运行程序始终无法实现config记录上次参数值,而直接运行exe程序

又是可以的。

    那么vs下直接调试运行和exe运行有什么区别呢?

二.vs调试运行程序

    从vs2005开始,vs调试加入了承载进程(vshost.exe) 引用msdn中有关介绍:

  1. 提高调试性能
  2. 部分信任调试
  3. 设计时表达式计算

(可以设置禁用,参照msdn禁用承载进程

承载进程详解可以参照http://blog.csdn.net/Donjuan/article/details/3849200

三.app.config, *.exe.config 和 *.vshost.exe.config区别

1.app.config

     作为开发时配置参数的文件,可以在vs开发时右键属性设置是否复制到可执行程序同目录下(默认始终不复制)。

在不复制的情况下,编译生成可执行程序时会copy该文件为*.exe.config文件和*.vshost.exe.config文件。

这样的话,在*/bin/debug/ 或者*/bin/release/目录下就不会有app.config文件了,对应的有exe.config和vshost.exe.config。

以后运行exe文件所操作的配置文件(通过System.Configuration对象,System.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None))

直接修改的是exe.config文件。

2.*.exe.config

     vs调试编译时,如果app.config文件有修改,则会重新copy覆盖到exe.config和vshost.exe.config文件中,

否则exe.config不会改变。exe.config文件为程序实际运行时(直接运行.exe程序)直接操作的配置文件。

3.*.vshost.exe.config

    该文件主要是在vs调试运行时起作用,在调试运行程序时(*vshost.exe -> *.exe)先copy *.exe.config覆盖

*.vshost.exe.config,然后运行程序时操作的配置文件为*.vshost.exe.config.在调试程序结束时(*.exe -> *.vshost.exe)

再次copy *.exe.config覆盖*.vshost.exe.config。 所有调试情况下无论怎么修改配置文件,程序退出后都不会修改配置文件(还原了)。

所以在vs调试运行程序时通过配置文件来记录之前的操作无法生效。

 

实际release版本的exe程序时,*.vshost.exe.config 和app.config(如果copy了的话)可以不要的,但是*.exe.config文件必须有。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值