当前位置: 首页 > 编程语言 > C#

将app.config文件重定位到自定义路径Share

时间:2023-04-11 11:44:47 C#

Relocatetheapp.configfiletoacustompath是否可以将整个App.Config文件重定位到自定义路径?配置文件与exe文件位于同一文件夹中似乎有点奇怪,Windows的新appprocah将所有程序设置保存在c:\ProgramData和所有目录中。我们的另一个要求是以编程方式指定在哪里可以找到app.config文件。这样做的原因是我们从相同的exe生成不同的服务实例,并希望将每个服务的app.config存储在c:\ProgramData\下该服务的设置文件夹中。每个AppDomain都有/可以有自己的配置文件。CLR宿主默认创建的AppDomain使用programname.exe.config;如果您想提供自己的配置文件,请创建一个单独的AppDomain。示例://获取程序集字符串的名称exeAssembly=Assembly.GetEntryAssembly().FullName;//setup-在那里你把配置文件的路径AppDomainSetupsetup=newAppDomainSetup();setup.ApplicationBase=System.Environment.CurrentDirectory;setup.ConfigurationFile="";//创建应用域AppDomainappDomain=AppDomain.CreateDomain("MyAppDomain",null,setup);//创建用于调用启动方法的代理YourStartupClassproxy=(YourStartupClass)appDomain.CreateInstanceAndUnwrap(exeAssembly,typeof(YourStartupClass).FullName);//调用启动方法——类似于alternativemain()proxy.StartupMethod();//最后,卸载域AppDomain.Unload(appDomain);希望有帮助。如果它仍然相关,我们将在StackOverflow上使用以下内容,我在另一个问题的另一个建议答案中找到了......AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”,“配置文件路径”)当我们从动态链接库。当我们遇到配置问题时,我们工作正常......这对我有用......(取自http://msdn.microsoft.com/en-us/library/system.configuration.appsettingssection.aspx)//打开配置系统.Configuration.Configurationconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//更新appconfig文件路径config.AppSettings.File="C:\dev\App.config";//保存配置文件.config.Save(ConfigurationSaveMode.Modified);//强制重新加载已更改部分的内存。ConfigurationManager.RefreshSection("appSettings");然后当你调用NameValueCollectionsettings=System.Configuration.ConfigurationManager.AppSettings;或任何获取应用程序配置的内容,两者都使用新路径。希望这可以帮助其他人解决同样的问题!我知道这是一个老问题,但对于那些只想将app.config放在与二进制输出构建位置不同的位置的人来说,下面的工作就像微软想要的(所以不需要重新读取和覆盖)文件到磁盘)在运行时,配置文件中的设置将覆盖app.config中的设置(如果存在)。你完成了。示例app.config注意文件="..Configsettings.config"。您可以完全自由地定义您希望用户更改设置的路径。实际配置文件示例在运行时,将端口值设置为1234。有关更多信息,请参阅msdn这是一个老问题,但我遇到了同样的问题,并在反射器中提出了几分钟的hacky解决方法:staticpublicclassConfigHack{staticpublicvoidOverrideAppConfig(stringpath){((AppDomainSetup)typeof(AppDomain).GetField("_FusionStore",BindingFlags.NonPublic|BindingFlags.Instance).GetValue(AppDomain.CurrentDomain)).ConfigurationFile=path;}staticpublicvoidResetConfigManager(){typeof(ConfigurationManager).GetField("s_initState",BindingFlags.Static|BindingFlags.NonPublic).SetValue(null,0);我只在.NET2上使用它,但它在反射器中看起来是一样的。当然我不建议发送这个:PI只将它用于快速内部的东西。如果我误解了您的请求,我很抱歉,但您不能使用ConfigurationManager.OpenExeConfiguration方法(String)根据更改,您可以使用AppDomainSetup.ConfigurationFile属性您可以使用旁观者调用OpenExeConfiguration方法。如果你真的想重新定位你的配置文件,你将不得不创建你自己的应用程序域。在设置应用程序域的过程中,您可以指定配置文件的位置。顺便说一句,.NET配置文件不是用来配置的,至少不是那种用户可以修改的文件:它们不像INI文件或注册表。如果您希望灵活性来自您的配置,最好将其单独存储。MSDN可能会帮助...该组件简化了组件程序集的维护。如果一个或多个应用程序使用的程序集的配置文件位于众所周知的位置,则使用该程序集的应用程序的配置文件可以使用此元素来包含程序集配置文件,而不是直接包含配置信息。在维护组件程序集时,更新公共配置文件将为使用该程序集的所有应用程序提供更新的配置信息。以上就是C#学习教程:将app.config文件重定位到自定义路径。大家有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: