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ı Uygulamasını Nasıl Yayınlayıp Dağıtırsınız", "creator": "Tim Corey", "length": "10m 40s"})}]

Küçük bir masaüstü yardımcı programı oluşturmak işin sadece yarısıdır. Onu makinenize almak, hızlı bir şekilde başlatabileceğiniz bir yere koymak ve dağıtımı hafif hale getirmek ikinci yarısıdır, böylece onu bir daha asla düşünmezsiniz. Çok fazla geliştirici, bu adımı aşırı mühendis yaparak, yalnızca tek bir iş istasyonunda çalışan bir uygulama için yükleyici çerçeveleri veya çapraz platform araçları ekliyor.

Tim Corey, 'Bir .NET WPF Yardımcı Uygulamasını Nasıl Yayınlayıp Dağıtırsınız' adlı videosunda, kişisel görüntüleyici uygulamasını tek bir yürütülebilir dosyaya nasıl yayımladığı, bir klasöre kopyaladığı ve Windows sağ tıklama bağlam menüsüne kayıt defteri kullanarak nasıl bağladığından bahsediyor. Bağımlı çerçeveli vs. kendi başına ayırma, yardımcı uygulamayı herhangi bir klasörden erişilebilir kılan kayıt defteri girdilerine kadar her kararı ele alacağız. Eğer kendiniz için küçük bir araç yaptıysanız ve olası 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 hepsini geçip Klasör seçeneğini tercih eder. Kişisel bir yardımcı program için, yalnızca kendi makinelerinizde yaşayacak olan, bir klasöre yayım en doğrudan yoldur: herhangi bir dağıtım altyapısına ihtiyaç duymadan dosyaları istediğiniz yere kopyalayabilirsiniz.

Klasör hedefine seçtikten sonra, Tim doğrudan ayarlar sayfasına geçip yayım adımını hemen çalıştırmaz. Çıktının istediği gibi olması için varsayılan ayarların ayarlanması gerekiyor.

Çerçeve Bağımlı vs. Kendi Başına

[1:25 - 2:32] İlk ayar, dağıtım modudur. .NET SDK veya runtime zaten hedef makinede yüklü olduğunu varsayan bir çerçeve bağımlı yapıdır. Çıktı küçüktür, bu uygulama için yaklaşık 200 kilobayt, çünkü sisteminizde bulunan ortak çalışma zamanını kullanır.

Kendi başına bir yapı, tüm .NET çalışma zamanını çıktıya paklar. Bu, .NET yüklü olmayan makinelerde taşınabilir hale getirir, ancak boyutu yaklaşık 140 megabayta şişirir. Tim, kullandığı her makinenin zaten .NET yüklü olduğu için çerçeve bağımlı yapıyı seçiyor. Runtime'ı olmayabilecek iş arkadaşlarınıza veya müşterilerinize bir araç dağıtıyorsanız, kendi başına bir yapıya gitmek daha güvenlidir, ancak kişisel araçlar için bu takas nadiren mantıklıdır.

Neden WPF ve MAUI Değil

[2:50 - 4:10] Tim, bu proje için MAUI yerine WPF kullanmayı tercih etmesiyle ilgili aldığı geri bildirimlere yanıt veriyor. Sebebi ideolojik değil pratik. Görsel görüntüleyici yalnızca Windows'ta çalışmalıdır. MAUI ve üst katman çerçevesini tanıtmak, tek bir platform aracı için hiçbir fayda getirmeyen ek yük ekler.

Mimari tartışmanın ötesinde, bir de bakım açısı var. Tim'in orijinal kaynak kodu, yaklaşık yedi yıl boyunca dört veya beş makinede minimal değişikliklerle hayatta kalmıştır. Tek güncellemeler, çerçeve güncellemeleriydi (.NET Framework'ten .NET 8'e ve şimdi .NET 10'a). Eğer bu araç, Apple veya Google bir işletim sistemini güncellediğinde dikkat gerektiren bir çerçeve üzerine inşa edilmiş olsaydı, bu yedi yıllık sorunsuz çalışma mümkün olmazdı. Bakım için daha fazla zaman harcatan bir araç, artık size hiçbir şey kazandırmıyor.

Tek Dosya Yayını ve PDB Dosyaları

[4:59 - 6:32] Dağıtım modu belirlendikten sonra Tim, "Tek dosya oluştur" seçeneğini etkinleştirir ve Windows x64'ü hedef alır. Yayın tamamlanır ve çıktı klasörünü açar. Bu klasörde iki dosya bulunur: .exe ve bir .pdb.

Bu ikinci dosya bir Program Veritabanı dosyasıdır ve rolünü anlamak değerlidir. Release modunda derlendiğinde, derleyici performans için iç sembolleri optimize eder ve yeniden adlandırır. PDB, optimize edilmiş adları gerçek kod tabanınıza geri çevirir; böylece çalışan yürütülebilir dosyaya bir hata ayıklayıcı bağlayabilir ve sanki Debug modunda çalışıyormuşsunuz gibi kesme noktaları ayarlayabilirsiniz. Müşterilere hizmet veren bir üretim uygulaması için, PDB dosyalarını her sürümle güvenli bir şekilde saklamalısınız; böylece dağıtımdan sonra sorunları teşhis edebilirsiniz.

Kendi kendinize yaptığınız bir araç için Tim, uygulamanın çalışması için PDB'nin gerekli olmadığını belirtir. Basitlik açısından onu siler; ancak izleyicileri kullanıcılara gönderilen hiçbir şey için bu alışkanlığı edinmemeye uyarır. Tek .exe, PDB olmadan kendi başına çalışır.

Dikkat edilmesi gereken bir özellik: çerçeve bağımlıdan kendi kendine yeten yapıya geçildiğinde ve “tek dosya” seçeneği etkin kalmaya devam ettiğinde, çıktı artık tek bir dosya olmaz. Yürütülebilir dosyanın yanında ek çalışma zamanı dosyaları görünür. Tek dosya seçeneği, yalnızca çerçeve bağımlı yapı ile birleştirildiğinde gerçek anlamda tek bir dosya üretir.

Aracınızı Makinenize Yerleştirme

[7:17 - 7:52] Yürütülebilir dosyayı elinde tutarak Tim, daimi bir konuma taşır. Kişisel araçları Program Files'tan ayrı ve bulması kolay tutan bir konvansiyon olarak, özel bir C:\Apps\SimpleImageViewer klasörü kullanır. 2024'ten kalma yürütülebilir dosya, hala aynı şekilde çalışmakta ve şu anki makinesiyle özdeştir; bu durum önceki uzun ömürlülük gözlemini doğrular: basit bir proje yapısına sahip iyi tanımlanmış bir araç, donanım değişiklikleri ve işletim sistemi yükseltmeleriyle değiştirilmeden ayakta kalabilir.

Aracı Sağ Tıklama Menüsüne Ekleme

[7:52 - 10:21] Son adım, aracı Windows Gezgini’nin bağlam menüsüne bağlar. Tim, bir klasöre sağ tıklandığında görsel görüntüleyici dizisini açmak için ve bir dosya içinde boşluk üzerinde sağ tıklandığında geçerli dizinde görüntüleyiciyi çalıştırmak için kayıt defterine iki konum ekler.

Her kayıt defteri girdisi, seçilen yolu yürütülebilir dosyaya bir komut satırı argümanı olarak geçiren 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 adını .txt olarak değiştirir. Bu önlem önemlidir: Bir .reg dosyasını çift tıkladığında, hemen kayıt defterine değer yazılması istemiyle karşı karşıya kalırsınız ve güvenilmeyen bir kayıt defteri dosyasının çalıştırılması, ciddi sistem sorunlarına neden olabilir. Onun yaklaşımı, dosyayı açmanızı, yolları doğrulamanızı, bunları makinenize uyacak şekilde güncellemenizi, uzantıyı tekrar .reg olarak değiştirmenizi ve ancak o zaman çalıştırmanızı gerektirir. Eğer bunların herhangi biri sizde aşina değilse Tim'in tavsiyesi: kayıt defterini değiştirmeyin.

Kayıt defteri konusunda rahat olan geliştiriciler için iki giriş basittir. Her biri uygun anahtar altında adlandırılmış bir kabuk komutu oluşturur. Yürütülebilir dosyanızın tam yolunu işaret eder ve çalıştırma sırasında hedef dizin veya dosya yolunu geçiren bir %V veya %1 yeri tutucu kullanır. Yeni bağlam menüsü girişleri görünmeden önce bir yeniden başlatma gerekebilir.

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

[10:21 - 10:30] Tüm dağıtım süreci iki adımdır: bir klasöre yayımla, ardından sağ tıklama menüsünde yürütülebilir dosyayı kaydet. Yükleyici yok, güncelleme mekanizması yok, bulut hizmeti yok. Kendi makinenizde tek amaçlı bir araç için basitlik esastır.

Sonuç

[10:30 - 10:40] Özetlemek gerekirse: dotnet publish, çerçeveye bağımlı ve tek dosya ayarları ile hafif bir yürütülebilir dosya üretir, bunu istediğiniz yere bırakabilirsiniz. İki kayıt defteri girdisi, onu Windows Gezgini'nde her yerde kullanılabilir bir konteks menüsü eylemi haline getirir.

Tüm videoda işleyen ders, sınırlama. Dağıtım yaklaşımınızı uygulamanızın kapsamına uyarlayın. Kişisel kullanım için tasarlanmış bir araç, binlerce müşteriye dağıtılmış bir ürünün aynı altyapısına ihtiyaç duymaz ve böyle davranılması, aracın tasarlandığı zamanı aşındıran bakım çalışması yaratır.

Örnek İpucu: Kişisel projeler için bile PDB dosyalarını saklayın. Onları yürütülebilir dosya ile aynı klasörde veya yakın bir arşivde saklayın. Eğer araç daha sonra beklenmedik bir şekilde davranırsa, PDB'ye sahip olmak Visual Studio'yu bağlayıp kaynak kodu tekrar derlemeden yayın yapısını hata ayıklamanızı sağlar.

Tim'in YouTube Kanalı üzerinde tam videoyu izleyin ve .NET masaüstü uygulamalarının dağıtımına dair daha fazla fikir 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 üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

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