Yarattığım tüm uygulamalarda kullandığım yardımcı bir projem var. Bazı uzatma yöntemleri ve bir sürü genel yardımcı sınıf, kontrol vb. İçerir. Yardımcı projeyi zaman zaman güncellerim / genişletirim. Bunlar genellikle küçük ve ilgisiz projelerdir ve hepsinde çalışan tek kişi benim.
Kullanmak için iki yaklaşım denedim
- kullandığım her projeye .cs dosyalarını doğrudan (bağlantı olarak ekle) ekleyin
- .dll olarak derleyin ve başvuru olarak ekleyin
Bu yaklaşımların bazı faydalarını ve sakıncalarını görüyorum.
İlki:
- daha basittir, çünkü yardımcı sınıflar exe dosyasına derlenir, bu yüzden genellikle çok iyi çalışacak sadece tek bir .exe dosyası sağlayabilirim. Bağlantı olarak eklediğim için, yardımcı kullanan herhangi bir proje oluşturduğumda, yardımcı dosyaların en son sürüm olacağından emin olabilirim.
- Daha da basit, çünkü dosyaları ayırabilirim, böylece .NET 4.0 üzerinde çalışan uzantı yöntemlerim, .NET 4.5 gerektiren programlardan ayrı olarak başvuruda bulunabilir; bu, bir bütün olarak uygulamanın .NET 4.0'da çalışabileceği anlamına gelir
- Kesme noktalarının vb. Tüm avantajlarıyla kodda hata ayıklamaya izin verir.
- 'en iyi uygulama' gibi görünmüyor
İkinci olan:
- doğru yaklaşım gibi görünüyor, ancak:
- Bir nedenden ötürü kullanıcılar için çok daha zor olan ayrı bir .dll dosyası teslim etmemi gerektiriyor (programlarmı .dll olmadan paylaşmaya meyillidirler;
- tek bir .dll dosyasına derlendiğinden, .NET'in en yüksek sürümünü gerektirir - kullanıcılarımın çoğu .NET 4.5'e sahip değil ve yalnızca yardımcı sınıfımın bazı öğeleri bunu gerektiriyor, bu da bazı insanları zorlayabileceğim anlamına geliyor sebepsiz yere sistemlerini güncellemek
- Ayrıca, programlarımdan herhangi birini ne zaman güncellersem, aynı zamanda .dll dosyasını da teslim ettiğimden emin olmalıyım - son sürümden beri değiştirilip değiştirilmediğini bilmeme rağmen (ancak olabilirdi, ama aynı sürümde olabilirdi). Bunu yapmanın basit bir yolunu göremiyorum, montaj versiyonunu takip etmeden ek bir iş. Şimdilik programlarımı güncellediğimde yalnızca güncellenmiş exe veriyorum ve küçük ve düşük profilli tutmayı seviyorum.
Peki, burada .dll dosyasını kullanmanın asıl yararı nedir? Lütfen, tüm uygulamaların ve yardımcı dosyaların kodunu düzenleyen tek kişi olduğumu unutmayın.
Ayrıca, açıklığa kavuşturmak için - uygulamalar genellikle çok azdır, oysa yardımcı sınıflarda yer alan kod hepsine tamamen geneldir (bazı basit dize karşılaştırmaları, yollar veya XML işlemleri vb.)
Aslında, birisi beni şimdi üçüncü bir seçenek olduğunu anlamamı sağladı. Ayrı bir projede yardımcı kodum olduğu için, bu projeyi ayrı ayrı uygulamalarımın çözümlerine ekleyebilirim - bu da tek bir dosya için 'bağlantı olarak ekle' gibi çalışır, ancak yalnızca tek bir proje eklerim ... Doc Brown tarafından fark edildiği gibi, bu aslında .dll projeye yine de eklenmesi gerekeceği anlamına gelir ...
Yine de dll dosyalarını kullanmama lehinde olan bir başka şey de yardımcı sınıf boyunca aktif olarak hata ayıklama yeteneği ...