ClickOnce ile COM bileşenleri dağıtma
Eski COM bileşenlerinin dağıtımı geleneksel olarak zor bir görevdi. Bileşenlerin genel olarak kaydedilmesi gerekir ve bu nedenle çakışan uygulamalar arasında istenmeyen yan etkilere neden olabilir. Bileşenler bir uygulamaya tamamen yalıtıldığından veya yan yana uyumlu olduğundan bu durum genellikle .NET Framework uygulamalarında sorun oluşturmaz. Visual Studio, Yalıtılmış COM bileşenlerini Windows işletim sisteminde dağıtmanıza olanak tanır.
ClickOnce, .NET uygulamalarınızı dağıtmak için kolay ve güvenli bir mekanizma sağlar. Ancak, uygulamalarınız eski COM bileşenlerini kullanıyorsa, bunları dağıtmak için ek adımlar uygulamanız gerekir. Bu konu başlığında yalıtılmış COM bileşenlerinin nasıl dağıtılacağı ve yerel bileşenlere (örneğin, Visual Basic 6.0 veya Visual C++) nasıl başvurılacağı açıklanmaktadır.
Yalıtılmış COM bileşenlerini dağıtma hakkında daha fazla bilgi için bkz . ClickOnce ve Kayıtsız COM ile Uygulama Dağıtımlarını Basitleştirme.
Kayıtsız COM
Kayıtsız COM, yalıtılmış COM bileşenlerini dağıtmaya ve etkinleştirmeye yönelik yeni bir teknolojidir. Genellikle sistem kayıt defterine yüklenen tüm bileşenin tür kitaplığını ve kayıt bilgilerini uygulamayla aynı klasörde depolanan bildirim adlı bir XML dosyasına yerleştirerek çalışır.
COM bileşenini yalıtmak için geliştiricinin makinesine kaydedilmesi gerekir, ancak son kullanıcının bilgisayarına kaydedilmesi gerekmez. Bir COM bileşenini yalıtmak için tek yapmanız gereken başvurusunu Yalıtılmış özelliğini True olarak ayarlamaktır. Varsayılan olarak, bu özellik kayıtlı bir COM başvurusu olarak ele alınması gerektiğini belirten False olarak ayarlanır. Bu özellik True ise, derleme zamanında bu bileşen için bir bildirim oluşturulmasına neden olur. Ayrıca, yükleme sırasında ilgili dosyaların uygulama klasörüne kopyalanmasına da neden olur.
Bildirim oluşturucu yalıtılmış bir COM başvurusuyla karşılaştığında, bileşenin CoClass
tür kitaplığındaki tüm girişleri numaralandırır, her girdiyi ilgili kayıt verileriyle eşleştirır ve tür kitaplığı dosyasındaki tüm COM sınıfları için bildirim tanımları oluşturur.
ClickOnce kullanarak kayıtsız COM bileşenlerini dağıtma
ClickOnce dağıtım teknolojisi yalıtılmış COM bileşenlerini dağıtmak için uygundur, çünkü hem ClickOnce hem de kayıtsız COM, dağıtılması için bir bileşenin bildirimi olmasını gerektirir.
Genellikle, bileşenin yazarı bir bildirim sağlamalıdır. Ancak, değilse, Visual Studio bir COM bileşeni için otomatik olarak bildirim oluşturabilecektir. Bildirim oluşturma, ClickOnce Yayımlama işlemi sırasında gerçekleştirilir; daha fazla bilgi için bkz . ClickOnce Uygulamalarını Yayımlama. Bu özellik, Visual Basic 6.0 gibi önceki geliştirme ortamlarında oluşturduğunuz eski bileşenlerden de yararlanmanızı sağlar.
ClickOnce'un COM bileşenlerini dağıtmanın iki yolu vardır:
COM bileşenlerinizi dağıtmak için önyükleyiciyi kullanın; bu, desteklenen tüm platformlarda çalışır.
Yerel bileşen yalıtımı (kayıtsız COM olarak da bilinir) dağıtımı kullanın.
Basit bir COM bileşenini yalıtma ve dağıtma örneği
Kayıtsız COM bileşen dağıtımlarını göstermek için, bu örnek Visual Basic'te Visual Basic 6.0 kullanılarak oluşturulan yalıtılmış yerel COM bileşenine başvuran ve ClickOnce kullanarak dağıtan Windows tabanlı bir uygulama oluşturur.
İlk olarak yerel COM bileşenini oluşturmanız gerekir:
Yerel COM bileşeni oluşturmak için
Visual Basic 6.0'ı kullanarak, Dosya menüsünde Yeni'ye ve ardından Project'e tıklayın.
Yeni Proje iletişim kutusunda Visual Basic düğümünü seçin ve bir ActiveX DLL projesi seçin. Ad kutusuna
VB6Hello
yazın.Not
Kayıtsız COM ile yalnızca ActiveX DLL ve ActiveX Denetimi proje türleri desteklenir; ActiveX EXE ve ActiveX Belgesi proje türleri desteklenmez.
Çözüm Gezgini'da, Class1.vb çift tıklayarak metin düzenleyicisini açın.
Class1.vb aşağıdaki kodu yöntemi için oluşturulan koddan
New
sonra ekleyin:Public Sub SayHello() MsgBox "Message from the VB6Hello COM component" End Sub
Bileşeni oluşturun. Derle menüsünde Çözümü Derle'ye tıklayın.
Not
Kayıtsız COM yalnızca DLL'leri ve COM denetimleri proje türlerini destekler. EXE'leri kayıtsız COM ile kullanamazsınız.
Artık Windows tabanlı bir uygulama oluşturabilir ve buna COM bileşenine bir başvuru ekleyebilirsiniz.
COM bileşeni kullanarak Windows tabanlı bir uygulama oluşturmak için
Visual Basic'i kullanarak, Dosya menüsünden Yeni'ye ve ardından Project'e tıklayın.
Yeni Proje iletişim kutusunda Visual Basic düğümünü ve ardından Windows Uygulaması'nı seçin. Ad kutusuna
RegFreeComDemo
yazın.Çözüm Gezgini'de, proje başvurularını görüntülemek için Tüm Dosyaları Göster düğmesine tıklayın.
Başvurular düğümüne sağ tıklayın ve bağlam menüsünden Başvuru Ekle'yi seçin.
Başvuru Ekle iletişim kutusunda Gözat sekmesine tıklayın, VB6Hello.dll gidin ve seçin.
Başvurular listesinde bir VB6Hello başvurusu görüntülenir.
Araç Kutusu'na gidin, bir Düğme denetimi seçin ve Form1 formuna sürükleyin.
Özellikler penceresinde düğmenin Text özelliğini Hello olarak ayarlayın.
İşleyici kodu eklemek için düğmeye çift tıklayın ve kod dosyasında işleyicinin aşağıdaki gibi okuması için kod ekleyin:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim VbObj As New VB6Hello.Class1 VbObj.SayHello() End Sub
Uygulamayı çalıştırın. Hata Ayıkla menüsünde Hata Ayıklamayı Başlat'a tıklayın.
Daha sonra denetimi yalıtmalısınız. Uygulamanızın kullandığı her COM bileşeni, projenizde COM başvurusu olarak temsil edilir. Bu başvurular, Çözüm Gezgini penceresindeki Başvurular düğümü altında görünür. (Başvuruları doğrudan Proje menüsünde Başvuru Ekle komutu veya bir ActiveX denetimini formunuza sürükleyerek dolaylı olarak.)
Aşağıdaki adımlarda COM bileşenini yalıtma ve yalıtılmış denetimi içeren güncelleştirilmiş uygulamayı yayımlama adımları gösterilmektedir:
COM bileşenini yalıtmak için
Çözüm Gezgini, Başvurular düğümünde VB6Hello başvuruyu seçin.
Özellikler penceresinde, Yalıtılmış özelliğinin değerini False yerine True olarak değiştirin.
Derle menüsünde Çözümü Derle'ye tıklayın.
Artık F5 tuşuna bastığınızda uygulama beklendiği gibi çalışıyor ancak artık kayıtsız COM altında çalışıyor. Bunu kanıtlamak için VB6Hello.dll bileşeninin kaydını kaldırmayı ve RegFreeComDemo1.exe Visual Studio IDE dışında çalıştırmayı deneyin. Düğmeye tıklandığında bu kez çalışmaya devam eder. Uygulama bildirimini geçici olarak yeniden adlandırırsanız, yeniden başarısız olur.
Not
Com bileşeninin kaydını geçici olarak kaldırarak yokluğunun benzetimini yapabilirsiniz. Bir komut istemi açın, yazarak cd /d %windir%\system32
sistem klasörünüze gidin ve yazarak bileşenin regsvr32 /u VB6Hello.dll
kaydını kaldırın. yazarak regsvr32 VB6Hello.dll
yeniden kaydedebilirsiniz.
Son adım, ClickOnce kullanarak uygulamayı yayımlamaktır:
Yalıtılmış COM bileşeniyle uygulama güncelleştirmesi yayımlamak için
Oluştur menüsünde RegFreeComDemo Yayımla'ya tıklayın.
Yayımlama Sihirbazı görüntülenir.
Yayımlama Sihirbazı'nda, yerel bilgisayarın diskinde yayımlanan dosyalara erişebileceğiniz ve dosyaları inceleyebileceğiniz bir konum belirtin.
Uygulamayı yayımlamak için Son'a tıklayın.
Yayımlanan dosyaları incelerseniz sysmon.ocx dosyasının dahil olduğuna dikkat edin. Denetim bu uygulama için tamamen yalıtılmıştır; yani son kullanıcının makinesinde denetimin farklı bir sürümünü kullanan başka bir uygulama varsa, bu uygulamaya müdahale edemez.
Başvuru yerel derlemeleri
Visual Studio, yerel Visual Basic 6.0 veya C++ derlemelerine başvuruları destekler; bu tür başvurular yerel başvurular olarak adlandırılır. Bir başvuruyu yerel olup olmadığını, Dosya Türü özelliğinin Yerel veya ActiveX olarak ayarlandığını doğrulayarak anlayabilirsiniz.
Yerel başvuru eklemek için Başvuru Ekle komutunu kullanın ve bildirime göz atın. Bazı bileşenler bildirimi DLL'nin içine yerleştirir. Bu durumda, DLL'nin kendisini seçmeniz yeterlidir ve bileşenin eklenmiş bir bildirim içerdiğini algılarsa Visual Studio bunu yerel başvuru olarak ekler. Visual Studio, başvuruda bulunılan bileşenle aynı klasörde yer alıyorsa bildirimde listelenen bağımlı dosyaları veya derlemeleri de otomatik olarak ekler.
COM denetim yalıtımı, bildirimleri olmayan COM bileşenlerini dağıtmayı kolaylaştırır. Ancak, bir bileşen bir bildirimle birlikte sağlanırsa bildirime doğrudan başvurabilirsiniz. Aslında, yalıtılmış özelliğini kullanmak yerine bileşenin yazarı tarafından sağlanan bildirimi her zaman mümkün olduğunca kullanmanız gerekir.
Kayıtsız COM bileşeni dağıtımının sınırlamaları
Kayıtsız COM, geleneksel dağıtım tekniklerine göre net avantajlar sağlar.
Her bileşen kayıtsız COM için uygun bir aday değildir. Aşağıdakilerden herhangi biri doğruysa bileşen uygun değildir:
Bileşen işlem dışı bir sunucudur. EXE sunucuları desteklenmez; yalnızca DLL'ler desteklenir.
Bileşen işletim sisteminin bir parçasıdır veya XML, tarayıcı bileşeni veya Microsoft Veri Erişim Bileşenleri (MDAC) gibi bir sistem bileşenidir. Bileşen yazarının yeniden dağıtım ilkesini izlemeniz gerekir; satıcınızla kontrol edin.
Bileşen, Microsoft Office gibi bir uygulamanın parçasıdır. Örneğin, Microsoft Excel Nesne Modelini yalıtmaya çalışmamalısınız. Bu, Office'in bir parçasıdır ve yalnızca tam Office ürününün yüklü olduğu bir bilgisayarda kullanılabilir.
Bileşen, eklenti veya ek bileşen olarak(örneğin, Office eklentisi veya Web tarayıcısında denetim) kullanılmak üzere tasarlanmıştır. Bu tür bileşenler genellikle barındırma ortamı tarafından tanımlanan ve bildirimin kapsamı dışında olan bir tür kayıt şeması gerektirir.
Bileşen, sistem için bir fiziksel veya sanal cihaz( örneğin, yazdırma biriktiricisi için bir cihaz sürücüsü) yönetir.
Bileşen, Veri Erişimi yeniden dağıtılabilir bir bileşendir. Veri uygulamaları genellikle çalıştırılmadan önce ayrı bir Veri Erişimi yeniden dağıtılabilir öğesinin yüklenmesini gerektirir. Microsoft ADO Veri Denetimi, Microsoft OLE DB veya Microsoft Veri Erişim Bileşenleri (MDAC) gibi bileşenleri yalıtmaya çalışmamalısınız. Bunun yerine, uygulamanız MDAC veya SQL Server Express kullanıyorsa bunları önkoşul olarak ayarlamanız gerekir; Bkz . Nasıl yapılır: ClickOnce Uygulaması ile Önkoşulları Yükleme.
Bazı durumlarda, bileşenin geliştiricisinin kayıtsız COM için yeniden tasarlaması mümkün olabilir. Bu mümkün değilse, Önyükleyici'yi kullanarak standart kayıt düzeni aracılığıyla bunlara bağımlı uygulamalar derleyebilir ve yayımlayabilirsiniz. Daha fazla bilgi için bkz . Önyükleyici Paketleri Oluşturma.
COM bileşeni uygulama başına yalnızca bir kez yalıtılabilir. Örneğin, aynı COM bileşenini aynı uygulamanın parçası olan iki farklı Sınıf Kitaplığı projesinden yalıtamazsınız. Bunun yapılması bir derleme uyarısına neden olur ve uygulama çalışma zamanında yüklenemiyor. Bu sorunu önlemek için Microsoft, COM bileşenlerini tek bir sınıf kitaplığında kapsüllemenizi önerir.
Uygulamanın dağıtımı kayıt gerektirmese bile geliştiricinin makinesinde COM kaydının gerekli olduğu çeşitli senaryolar vardır. özelliği,
Isolated
derleme sırasında bildirimi otomatik olarak oluşturmak için COM bileşeninin geliştiricinin makinesine kaydedilmesini gerektirir. Derleme sırasında kendi kendine kaydı çağıran kayıt yakalama özelliği yoktur. Ayrıca, tür kitaplığında açıkça tanımlanmayan sınıflar bildirime yansıtılmaz. Yerel başvuru gibi önceden var olan bir bildirimle COM bileşeni kullanırken, bileşenin geliştirme zamanında kaydedilmesi gerekmeyebilir. Ancak, bileşen bir ActiveX denetimiyse ve bunu Araç Kutusu'na ve Windows Forms tasarımcısına eklemek istiyorsanız kayıt gereklidir.