Aracılığıyla paylaş


System.Deployment.Application Kullanan ClickOnce Uygulamalarından Hata Ayıklama

Visual Studio içinde, ClickOnce dağıtımı bir uygulamanın nasıl güncelleştirileceğini yapılandırmanıza izin verir. Ancak gelişmiş ClickOnce dağıtımı özelliklerini özelleştirmek ve kullanmak isterseniz, System.Deployment.Application tarafından sağlanan dağıtım nesne modeline erişmeniz gerekir. System.Deployment.Application API'lerini gelişmiş görevler için kullanabilirsiniz, örneğin:

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

  • Koşullu, çeşitli uygulama bileşenlerinin isteğe bağlı indirilmesi

  • Uygulamanın içine doğrudan tümleşikleştirilmiş güncelleştirmeler

  • İstemci uygulamanın her zaman güncel olduğunu garanti etme

System.Deployment.Application API'leri sadece bir uygulama ClickOnce teknolojisiyle dağıtıldığında çalışır, bunlardan hata ayıklamanın tek yolu ClickOnce ilişiği kullanarak uygulamayı dağıtıp hata ayıklamaktır. Hata ayıklayıcısını yeterince erken iliştirmek zor olabilir çünkü bu kod hata ayıklayıcısını siz iliştirmeden önce uygulama başlatılıp yürütüldüğünde sık sık çalışır. Güncelleştirmeniz kodu veya isteğe bağlı kodu denetlemeden önce break'ler yerleştirmek (veya stop'lar, Visual Basic projeleri için) bir çözümdür.

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

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

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

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

  4. Arşivlenmiş kaynak konumunu bu yeni çözümün özelliklerine ekleyin. Çözüm Gezgini'nde çözüm düğümüne sağ tıklayın ve sonra Özellikler'i tıklayın. Özellik Sayfaları iletişim kutusunda Kaynak Dosyalarında Hata Ayıkla'yı seçin, sonra arşivlenen kaynak kodu dizinini ekleyin. Aksi durumda, kaynak dosya yolları .pdb dosyası içinde kaydedildiği için hata ayıklayıcı güncel olmayan kaynak dosyalarını bulacaktır. Hata ayıklayıcı güncel olmayan kaynak dosyalarını kullanırsa, kaynağın eşleşmediğini bildiren bir ileti görürsünüz.

  5. Hata ayıklayıcısının .pdb dosyalarını bulabileceğinden emin olun. Uygulama ile dağıttıysanız, hata ayıklayıcı bunları otomatik olarak bulur. Her zaman yanındaki söz konusu ilk derlemeye bakar. Aksi durumda, arşiv yolunu Symbol file (.pdb) locations'a (Simge dosyası (.pdb) konumları) eklemeniz gerekir. (Bu seçeneğe erişmek için; Araçlar menüsünden, Seçenekler'i tıklayın, sonra Debugging (Hata Ayıklama) düğümünü açın ve Simgeler'i tıklayın.

  6. CheckForUpdate ve Download/Update yöntem çağrıları arasında ne gerçekleştiğini tespit edin.

    Ö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. Sürüm 2 için bir güncelleştirmeyi indirirken hata ayıklayıcısını sürüm 1 uygulamasına iliştirin. Ya da, System.Diagnostics.Debugger.Break yöntemini veya Visual Basic'te basitçe Stop'u kullanabilirsiniz. Tabii ki, üretim kodunda bu yöntem çağrılarını bırakmamanız gerekir.

    Örneğin, Windows Forms uygulaması geliştirdiğinizi varsayalım ve bu yöntem için güncelleştirme mantığıyla birlikte olay işleyicisine sahipsiniz. Bundan hata ayıklamak için basitçe düğmeye basılmadan önce iliştirin, sonra bir kesme noktası (breakpoint) ayarlayın. (Uygun arşivlenmiş dosyayı açtığınızdan ve kesme noktasını burada ayarladığınızdan emin olun.)

System.Deployment.Application API'lerini çağırmak için yalnızca uygulama dağıtıldığında IsNetworkDeployed özelliğini kullanın. API'ler Visual Studio içinde hata ayıklanırken çağrılmamalıdır.

Ayrıca bkz.

Başvuru

System.Deployment.Application