是否可以在运行时切换.NET应用程序的应用程序配置文件?默认情况下,.NET应用程序的配置文件名为“exe-filename”.config。我想知道是否可以动态指定应用程序的配置。例如,构建的应用程序是“foo.exe”。在运行时,配置文件是“foo.exe.config”。是否可以让它接受命令行参数以使用其他配置文件。因此,应用程序可以使用下面的其他配置。foo.exe/config:bar.configbar.config用作foo.exe.config的配置文件。如果您只需要替换AppSettings部分,上述所有工作都很好。如果您必须使用不同的配置文件(所有部分)运行,您可能需要考虑使用主机启动应用程序,为主应用程序创建一个应用程序域,并根据您传入的参数设置不同的配置文件。这是适合我的代码:AppDomainSetupsetup=newAppDomainSetup();setup.ApplicationBase="file://"+System.Environment.CurrentDirectory;setup.DisallowBindingRedirects=true;setup.DisallowCodeDownload=true;if(args.Length!=0&&args[0].Equals("-test")){setup.ConfigurationFile="PATH_TO_YOUR_TEST_CONFIG_FILE";}else{setup.ConfigurationFile="PATH_TO_YOUR_LIVE_CONFIG_FILE";}AppDomaindomain=AppDomain.CreateDomain("FRIENDLY_NAME",null,setup);domain.ExecuteAssembly("YourMainApp.exe");来自MSDN的代码staticvoidDisplayMappedExeConfigurationFileSections(){//获取应用程序配置文件路径。stringexeFilePath=System.IO.Path.Combine(Environment.CurrentDirectory,"ConfigurationManager.exe.config");//这里!!!//映射到应用程序配置文件。ExeConfigurationFileMapconfigFile=newExeConfigurationFileMap();configFile.ExeConfigFilename=exeFilePath;配置config=ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);//显示配置文件部分。ConfigurationSectionCollectionsections=config.Sections;控制台.WriteLine();Console.WriteLine("machine.config中的部分:");//循环获取部分machine.config.foreach(ConfigurationSectionsectioninsections){stringname=section.SectionInformation.Name;Console.WriteLine("姓名:{0}",name);从HowtouseConfiguration.GetSection()withConfigurationManager。OpenMappedExeConfiguration()ExeConfigurationFileMapfileMap=newExeConfigurationFileMap();fileMap.ExeConfigFilename=@"C:InetpubTestConfigDev.config";配置config=ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);AppSettingsSectionSettingSection=(AppSettingsSection.Gettingconfig)");stringConfigVersion=section.Settings["ConfigVersion"].Value;是的,需要用到ExeConfigurationFileMap以上是C#学习教程:Isitpossibletoswitchapplicationconfigurationfilesfor.NET运行时的应用程序?分享如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
