2011-02-03 18 views
14

İki projem var:App.config başka bir meclisten nasıl okunur?

  • Konsol projesi (Test.exe)
  • Sınıf Kitaplığı projesi (Test.Data.dll)

Sınıf Kitaplığı projem bir app.config dosyası içeriyor.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="TestEntities" connectionString="metadata=res://*/DBNews.csdl|res://*/DBNews.ssdl|res://*/DBNews.msl;provider=System.Data.SqlClient;provider connection string=&quot;{0}&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Konsol projesinden, Sınıf Kitaplığı'ndan ayarlara erişmek istiyorum, bu yüzden denedim:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll"); 
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer 
// seems to be the wrong assembly. 

Ve:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config"); 
// invalid exePath 

DLL'e nasıl erişebilirim? app.config?

+0

Doğru cevap burada verilmiştir. http://stackoverflow.com/questions/53545/get-the-app-config-of-another-exe çalışır –

cevap

10

DLL, çalışma zamanında kendi app.config dosyasına sahip değil. App.config, yalnızca Entity Framework tasarımcısı içindir.

Yürütme sırasında DLL, Uygulamanın app.config dosyasındaki değerleri okumayı deneyecektir. Varlık Çerçeve bağlantıları için, bu, bağlantı bilgilerini Uygulama'nın app.config dosyasına kopyalamanız gerektiği anlamına gelir.

5

.NET, yürütme topluluğu için yalnızca bir App.config dosyasını yükleyecektir. Uydu düzenekleriniz App.config dosyalarına sahipse, yürütme topluluğu tarafından ayrıştırılmayacaktır.

Uydu aksamının App.config dosyasından ayarları almak için, bu ayarları yürütme aksamının App.config dosyasına taşımalısınız (kopyalamanız gerekir).

İlgili konular