我有一個命令行應用程序,它使用通常的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?
我使用.dll目前調用配置文件的名稱是jobs.config,但我們已經創建了一個WorkerAgent類,它繼承了諸如System.Configuration.ConfigurationSettings之類的東西,您是否嘗試過查看.config文件與運行時的.dll/console應用程序名稱相同,它不會查看app.config – MethodMan
因此,讓我們使用一個示例來更清楚地說明問題。假設我有一個名爲myapp的應用程序和一個名爲mylib的庫。 mylib是一個exe文件(可以自己執行),但被myapp引用。 mylib使用通常的Properties.Settings.blabla從配置文件讀取。 如果在myapp執行過程中調用了mylib中的一個方法,該方法使用Properties.Settings.blabla,它將從哪裏讀取? myapp.exe.config或mylib.exe.config?從你的回答中,我認爲它會從myapp.exe.config重新讀取,對吧?如果那個環境不存在呢? – Juancentro
@Juancentro你的假設是正確的;因爲在這種情況下,'myapp.exe'是當前正在執行的程序,配置將從'myapp.exe.config'中讀取。我不知道如果因爲缺少適當的設置配置而會發生什麼情況;我期望有一個與缺失配置有關的異常,或者加載默認值(無論如何可能導致異常的零或空值) –