Aracılığıyla paylaş


System.Deployment.Application kullanan ClickOnce uygulamalarında hata ayıklama

Visual Studio'da ClickOnce dağıtımı, bir uygulamanın nasıl güncelleştirileceklerini yapılandırmanıza olanak tanır. Ancak, gelişmiş ClickOnce dağıtım özelliklerini kullanmak ve özelleştirmek istiyorsanız, tarafından System.Deployment.Applicationsağlanan dağıtım nesnesi modeline erişmeniz gerekir. API'leri System.Deployment.Application aşağıdaki gibi gelişmiş görevler için kullanabilirsiniz:

  • Uygulamanızda "Şimdi Güncelleştir" seçeneği oluşturma

  • Çeşitli uygulama bileşenlerinin koşullu, isteğe bağlı indirmeleri

  • Doğrudan uygulamaya entegre edilmiş güncellemeler

  • İstemci uygulamasının her zaman up-to-date olduğunu garanti etme

    API'ler System.Deployment.Application yalnızca bir uygulama ClickOnce teknolojisiyle dağıtıldığında çalıştığından, hata ayıklamanın tek yolu uygulamayı ClickOnce kullanarak dağıtmak, buna iliştirmek ve sonra hata ayıklamaktır. Hata ayıklayıcıyı eklemeden önce bu kod genellikle uygulama başlatıldığında ve yürütülürken çalıştığından, hata ayıklayıcıyı yeterince erken eklemek zor olabilir. Çözüm, güncelleştirme denetim kodunuz veya isteğe bağlı kodunuz öncesinde kesmeler (veya Visual Basic projeleri için duraklar) yerleştirmektir.

    Önerilen hata ayıklama tekniği aşağıdaki gibidir:

Uyarı

ApplicationDeployment Ad alanı içindeki System.Deployment.Application sınıf ve API'ler .NET Core ve .NET 5 ve sonraki sürümlerde desteklenmez. .NET 7'de, uygulama dağıtım özelliklerine erişmek için yeni bir yöntem desteklenir. Daha fazla bilgi için bkz. .NET'te ClickOnce dağıtım özelliklerine erişme. .NET 7, ApplicationDeployment yöntemlerinin eşdeğerini desteklemez.

  1. Başlamadan önce sembol (.pdb) dosyalarının ve kaynak dosyalarının arşivlenmiş olduğundan emin olun.

  2. Uygulamanın 1. sürümünü dağıtın.

  3. Yeni bir boş çözüm oluşturun. Dosyamenüsünden Yeni'yi ve ardından Proje'yi seçin. Yeni Proje iletişim kutusunda Diğer Proje Türleri düğümünü açın ve Visual Studio Çözümleri klasörünü seçin. Şablonlar bölmesinde Boş Çözüm'e tıklayın.

  4. Arşivlenen kaynak konumu bu yeni çözümün özelliklerine ekleyin. Çözüm Gezgini'nde çözüm düğümüne sağ tıklayın ve Özellikler'i seçin. Özellik Sayfaları iletişim kutusunda Kaynak Dosyalarda Hata Ayıkla'yı seçin ve arşivlenen kaynak kodun dizinini ekleyin. Aksi takdirde, kaynak dosya yolları .pdb dosyasına kaydedildiğinden hata ayıklayıcı güncel olmayan kaynak dosyaları bulur. Hata ayıklayıcı güncel olmayan kaynak dosyaları kullanıyorsa, kaynağın eşleşmediğini belirten bir ileti görürsünüz.

  5. Hata ayıklayıcının .pdb dosyalarını bulabileceğinden emin olun. Dosyaları uygulamanızla dağıttıysanız, hata ayıklayıcı bunları otomatik olarak bulur. Her zaman önce söz konusu derlemenin yanında görünür. Aksi takdirde, arşiv yolunu sembol dosyası konumları listenize eklemeniz gerekir.

    Araçlar (veya Hata Ayıklama) >Seçenekleri bölmesini açın ve Tüm Ayarlar>Hata Ayıklama>Simgeleri> bölümünü genişletin. Simge dosyası (.pdb) konumları listesinde öğe ekleyin, sırayı değiştirin veya kaldırın.

    Araçlar (veya Hata Ayıklama) >Seçenekleri iletişim kutusunu açın ve Hata Ayıklama>Simgeleri bölümünü genişletin. Simge dosyası (.pdb) arama konumları listesinden öğe ekleyin, sırayı değiştirin veya kaldırın.

  6. CheckForUpdate ve Download/Update metot çağrıları arasında ne gerçekleştiğini hata ayıkla.

    Örneğin, güncelleştirme kodu aşağıdaki gibi olabilir:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If My.Application.Deployment.IsNetworkDeployed Then
    
                If (My.Application.Deployment.CheckForUpdate()) Then
    
                    My.Application.Deployment.Update()
                    Application.Restart()
    
                End If
    
            End If
        End Sub
    
  7. Sürüm 2'yi dağıtın.

  8. 2. sürüm için bir güncelleştirme indirirken hata ayıklayıcıyı sürüm 1 uygulamasına eklemeyi deneme. Alternatif olarak, System.Diagnostics.Debugger.Break yöntemini veya Visual Basic'te yalnızca Stop kullanabilirsiniz. Elbette, bu yöntem çağrılarını üretim kodunda bırakmamalısınız.

    Örneğin, bir Windows Forms uygulaması geliştirdiğinizi ve içinde güncelleştirme mantığı olan bu yöntem için bir olay işleyiciniz olduğunu varsayalım. Bunun hatalarını ayıklamak için düğmeye basmadan önce iliştirin, ardından bir kesme noktası ayarlayın (uygun arşivlenmiş dosyayı açtığınızdan ve kesme noktasını orada ayarladığınızdan emin olun).

    IsNetworkDeployed YALNıZCA uygulama dağıtıldığında API'leri çağırmak System.Deployment.Application için özelliğini kullanın; API'ler Visual Studio'da hata ayıklama sırasında çağrılamamalıdır.