Giriş
COM DLL’yi referans alan bir .NET projesi üzerinde çalışırken, projenizin interop DLL’nin doğru sürümünü korumasını sağlamak kritik öneme sahiptir. Bu, uyumluluğun izlenmesi kadar, uygulamanızın güncellemeler ve yamanmalar arasında sorunsuz bir şekilde çalışmasını sağlamak için de gereklidir. Bu blog yazısında, bir .NET ortamında COM DLL referanslarınızın sürümlerini nasıl doğru bir şekilde yöneteceğinizi keşfedecek ve sık karşılaşılan sorunları ele alacağız.
Mevcut Sorun
Sorun, Visual Studio’yu kullanarak bir COM referansı eklediğinizde ortaya çıkar. Varsayılan olarak atanan sürüm, orijinal COM DLL’nin sürümüyle uyumlu olmayabilir. Bu tutarsızlık zorluklara yol açabilir, özellikle yamalar söz konusu olduğunda. Kendinize sormuş olabilirsiniz:
- Oluşturulan interop DLL’nin doğru sürüme sahip olmasını nasıl sağlayabilirim?
- Ana ve alt sürümlerle birlikte bir yapı numarası eklemenin bir yolu var mı?
Hadi çözüme dalalım!
COM Referans Sürümlerini Anlamak
Çözümü ele almadan önce, sürümlemenin nereden geldiğini anlamak önemlidir:
-
Tip Kütüphaneleri (TypeLibs): COM’da sürümleme esas olarak DLL’nin kendisinden ziyade Tip Kütüphanesi ile ilişkilidir. GUID, TypeLib’e atıfta bulunur ve sürüm numaraları, o TypeLib’in VersionMajor ve VersionMinor niteliklerine karşılık gelir.
-
Kayıt Defteri Saklama: Sürüm numaraları, Windows kayıt defterinde şu şekilde saklanır:
HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor
Burada, ana sürüm bir şey olmak zorundadır; alt sürüm ise sıfır olarak ayarlanabilir, bu da en son eşleşen sürümü içe aktaracağı anlamına gelir.
COM DLL Sürümlemenizi Yönetme Adımları
1. DLL Yerine Tip Kütüphanesini Referans Alın
COM DLL’yi doğrudan referans almak yerine, Tip Kütüphanesini referans alın. Bu şekilde, onunla ilişkili sürümlemeyi miras alırsınız. TlbImp
kullanırken, istediğiniz sürümü belirtmek için /asmversion
bayrağını eklediğinizden emin olun.
2. Visual Studio Kullanarak Sürümü Ayarlama
Visual Studio kullanırken sürümü manuel olarak ayarlamak için, .vcproj
dosyasını düzenlemek faydalı olabilir. İşte size yol gösterecek bir örnek:
<ItemGroup>
<COMReference Include="MYDLLLib">
<Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>
3. Kayıt Defteri Ayarlarını Doğrulama
Değişiklik yaptıktan sonra, yeni sürüm numaralarının kayıt defterinde doğru bir şekilde göründüğünü doğrulayın. Bu onay adımı, uygulamanızın güncellemeler arasında doğru bir şekilde çalışmaya devam edeceğinden emin olmanızı sağlar.
4. Sürümleme Desteğinin Sınırlamaları
Maalesef, sürüm sistemi yalnızca ana ve alt sürüm numaralarını destekler ve bir yapı sürümünü yerleştirmez. Bu, TipLib’inize bağlı IDL dosyasıyla belirlenmiştir. Daha ayrıntılı sürüm bilgilerine ihtiyacınız varsa, proje yönetim sisteminizde bir adlandırma kuralı takip etmeyi düşünün.
Sonuç
Bir .NET projesinde referans olarak kullanılan bir COM DLL’den gelen interop DLL’nizin doğru sürümü korumasını sağlamak karmaşık olabilir, ancak yukarıda belirtilen adımları izleyerek daha yönetilebilir bir yaklaşım elde edebilirsiniz. Anahtarın, DLL sürümüne doğrudan odaklanmak yerine TypeLib sürümüne odaklanmak olduğunu ve değişikliklerden sonra kayıt defteri ayarlarını kontrol etmeyi unutmayın.
Bu yöntemleri kullanarak, hem sürüm uyuşmazlığı sıkıntısından kaçınacak hem de güncellemelerinizi sorunsuz bir şekilde gerçekleştirecek ve yamanmalar sırasında uygulamanızın bütünlüğünü koruyacaksınız.
Eğer .NET projelerinde COM DLL sürüm yönetimi hakkında daha fazla sorunuz veya gözleminiz varsa, deneyimlerinizi paylaşmaktan çekinmeyin!