热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#学习教程:如何更改app.config的位置分享

如何更改app.config的位置我想更改应用程序查找app.config文件的位置。我知道我可以使用ConfigurationManager.OpenExeConfigurati

如何更改app.config的位置

我想更改应用程序查找app.config文件的位置。

我知道我可以使用ConfigurationManager.OpenExeConfiguration()来访问任意配置文件 – 但是,当.Net Framework读取配置文件(例如,对于ConnectionStrings或EventSources)时,它将查看默认位置。 我想实际更改整个.Net Framework的位置(当然,对于我的应用程序)。

我也知道我可以使用AppDomainSetup来更改app.config的位置以获得新的AppDomain。 但是,这不适用于应用程序的主AppDomain。

我也知道我可以覆盖函数Main()并创建一个新的AppDomain,并在新的AppDomain中运行我的应用程序。 但是,这有其他副作用 – 例如,Assembly.GetEntryAssembly()将返回空引用。

鉴于.Net中其他所有工作方式,我希望有一些方法来配置我的应用程序的启动环境 – 通过应用程序清单,或者其他一些 – 但我一直无法在这个方向找到一丝希望。

任何指针都会有所帮助。

大卫穆林

我使用该方法从Main()启动另一个AppDomain,指定配置文件的“新”位置。

GetEntryAssembly()没有问题; 当从非托管代码调用时它只返回null – 或者至少它不适合我,因为我使用ExecuteAssembly()来创建/运行第二个AppDomain,就像这样:

int Main(string[] args) { string currentExecutable = Assembly.GetExecutingAssembly().Location; bool inChild = false; List xargs = new List(); foreach (string arg in xargs) { if (arg.Equals("-child")) { inChild = true; } /* Parse other command line arguments */ else { xargs.Add(arg); } } if (!inChild) { AppDomainSetup info = new AppDomainSetup(); info.COnfigurationFile= /* Path to desired App.Config File */; Evidence evidence = AppDomain.CurrentDomain.Evidence; AppDomain domain = AppDomain.CreateDomain(friendlyName, evidence, info); xargs.Add("-child"); // Prevent recursion return domain.ExecuteAssembly(currentExecutable, evidence, xargs.ToArray()); } // Execute actual Main-Code, we are in the child domain with the custom app.config return 0; } 

请注意,我们正在有效地重新运行EXE,就像AppDomain和不同的配置一样。 还要注意,你需要有一些“魔法”选项,以防止这种情况无休止地进行。

我用更大(真实)的代码块来制作它,所以它可能无法正常工作,但应该说明这个概念。

我不确定您为什么要更改配置文件的位置 – 也许可以有不同的方法来解决您的实际问题。 我有一个要求,我希望在相关的应用程序之间共享配置文件 – 我选择使用自己的xml文件,因为它给了我完全控制架构的额外好处。

在您的情况下,可以使用configSource属性将配置文件的各个部分外部化为单独的文件。 请参阅“使用外部配置文件”下的“检查连接字符串部分”。 也许,这可能会对你有所帮助。

 var cOnfigPath= YOUR_PATH; if (!Directory.Exists(ProductFolder)) { Directory.CreateDirectory(ProductFolder); } if (!File.Exists(configPath)) { File.WriteAllText(configPath, Resources.App); } var map = new ExeConfigurationFileMap { ExeCOnfigFilename= configPath, LocalUserCOnfigFilename= configPath, RoamingUserCOnfigFilename= configPath }; Configuration cOnfig= ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 

然后根据需要使用config成员。

另一种方法是将配置文件保留为可执行文件,并将相关的可更改部分移动到外部xml文件,这些文件可以位于您选择的任何位置。

如果以只读容量使用配置文件,则可以使用XML Inlcude将相关块添加到不同位置的XML文件中。 如果您尝试使用Configuration.Save方法将值直接写回app.config,则此方法无效。

的app.config:

上述就是C#学习教程:如何更改app.config的位置分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记

           


推荐阅读
  • C#爬虫Fiddler插件开发自动生成代码
    哈喽^_^一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 本文提供了详细的指导,帮助开发者了解如何使用PHP插件进行网站内容的翻译,特别是针对WordPress插件和主题的汉化及多语言支持。 ... [详细]
  • Linux环境下的PHP7安装与配置指南
    本文详细介绍了如何在Linux操作系统中安装和配置PHP7,包括检查当前PHP版本、升级PHP以及配置MySQL支持等步骤,适合后端开发者参考。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 优化Nginx中PHP-FPM模块配置以提升性能
    通过调整Nginx与PHP-FPM之间的配置,可以显著提高Web服务器处理PHP请求的速度和效率。本文将详细介绍如何针对不同的应用场景优化PHP-FPM的各项关键参数。 ... [详细]
  • 深入解析线程池的工作原理与实际应用
    本文详细探讨了线程池的核心概念、工作原理及其在实际开发中的应用,包括不同类型的线程池创建方式及其适用场景。 ... [详细]
  • Cortex-M3处理器核心解析
    本文详细介绍了Cortex-M3处理器的常见术语及其核心特点,包括其架构、寄存器组、操作模式、中断处理机制、存储器映射、总线接口和存储器保护单元(MPU)。此外,还探讨了Cortex-M3在性能和中断处理方面的优势。 ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
  • 本文详细介绍了如何在不同操作系统中设置 Node.js 的环境变量,包括通过命令行、npm 脚本以及直接在代码中设置的方法。 ... [详细]
  • 深入解析Keras中的ImageDataGenerator参数
    本文详细探讨了Keras库中ImageDataGenerator类的各项参数及其功能,旨在帮助读者更好地理解和应用数据增强技术,提高模型训练效果。 ... [详细]
author-avatar
天佑土土土
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有