Bir .DLL için ve iyi bir nedenle bir .NET yapılandırma dosyası oluşturmak önemsiz değildir. .NET yapılandırma mekanizması, uygulamanın kolay yükseltilmesini / güncellenmesini kolaylaştırmak ve yüklü uygulamaları birbirlerinin yapılandırma dosyalarını ezmeye karşı korumak için yerleşik birçok özelliğe sahiptir.
Bir DLL'in nasıl kullanıldığı ve bir uygulamanın nasıl kullanıldığı arasında büyük bir fark vardır. Aynı kullanıcı için aynı makinede bir uygulamanın birden çok kopyasının yüklü olması olası değildir. Ancak, bazı .NET DLL'leri kullanan 100 farklı uygulama veya kütüphaneye sahip olabilirsiniz.
Bir kullanıcı profili içinde bir uygulamanın farklı kopyalar için ayrı ayrı ayarları izlemek için bir ihtiyaç nadiren var iken, bu kadar çok birbirinize payı yapılandırmasına bir DLL farklı kullanımlar tüm isteyeyim olası. Bu nedenle, "normal" yöntemini kullanarak bir Yapılandırma nesnesi aldığınızda, geri aldığınız nesne, belirli bir montajdan ziyade yürütmekte olduğunuz Uygulama Alanının yapılandırmasına bağlanır.
Uygulama Etki Alanı, kodunuzun içinde bulunduğu derlemeyi yükleyen kök derlemeye bağlıdır. Çoğu durumda bu, .DLL'yi yükleyen ana .EXE'nizin derlemesi olacaktır. Bir uygulama içindeki diğer uygulama alanlarını genişletmek mümkündür, ancak bu uygulama etki alanının kök derlemesinin ne olduğu hakkında açıkça bilgi vermelisiniz.
Tüm bunlar nedeniyle, kitaplığa özgü bir yapılandırma dosyası oluşturma yordamı çok uygun değil. Size herhangi bir montaj bağlı değildir keyfi taşınabilir yapılandırma dosyası oluşturmak için kullanmak istiyorsunuz aynı süreçtir, ancak kendisi için bölüm ve yapılandırma elemanı mekanizmaları vb bir oluştururken bunun şartlarına config, .NET'in XML şemasının yararlanmak isteyen ExeConfigurationFileMap
nesneyi , yapılandırma dosyasının nerede saklanacağını belirlemek için verilere yüklenir ve ardından çağrılır ConfigurationManager
. OpenMappedExeConfiguration
yeni bir Configuration
örneğe açmak için . Bu olacak otomatik yol nesil mekanizması tarafından sunulan versiyon korumasından kesti.
İstatistiksel olarak konuşursak, muhtemelen bu kütüphaneyi şirket içi bir ortamda kullanıyorsunuz ve herhangi bir makine / kullanıcı içinde onu kullanan birden fazla uygulamanız olması pek olası değil. Ama değilse, aklınızda bulundurmanız gereken bir şey var. DLL'niz için başvuruda bulunan uygulamadan bağımsız olarak tek bir genel yapılandırma dosyası kullanırsanız, erişim çakışmaları hakkında endişelenmeniz gerekir. Kitaplığınıza başvuran iki uygulama aynı anda çalışıyorsa, her biri kendi Configuration
nesnesi açıksa, biri değişiklikleri kaydettiğinde, diğer uygulamada veri almaya veya kaydetmeye çalıştığınızda bir istisnaya neden olur.
Bu sorunu aşmanın en güvenli ve en basit yolu, DLL'nizi yükleyen derlemenin kendisi hakkında da bazı bilgiler sağlamasını veya başvuru derlemesinin Uygulama Etki Alanı'nı inceleyerek bunu belirlemektir. DLL'nize başvuran her uygulama için ayrı kullanıcı yapılandırma dosyaları tutmak amacıyla bir tür klasör yapısı oluşturmak için bunu kullanın.
Eğer varsa bazı bunu başvuruda bulunulan yerde olursa olsun DLL için genel ayarları yapmak istiyorsanız, bunun için konumunuzu belirlemek yerine NET daha otomatik bir uygun olanı bulmaktan gerekir. Dosyaya erişimi yönetme konusunda da agresif olmanız gerekir. Mümkün olduğunca önbelleğe almanız gerekir, Configuration
örneğin SADECE yükleme veya kaydetme süresi kadar önce saklayın, hemen önce açın ve hemen sonra atın. Son olarak, kitaplığı kullanan uygulamalardan biri tarafından düzenlenirken dosyayı korumak için bir kilit mekanizmasına ihtiyacınız olacaktır.