热门标签 | 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#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
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社区 版权所有