2011-12-09 38 views
1

我有一個命令行應用程序,它使用通常的Properties.Settings.blabla屬性從app.config文件中讀取一些設置。當exe被用作dll時,是否可以訪問app.config文件?

此應用程序也用作dll。

當我將它用作dll時,它忽略了我放入目錄中的任何foo.exe.config。它不會像我期望的那樣在使用訪問配置文件的方法時拋出異常,但它也不會使用配置文件。

有沒有辦法讓一個正在被用作dll的exe消耗自己的設置文件,並且在使用exe時仍然使用app.config文件?我不想更改消費者代碼,並且我希望儘可能少地影響exe代碼。

我見過使用ConfigurationManager.OpenMappedExeConfiguration方法或OpenExeConfiguration的解決方案,是在exe代碼中使用這些方法的解決方案嗎?這樣它會一直尋找配置文件,無論它是否被用作DLL或EXE?

回答

1

如果你想這樣做,你需要特別從該文件中讀取。 .NET可執行文件讀取它自己的app.config文件。庫代碼總是從正在執行的應用程序的app.config文件中讀取......偶數庫代碼恰好已被編譯爲擴展名爲.exe的文件。

編輯爲重點/澄清 當我說話的app.config的,我當然說的是適當更名爲[program.exe.config]文件。

+0

我使用.dll目前調用配置文件的名稱是jobs.config,但我們已經創建了一個WorkerAgent類,它繼承了諸如System.Configuration.ConfigurationSettings之類的東西,您是否嘗試過查看.config文件與運行時的.dll/console應用程序名稱相同,它不會查看app.config – MethodMan

+0

因此,讓我們使用一個示例來更清楚地說明問題。假設我有一個名爲myapp的應用程序和一個名爲mylib的庫。 mylib是一個exe文件(可以自己執行),但被myapp引用。 mylib使用通常的Properties.Settings.blabla從配置文件讀取。 如果在myapp執行過程中調用了mylib中的一個方法,該方法使用Properties.Settings.blabla,它將從哪裏讀取? myapp.exe.config或mylib.exe.config?從你的回答中,我認爲它會從myapp.exe.config重新讀取,對吧?如果那個環境不存在呢? – Juancentro

+0

@Juancentro你的假設是正確的;因爲在這種情況下,'myapp.exe'是當前正在執行的程序,配置將從'myapp.exe.config'中讀取。我不知道如果因爲缺少適當的設置配置而會發生什麼情況;我期望有一個與缺失配置有關的異常,或者加載默認值(無論如何可能導致異常的零或空值) –

相關問題