2014-09-02 113 views
1

嗯,這個問題與其他標題略有不同的人有點不同。C#DLL配置文件不存在

我將一個配置文件添加到我的DLL中,該DLL將從網站和控制檯應用程序中使用。 我從我的web應用程序測試DLL。

當我構建DLL時,我可以在bin\debug文件夾中看到我的MyApp.dll.config

然而,當我嘗試從DLL這種方式讀取設置:

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); 

文件未找到。 我知道這與應用程序正在執行的位置有關,因爲Assembly.GetExecutingAssembly().Location返回Framework\v4.0.30319\Temporary ASP.NET Files\root\...中的路徑,而AppDomain.CurrentDomain.BaseDirectory返回另一個完全不同的路徑。

那麼,我在做什麼錯了?在配置文件被複制到正在運行應用程序的實際位置時,會有一些配置丟失?

非常感謝您的幫助!

回答

1

在.NET DLL中不能有配置文件。他們將不會被使用。如果您使用項目屬性中的設置選項卡,則會創建它們,但不會被讀取。你需要做的是將來自該配置文件的設置合併到應用程序的配置中(在你的情況下,web.config文件)。

2

通常當你建立一個.dll並且它有一個配置時,該文件與dll一起存放在同一個文件夾中。
唉,當你在另一個項目中使用你的dll時,該項目通常擁有它自己的配置,它優先於dll的配置。

你可以將dll的配置添加到父配置,或者嘗試在代碼中配置你需要的配置,而不是配置中。

+0

嗯,是因爲我正在讀它「手動」 – sabotero 2014-09-02 08:06:20

+0

你正在閱讀它「手動」,但它不在那裏。正如我所說的那樣,還有Thorsten,你必須將它們放在父級的配置中,或者將它們存儲在其他地方。 – Noctis 2014-09-02 08:07:56

+1

說得有點不同:只有應用程序纔會讀取配置文件 - 它只會讀取自己的配置文件。 – 2014-09-02 08:11:20