2008-09-16 67 views
4

在.NET Win控制檯應用程序中,我想訪問App.config文件,其位置與控制檯應用程序二進制文件不同。例如,C:\ bin \ Text.exe如何從C:\ Test.exe.config中獲取其設置?在與二進制文件不同的位置訪問App.config

+0

相關問題:http://stackoverflow.com/questions/6150644/change-default-app-config-at-runtime – CodeNaked 2013-08-13 20:01:20

回答

11
using System.Configuration;  

Configuration config = 
ConfigurationManager.OpenExeConfiguration("C:\Test.exe"); 

然後,您可以訪問應用程序設置,連接字符串等等。這當然假定配置文件格式正確,並且您的應用程序具有對目錄的讀取權限。注意路徑是不是「C:\ Test.exe.config」該方法查找與您指定的文件關聯的配置文件。如果你指定「C:\ Test.exe.config」,它會查找「C:\ Test.exe.config.config」有點跛腳,但我可以理解。

參考這裏:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openexeconfiguration.aspx

+1

有一個問題用這種方法是將文件「C:\將Test.exe」必須存在,即使它不是有效的可執行文件。 – 2008-10-06 14:47:26

5

使用以下(請記住,包括System.Configuration組裝)

ConfigurationManager.OpenExeConfiguration(exePath) 
2

您可以通過創建一個新的應用程序域設置:

AppDomainSetup domainSetup = new AppDomainSetup(); 
domainSetup.ConfigurationFile = fileLocation; 
AppDomain add = AppDomain.CreateDomain("myNewAppDomain", securityInfo, domainSetup); 
6

看樣子,你可以使用AppDomain.SetData方法來實現這一目標。該文檔指出:

您不能使用此方法插入或修改系統條目。

無論如何,這樣做似乎工作。 AppDomain.GetData方法的文檔列出了可用的系統條目,感興趣的是"APP_CONFIG_FILE"條目。

如果我們在使用任何應用程序設置之前設置了"APP_CONFIG_FILE",我們可以修改從哪裏加載app.config。例如:

public class Program 
{ 
    public static void Main() 
    { 
     AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Temp\test.config"); 
     //... 
    } 
} 

我發現這個解決方案記錄在this blog和更完整的答案(一個相關的問題),可以發現here

相關問題