Altbilgi içeriğine atla
Iron Academy Logo
C# öğrenin
C# öğrenin

Diğer Kategoriler

.NET WPF Yardımcı Programını Yayınlama ve Dağıtma

[[academy-video-youtube({"vid": "lzGapugz7Jk", "start_time": "0", "title": "Bir .NET WPF Yardımcı Programını Yayınlama ve Dağıtma", "creator": "Tim Corey", "length": "10m 40s"})]]

Küçük bir masaüstü yardımcı program inşa etmek işin sadece yarısıdır. Bilgisayarınıza almak, çabucak başlatabileceğiniz bir yere yerleştirmek ve dağıtımı hafif tutmak, böylece bir daha asla düşünmek zorunda kalmamak diğer yarısıdır. Çok fazla geliştirici, bu adımı fazla mühendislik yapıyor, yalnızca tek bir iş istasyonunda çalışan bir uygulama için yükleyici çerçeveler veya çapraz platform araçları tanıtıyor.

Tim Corey, How to Publish and Deploy a .NET WPF Utility başlıklı videosunda kendi kişisel görüntüleyici uygulamasını nasıl tek yürütülebilir dosya olarak yayımlayıp, bir klasöre kopyalayıp ve kayıt defteri kullanarak Windows sağ tık bağlam menüsüne nasıl entegre edeceğini açıklıyor. Üzerinde yaptığı her kararı, çerçeveye bağımlı mı yoksa kendi başına mı olarak yapılandığından kayıt defteri girdilerine kadar izahat edeceğiz, bu da yardımcı programı herhangi bir klasörden erişilebilir hale getiriyor. Kendiniz için küçük bir araç oluşturduysanız ve en basit dağıtım hikayesini istiyorsanız, bu makale yaklaşımı ortaya koyuyor.

Visual Studio'dan Yayınlama

[1:03 - 1:25] Tim Visual Studio'da projeye sağ tıklayıp Yayınla'yı seçerek başlar. Sihirbaz birkaç hedef sunar (Azure, Docker, ClickOnce), ancak bunların hepsinden geçerek Klasör'ü seçer. Kendi makinenizde yaşayan kişisel bir yardımcı program için, klasör yayımlaması en doğrudan yoldur: herhangi bir dağıtım altyapısı olmadan ihtiyacınız olan yere kopyalayabileceğiniz dosyalar üretir.

Klasör hedefini seçtikten sonra, Tim hemen yayın yapmadan önce ayarlar sayfasına geçer. Varsayılan ayarların çıktısı istense de, çıktı ayarlamaları gerektirir.

Çerçeveye Bağımlı mı Kendi Başına mı

[1:25 - 2:32] İlk ayar dağıtım modudur. .NET SDK veya çalışma zamanı hedef makinede zaten yüklü olduğunu varsayan çerçeveye bağımlı bir yapı, bu uygulama için yaklaşık 200 kilobayt küçük bir çıktı üretir, çünkü mevcut sistemde bulunan paylaşılmış çalışma zamanına dayanır.

Kendi başına bir yapı ise tüm .NET çalışma zamanını çıktıya dahil eder. Bu, .NET yüklü olmayan makinelere taşınabilir hale getirir, ancak boyutu yaklaşık 140 megabayta şişirir. Tim, kullandığı her makinede zaten .NET yüklü olduğu için çerçeveye bağımlı seçiyor. Eğer bir aracı, çalışma zamanı olabilecek olan meslektaşlara veya müşterilere dağıtıyorsanız, kendi başına seçeneği daha güvenlidir, ancak kişisel yardımcı programlar için bu takas nadiren anlamlıdır.

Neden WPF ve MAUI Değil

[2:50 - 4:10] Tim, bu proje için MAUI yerine WPF kullandığına dair aldığı geri bildirimleri ele alıyor. Makul bir sebep, ideolojik değil. Görüntüleyici yalnızca Windows üzerinde çalışmak zorundadır. MAUI ve çapraz platform katmanını tanıtmak, tek platformlu bir araç için herhangi bir fayda sağlamadan yük oluşturur.

Mimari argümanın ötesinde, bir bakım açısı da var. Tim'in orijinal kaynak kodu, yaklaşık yedi yıl dört veya beş makine boyunca minimal değişikliklerle hayatta kalmıştır. Yalnızca çerçeve yükseltmeleri (C# Framework'ten C# 8'ye, ve şimdi C# 10'a) yapıldı. Yardımcı program, her seferinde elinizde olan bir OS güncellemesi olduğunda dikkat gerektiren bir çerçevede inşa edilmiş olsaydı, bu yedi yıl el değmeden çalışır durumda olamazdı. Bakım için gereken süreden daha fazla zaman harcayan bir yardımcı program artık size hiçbir şey sağlamıyor.

Tek Dosya Yayımlama ve PDB Dosyaları

[4:59 - 6:32] Dağıtım modu tamamlandıktan sonra Tim "Tek dosya üret" seçeneğini etkinleştirir ve Windows x64 hedefler. Yayın tamamlanır ve çıktı klasörünü açar, bu klasör iki dosya içerir: .exe ve bir .pdb.

İkinci dosya bir Program Veritabanı dosyasıdır ve bunun rolü anlaşılmaya değerdir. Release modunda derleme yapıldığında, derleyici performans için iç sembolleri optimize eder ve yeniden adlandırır. PDB, bu optimize edilmiş adları orijinal kod tabanınıza geri bağlar, böylece çalışan yürütülebilir dosyaya bir hata ayıklayıcı bağlayabilir ve Debug modunda çalışıyormuş gibi kesme noktaları ayarlayabilirsiniz. Müşterilere hizmet veren bir üretim uygulaması için, dağıtımdan sonra sorunları teşhis edebilmeniz için her sürümle birlikte PDB dosyalarını güvenli bir şekilde saklamalısınız.

Kendiniz için oluşturduğunuz bir araç için Tim, uygulamanın çalışması için PDB'nin gerekli olmadığını belirtiyor. Bunu basitlik için siliyor, ancak kullanıcılara gönderilecek herhangi bir şey için bu alışkanlığı edinmemeleri konusunda izleyicileri uyarıyor. Tek bir .exe, PDB mevcut olmadan kendi başına çalışır.

Not edilmesi gereken bir tuhaflık: framework'e bağımlıdan bağımsıza geçiş yapar ve "tek dosya" seçeneğini etkin tutarsanız, çıktı artık tek bir dosya olmaz. Çalıştırılabilir dosyayla birlikte ek çalışma zaman dosyaları da görünür. Tek dosya seçeneği, yalnızca framework'e bağımlı bir derleme ile eşleştirildiğinde gerçek bir tek dosya üretir.

Aracı Bilgisayarınıza Yerleştirme

[7:17 - 7:52] Tim, çalıştırılabilir dosyayı eline aldıktan sonra kalıcı bir konuma taşır. Kişisel araçları Program Files'dan ayrı tutan ve bulunmasını kolaylaştıran bir gelenek olan özel bir C:\Apps\SimpleImageViewer klasörü kullanır. 2024'ten gelen yürütülebilir dosya, mevcut makinasında hala aynı şekilde çalışıyor, bu da uzun ömürlülük hakkındaki daha önceki noktayı güçlendiriyor: basit bir proje yapısına sahip iyi tanımlanmış bir yardımcı program, donanım değişiklikleri ve işletim sistemi yükseltmelerini modifikasyona gerek kalmadan atlatabilir.

Araçları Sağ Tıklama Menüsüne Ekleme

Son adım, aracı Windows Gezgini'nin içerik menüsüne bağlar. Tim, Windows Kayıt Defteri'ni değiştirerek iki yere girişler ekler: birincisi klasöre sağ tıklamak için (bu sayede bir görüntü dizinini açabilirsiniz) ve ikincisi bir klasörün içindeki boş alana sağ tıklamak için (mevcut dizinde görüntüleyiciyi başlatmak için).

Her kayıt girdisi, yürütülebilir dosyaya seçilen yolu bir komut satırı argümanı olarak ileten bir kabuk komutu oluşturur. Bu, uygulamanın giriş noktasındaki args parametresinin değerini aldığı yerdir.

Tim bir .reg dosyası sağlar ancak paylaşmadan önce bunu .txt olarak yeniden adlandırır. Bu önlem önemlidir: Bir .reg dosyasına çift tıklamak, hemen değerlerin kayda yazılmasını ister ve güvenilmeyen bir kayıt dosyasını çalıştırmak ciddi sistem sorunlarına yol açabilir. Yaklaşımı, dosyayı açmanızı, yolları doğrulamanızı, makinenize uyan şekilde güncellemenizi, uzantıyı tekrar .reg olarak yeniden adlandırmanızı ve ancak o zaman çalıştırmanızı gerektirir. Eğer bunlardan herhangi biri size yabancı geliyorsa, Tim'in tavsiyesi açıktır: kayıt defterini değiştirmeyin.

Kayıt defteri ile rahat olan geliştiriciler için, iki giriş oldukça açıktır. Her biri, yürütülebilir dosyanızın tam yolunu gösteren uygun anahtar altında adlandırılmış bir kabuk komutu oluşturur ve çalışma zamanında hedef dizini veya dosya yolunu ileten bir %V veya %1 yer tutucusu kullanır. Yeni bağlam menüsü girişlerinin görünmesi için bir yeniden başlatma gerekebilir.

Sonuç: Bir Kez Dağıtın, Sonsuza Kadar Kullanın

[10:21 - 10:30] Tüm dağıtım süreci iki adımdan oluşmaktadır: bir klasöre yayınlayın ve ardından yürütülebilir dosyayı sağ tıklama menüsüne kaydedin. Yükleyici yok, güncelleme mekanizması yok, bulut hizmeti yok. Kendi makinenizde tek amaçlı bir yardımcı program için, bu sadelik esas konudur.

Sonuç

[10:30 - 10:40] Özetlemek gerekirse: framework bağımlı ve tek dosya ayarlarına sahip dotnet publish, her yere bırakabileceğiniz hafif bir çalıştırılabilir dosya üretir. Windows Gezgini'nde her yerde kullanılabilir bir bağlam menüsü eylemine dönüştüren bir çift kayıt girişi.

Videonun genelinde geçen ders temkinli olmaktır. Dağıtım yaklaşımınızı uygulamanızın kapsamına uygun hale getirin. Kişisel kullanım için oluşturulmuş bir araç, binlerce müşteriye gönderilen bir ürünle aynı altyapıya ihtiyaç duymaz ve bu şekilde ele almak, yalnızca aracın tasarruf sağlamak için oluşturulan zamanı aşındıran bakım işlerini yaratır.

Örnek İpucu: Kişisel projeleriniz için bile PDB dosyalarınızı saklayın. Uygulama dosyası (executable) ile aynı klasörde veya yakın bir arşivde saklayın. Aylar sonra yardımcı program beklenmedik şekilde davranırsa, PDB'yi bulundurmak, Visual Studio'yu eklemenize ve yeniden kaynak koddan derlemeye gerek kalmadan sürümü hata ayıklamanıza olanak tanır.

Full videoyu onun YouTube Kanalında izleyin ve .NET masaüstü uygulamalarının dağıtımı hakkında daha fazla bilgi edinin.

Hero Worlddot related to .NET WPF Yardımcı Programını Yayınlama ve Dağıtma
Hero Affiliate related to .NET WPF Yardımcı Programını Yayınlama ve Dağıtma

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara