SORU
27 ŞUBAT 2009, Cuma


C# DLL DOSYASı yapılandırma dosyası

Bir sohbet uygulaması eklemek için çalışıyor.config DLL DOSYASı, ama tüm çabalar sonuçsuz kaldı.

'Putting configuration information in a DLL' Bu bir sorun olmamalı. MusicGenesis göre Yani belli ki bir şeyleri yanlış yapıyorum

Aşağıdaki kodu DLL benim ConnectionString döndürmesi gerekir:

return ConfigurationManager.AppSettings["ConnectionString"];

App anlaşıldı ancak.config benim konsol uygulaması için dosya, gayet iyi çalışıyor.

Herhangi bir fikir?

CEVAP
17 HAZİRAN 2009, ÇARŞAMBA


Önemsiz bir oluşturmak için değil .NET bir yapılandırma dosyası .DLL, ve iyi bir nedenle. .NET yapılandırma mekanizması özellikleri birbirlerinin yapılandırma dosyaları çiğnemesini/app güncelleme yükseltme ve yüklü uygulamaları korumak için kolay kolaylaştırmak için yerleşik bir yeri vardır.

Bir DLL nasıl kullanıldığını ve uygulamanın nasıl kullanılacağı arasında büyük bir fark var. Bir uygulama birden çok kopyasını aynı kullanıcı için aynı makine üzerinde yüklü olması olası değildir. Ama çok iyi 100 farklı uygulamaları ya da kütüphaneleri, bazı kullanmak zorunda kalabilirsiniz .NET DLL.

Nadiren ayarları izlemek için gereken kullanıcı profilinde bir uygulamanın farklı kopyalar için ayrı ayrı var oysaçokbirbirleri ile yapılandırma paylaşmak için bir DLL farklı kullanımları tüm bu olası değil. Bu nedenle, ne zaman sen almak bir Yapılandırma nesne kullanarak "normal" yöntemi, nesneyi geri almak için bağlı yapılandırma dosyasının Uygulama Etki alanı vardır uygulanmasında, yerine belirli bir derleme.

Uygulama Etki alanı kodunuzu aslında hangi Kurul yüklü olan kök derleme bağlıdır. Çoğu durumda bu sizin ana Meclis olacak .Bu kadar yüklü olan EXE,.DLL. Olası bir uygulama içinde diğer uygulama etki alanları hazırlansın, ama açıkça bu uygulama etki alanının kök derleme ne olduğu konusunda bilgi vermeniz gerekir.

Bu nedenle, kütüphane özgü bir yapılandırma dosyası oluşturmak için bu teknik çok uygundur. Herhangi bir özel derleme bağlı değil, ama kendisi için kullanmak istediğiniz keyfi taşınabilir yapılandırma dosyası oluşturmak için kullandığınız aynı süreçtir .NET XML şema, yapılandırma bölümü ve mekanizmaları, vb yapılandırma öğesi. Bu ExeConfigurationFileMap nesne oluşturma, veri yapılandırma dosyasında saklanacağı tanımlamak için yükleme, ve daha sonra ConfigurationManager.*aramayı gerektirirConfiguration yeni bir örneğini açmak için 4*. Busürüm koruması Otomatik yol nesil mekanizması tarafından sunulan kesilmiş.

İstatistiklere göre, muhtemelen bir ortamda bu kitaplığı kullanıyorsanız ve birden çok uygulama herhangi bir makine/kullanıcı içinde kullanmak zorundasın olası değil.Amadeğilse, aklınızda tutmanız gereken bir şey var. Eğer tek bir global config DLL için başvuran uygulaması ne olursa olsun dosya kullanıyorsanız, erişim çatışmalar hakkında endişelenmenize gerek. Eğer iki uygulama referans kütüphane oldu da çalışan aynı anda, her biri kendi Configuration nesne açık, ne zaman bir kaydeder değişiklikleri neden olacak bir durum bir dahaki sefere almak için veya kayıt veri diğer uygulama.

En güvenli ve en basit yolu bu. gerektiren Meclisi olan yükleme DLL de sağlamak bazı bilgi hakkında kendisi veya tespit inceleyerek Uygulama Etki başvuran bir derleme. Bu uygulama her DLL DOSYASı başvurmak için ayrı bir kullanıcı yapılandırma dosyaları tutmak için klasör yapısı bir tür oluşturmak için kullanın.

Eğer varsabelliDLL başvurulan nerede olursa olsun için genel ayarlar olmasını istiyorsanız, bunun için konumunuzu belirlemek gerekir yerine .NET bir uygun bir otomatik olarak dışarı endam. Ayrıca dosyaya erişimi yönetme konusunda agresif olmak gerekir. Mümkün olduğunca önbellek, Configuration örnek yük alır kadar uzun tutmak etrafında veya kaydetmek için, açma hemen önce ve hemen sonra atılması gerekir. Ve son olarak, kütüphaneyi kullanan uygulamalar tarafından düzenlenmekte iken dosyayı korumak için bir kilit mekanizması gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Animation Workshop

    Animation Wo

    8 NİSAN 2010
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009