IronBarcode ile C# MSI Yükleyicisi Oluşturma

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode ile bir MSI yükleyicisi oluşturmak için, çözümünüze bir Kurulum Projesi ekleyin, gerekli DLL'leri (onnxruntime.dll, IronBarcodeInterop.dll ve ReaderInterop.dll) dahil edin ve dağıtılabilir bir MSI paketi oluşturmak için projeyi derleyin.

Bir MSI (Microsoft Installer), yazılım kurulumu, güncellemeler ve kaldırma işlemlerini kolaylaştıran bir Windows kurulum paketidir. Bir MSI kullanmak, uygulamaları kurmak için standart bir yöntem sunar ve bu da özellikle kurumsal dağıtımlar için faydalıdır. MSI formatı, geri alma yetenekleri, yönetim kurulum noktaları ve Windows Installer hizmet entegrasyonu gibi gelişmiş özellikleri destekler.

IronBarcode, mevcut uygulamanıza sorunsuz bir şekilde entegre olması ve kolay dağıtım için MSI'ya dönüştürülmesi için araçlar sunar. Farklı ortamlarda güvenilir kurulum sağlar ve geliştiricilere hangi bileşenleri dahil edip etmeyeceklerini seçme seçeneği sunar. Kütüphane, birden fazla barkod formatını destekleyerek çeşitli iş uygulamaları için esnek bir kullanım sunar.

Bu öğretici, IronBarcode'un güçlü tarama yeteneklerinden yararlanan örnek bir barkod uygulamasından bir MSI dosyasının nasıl oluşturulacağını göstermektedir.

Hızlı Başlangıç: Tek Tıkla MSI Barkodunu Üretin ve Okuyun

Basit bir API'ye sahip IronBarcode'u kullanarak, minimum kurulumla hem MSI barkodları oluşturun hem de okuyun. Aşağıdaki snippet, bir MSI barkod görüntüsünü nasıl yazabileceğinizi ve ardından geri okuyabileceğinizi gösteriyor - hepsi sadece birkaç satırda.

  1. IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    var msiImg = IronBarCode.BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI).SaveAsImage("msi.png");
    var results = IronBarCode.BarcodeReader.Read("msi.png", new BarcodeReaderOptions { ExpectBarcodeTypes = BarcodeEncoding.MSI });
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın

    arrow pointer

Başlamadan Önce Hangi Gereksinimlere İhtiyacım Var?

Projeye başlamadan önce, lütfen [Microsoft Visual Studio Installer Projects eklentisini] indirin MSI derlemesinin çalışması için, https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects URL'sine bakabilirsiniz. Ayrıca, projenizde IronBarcode'un NuGet üzerinden yüklü olduğundan emin olun.

Neden Visual Studio Installer Projects Eklentisi Gereklidir?

Eklenti, Visual Studio 2022'de MSI kurulum dosyaları oluşturmak için gerekli Kurulum Projesi şablonunu sağlar. Bu eklenti, 2010 sürümünden sonra Visual Studio'dan kaldırılan dağıtım proje şablonlarını ekleyerek, geliştiricilerin geleneksel Windows Installer paketleri oluşturmasına olanak tanır.

Hangi .NET Framework Versiyonunu Hedeflemeliyim?

MSI dağıtım senaryoları ile maksimum uyumluluk için Windows Forms App (.NET Framework) kullanın. IronBarcode çeşitli .NET platformlarını desteklerken, .NET Framework sürümü, MSI yükleyicilerinin genellikle kullanıldığı Windows sistemleriyle en geniş uyumluluğu sağlar.

Başlangıç MSI Yükleyici Projesini Nasıl Oluştururum?

Bu örnek için fonksiyonelliği göstermek üzere Windows Forms App (.NET Framework) projesi kullanın. Bu yaklaşım, masaüstü barkod okuma uygulamaları için aşina bir UI paradigması sağlar.

MSI Yükleyicileri İçin Hangi Proje Türü En İyisidir?

Windows Forms uygulamaları, MSI dağıtımlı barkod okuma uygulamalarını oluşturmak için en basit yolu sunar. Doğal Windows entegrasyonu sunar ve .NET Framework dışında ek çalışma zamanı bağımlılıkları gerektirmez.

Demo Uygulamanın Temel Bileşenleri Nelerdir?

Uygulama, dosya diyaloğu açarak görüntülerden barkod tarayan bir form ve bir butondan oluşmaktadır. Bu basit arayüz, çekirdek işlevselliği gösterirken dağıtım karmaşıklığını minimumda tutar. Daha gelişmiş senaryolar için, PDF'lerden barkod okumayı veya asenkron barkod okumayı incelemeyi düşünün.

Windows Formuna Buton Nasıl Eklenir?

  • ToolBox adresine gidin
  • Button'yi ara
  • Butonu sürükleyip Windows formuna bırakarak ekleyin

Forma eklemek için Tüm Windows Formları bölümünde vurgulanan Button kontrolünü gösteren Visual Studio Toolbox

Buton Kontrolünü Nerede Bulabilirim?

Button denetimi, Visual Studio Araç Kutusu'nun Ortak Denetimler bölümünde bulunur. Araç Kutusu görünmüyorsa, View > Toolbox'den açın veya Ctrl+Alt+X tuşlarına basın.

Butonu Formda Nasıl Konumlandırmalıyım?

Butonu formun ortasına veya kullanıcıların birincil eylemi bulmayı doğal olarak bekleyeceği bir yere yerleştirin. Tutarlı bir kullanıcı deneyimi için Windows UI yönergelerini takip etmeyi düşünün.

Buton Kodunu Bir Barkod Tarama İşlemini Yönetmek İçin Nasıl Düzenlerim?

Formun C# koduna erişmek için buton bileşenine çift tıklayın. Form bileşeni için mantık aşağıda verilmiştir - bir barkod alır ve taramaya çalışır. Bu kod yalnızca görüntüleri tarar ve PDF'ler için çalışmaz. PDF belgeleri için ReadPdf yöntemini kullanın. Kapsamlı barkod okuma seçenekleri için, barkod okuyucu ayarları belgelerine bakın.

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace MsiInstallerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
            IronSoftware.Logger.LogFilePath = "Default.log";

            IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "Image files (All files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        // Load the selected image
                        using (Bitmap bmp = new Bitmap(openFileDialog.FileName))
                        {
                            // Process the image
                            AnyBitmap anyBitmap = AnyBitmap.FromBitmap(bmp);

                            // Configure barcode reader options (customize as needed)
                            var option = new BarcodeReaderOptions
                            {
                                Speed = ReadingSpeed.Detailed,
                                ExpectMultipleBarcodes = true,
                                ScanMode = BarcodeScanMode.Auto,
                            };

                            BarcodeResults result = IronBarCode.BarcodeReader.Read(anyBitmap, option);

                            if (result.Count > 0)
                            {
                                string output = string.Empty;
                                foreach(var barcode in result)
                                {
                                    Console.WriteLine($"Barcode Found: {barcode.Text}");
                                    output += barcode.Text + "\n";
                                }

                                MessageBox.Show($"Detected Barcodes: \n{output}");
                            }
                            else
                            {
                                MessageBox.Show("No Barcode found.");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"{ex.Message}");
                    }
                }
            }
        }
    }
}
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace MsiInstallerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
            IronSoftware.Logger.LogFilePath = "Default.log";

            IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "Image files (All files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        // Load the selected image
                        using (Bitmap bmp = new Bitmap(openFileDialog.FileName))
                        {
                            // Process the image
                            AnyBitmap anyBitmap = AnyBitmap.FromBitmap(bmp);

                            // Configure barcode reader options (customize as needed)
                            var option = new BarcodeReaderOptions
                            {
                                Speed = ReadingSpeed.Detailed,
                                ExpectMultipleBarcodes = true,
                                ScanMode = BarcodeScanMode.Auto,
                            };

                            BarcodeResults result = IronBarCode.BarcodeReader.Read(anyBitmap, option);

                            if (result.Count > 0)
                            {
                                string output = string.Empty;
                                foreach(var barcode in result)
                                {
                                    Console.WriteLine($"Barcode Found: {barcode.Text}");
                                    output += barcode.Text + "\n";
                                }

                                MessageBox.Show($"Detected Barcodes: \n{output}");
                            }
                            else
                            {
                                MessageBox.Show("No Barcode found.");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"{ex.Message}");
                    }
                }
            }
        }
    }
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Drawing
Imports System.Windows.Forms

Namespace MsiInstallerSample
    Partial Public Class Form1
        Inherits Form

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
            IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All
            IronSoftware.Logger.LogFilePath = "Default.log"

            IronBarCode.License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01"

            Using openFileDialog As New OpenFileDialog()
                openFileDialog.Filter = "Image files (All files (*.*)|*.*"

                If openFileDialog.ShowDialog() = DialogResult.OK Then
                    Try
                        ' Load the selected image
                        Using bmp As New Bitmap(openFileDialog.FileName)
                            ' Process the image
                            Dim anyBitmap As AnyBitmap = AnyBitmap.FromBitmap(bmp)

                            ' Configure barcode reader options (customize as needed)
                            Dim option As New BarcodeReaderOptions With {
                                .Speed = ReadingSpeed.Detailed,
                                .ExpectMultipleBarcodes = True,
                                .ScanMode = BarcodeScanMode.Auto
                            }

                            Dim result As BarcodeResults = IronBarCode.BarcodeReader.Read(anyBitmap, option)

                            If result.Count > 0 Then
                                Dim output As String = String.Empty
                                For Each barcode In result
                                    Console.WriteLine($"Barcode Found: {barcode.Text}")
                                    output += barcode.Text & vbCrLf
                                Next

                                MessageBox.Show($"Detected Barcodes: {vbCrLf}{output}")
                            Else
                                MessageBox.Show("No Barcode found.")
                            End If
                        End Using
                    Catch ex As Exception
                        MessageBox.Show($"{ex.Message}")
                    End Try
                End If
            End Using
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Barkod Okuma Mantığının Temel Bileşenleri Nelerdir?

Kod, görüntüleri seçmek için OpenFileDialog kullanır, ayrıntılı tarama için BarcodeReaderOptions yapılandırır ve sonuçları MessageBox aracılığıyla görüntüler. Okuma hızı seçenekleri, performans gereksinimlerinize göre ayarlanabilir. ExpectMultipleBarcodes ayarı, tek bir görüntüden birden fazla BARCODE'un okunmasını sağlar.

Hataları Üretimde Nasıl Yönetmeliyim?

Ham hata ayırma detayları yerine uygun hata günlüğü ve kullanıcı dostu hata mesajları ekleyin. Barkod tanınmadı senaryoları için yeniden deneme mantığı uygulamayı ve kullanıcılara görüntü kalitesi gereksinimleri hakkında yol göstermeyi düşünün.

Bu Kodla PDF Belgelerini Tarayabilir miyim?

PDF belgeleri için, PDF BARCODE çıkarmanın doğru şekilde işlenebilmesi amacıyla BarcodeReader.Read yöntemini BarcodeReader.ReadPdf ile değiştirin. Optimum performans için PDF-specific barkod okuyucu ayarlarını da keşfedebilirsiniz.

PDF desteği için kodu nasıl değiştireceğinizi gösteren bir örnek:

// For PDF documents, use ReadPdf method
if (Path.GetExtension(openFileDialog.FileName).ToLower() == ".pdf")
{
    var pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option);
    // Process PDF results similar to image results
}
// For PDF documents, use ReadPdf method
if (Path.GetExtension(openFileDialog.FileName).ToLower() == ".pdf")
{
    var pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option);
    // Process PDF results similar to image results
}
' For PDF documents, use ReadPdf method
If Path.GetExtension(openFileDialog.FileName).ToLower() = ".pdf" Then
    Dim pdfResults = BarcodeReader.ReadPdf(openFileDialog.FileName, option)
    ' Process PDF results similar to image results
End If
$vbLabelText   $csharpLabel

MSI'de Oluşturma İçin Bir Kurulum Projesi Nasıl Eklerim?

Formu ve kontrolci mantığını ayarladıktan sonra, oluşturduğunuz uygulama için bir MSI yükleyici oluşturmak için mevcut çözümünüze bir Kurulum Projesi ekleyin. Kurulum Projesi, yeni oluşturduğunuz uygulamanın bir yükleyicisini oluşturmanıza olanak tanır. Bu süreç, IronBarcode bağımlılıkları da dahil olmak üzere tüm gerekli bileşenleri tek bir dağıtılabilir birim haline getirir.

Çözüme sağ tıklayın, ardından Ekle > Yeni Proje... seçeneğine gidin.

 related to MSI'de Oluşturma İçin Bir Kurulum Projesi Nasıl Eklerim?

MSI yükleyicisi için, MsiInstallerSample projesini tekrar Yayın modunda derleyin.
Kurulum Projesine sağ tıklayın, ardından Ekle > Proje Çıktısı... seçeneğine gidin.

Çözüm Gezgini görünür durumdayken SetupProject için dağıtım seçeneklerini gösteren Visual Studio Proje Çıktı Grubu Ekle iletişim kutusu

MSI yükleyicisinin sorunsuz çalışmasını sağlamak için, kurulum projenize şu üç dosyayı eklemelisiniz: onnxruntime.dll, IronBarcodeInterop.dll ve ReaderInterop.dll. Bu dosyalar, projeyi Yayın modunda derlediğinizde üretilir:

  • onnxruntime.dll: MsiInstallerSample\MsiInstallerSample\bin\Release konumunda
  • IronBarcodeInterop.dll: MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native konumunda
  • ReaderInterop.dll: MsiInstallerSample\MsiInstallerSample\bin\Release\runtimes\win-x86\native konumunda

Solution Explorer'da bağımlılıkları gösteren, kurulum projesine eklenecek ReaderInterop.dll dosyasını seçen Visual Studio dosya iletişim kutusu

Bu dosyalardan biri eksikse, şu sorun giderme makalesinde belirtildiği gibi aşağıdaki hata mesajını alabilirsiniz: MSI Yükleyicisi Oluştururken Eksik DLL'ler

Son olarak, Kurulum Projesini oluşturun. Yükleyici şu konumda bulunacaktır: MsiInstallerSample\SetupProject\Release

Bu Spesifik DLL'ler Neden Gereklidir?

IronBarcode, ML tabanlı barkod algılama ve işleme yetenekleri için bu yerel kütüphanelere bağımlıdır. onnxruntime.dll, makine öğrenimi çalışma zamanını sağlarken, IronBarcodeInterop.dll ve ReaderInterop.dll, yerel BARCODE işleme işlemlerini gerçekleştirir. Bu bileşenler, görüntü düzeltme ve hata toleransı gibi gelişmiş özellikleri etkinleştirir.

Bu DLL'leri Eklemeyi Unutursam Ne Olur?

Eksik DLL'ler, kullanıcılar kurulumdan sonra barkodları taramaya çalıştıklarında çalışma zamanı istisnalarına neden olur. Uygulama, IronBarcode'u düzgün bir şekilde başlatamayabilir ve bu da FileNotFoundException veya DllNotFoundException hatalarına neden olabilir.

Proje Çıkış Ayarlarını Nasıl Yapılandırırım?

Ana çalıştırılabilir dosyayı ve yönetilen bağımlılıklarını dahil etmek için proje çıktısını eklerken "Birincil çıktı" seçeneğini seçin. Bu, tüm .NET derlemelerinin dahil edilmesini sağlar, ancak yukarıda bahsi geçen yerel DLL'leri manuel olarak eklemeyi unutmamanız önemlidir.

MSI Yükleyicisini Nasıl Çalıştırır ve Test Ederim?

Her şeyin düzgün çalışmasını sağlamak için MSI dosyası ile uygulamayı yükleyin. Test, düzgün dağıtımı doğrulamak için hem kurulum hem de kaldırma senaryolarını kapsamalıdır.

Setup.exe ve yükleyici dosyalarını içeren Release klasörü ile tamamlanmış yükleyici derlemesini gösteren Visual Studio

Test Sırasında Ne Kontrol Etmeliyim?

Uygulamanın doğru bir şekilde başlatılabildiğini, dosya diyaloglarını açabildiğini ve test görüntülerinden barkodları başarıyla taradığını doğrulayın. Kapsamlı işlevselliği sağlamak için çeşitli desteklenen barkod formatları ile test edin. Ayrıca, lisans anahtarının uygulanması dağıtılan ortamda doğru çalıştığını doğrulayın.

Kurulum Sorunlarını Nasıl Gideririm?

Herhangi bir kurulum hatası veya eksik bileşenle ilgili ayrıntılı bilgileri yakalamak için Windows Installer günlüğünü etkinleştirin. Ek hata detayları için Windows Olay Görüntüleyicisini kontrol edin ve yaygın dağıtım sorunları için sorun giderme kılavuzlarına danışın.

Tam Örnek Projeyi Nereden İndirebilirim?

Bu kılavuz için tam kodu indirebilirsiniz. Visual Studio'da bir WinFormApp projesi olarak açabileceğiniz zip dosyası şeklinde gelir. Örnek, gerekli tüm yapılandırmaları içerir ve MSI dağıtımı için en iyi uygulamaları gösterir.

WinForm MSI Uygulama Projesini İndirin

Örnek Projede Neler Bulunmaktadır?

İndirme, Windows Forms uygulaması ve yapılandırılmış Kurulum Projesi ile tam bir Visual Studio çözümü içerir. Dağıtım senaryoları için uygun lisans anahtarı yapılandırmasını gösteren test için örnek barkod görüntüleri içerir.

İndirilen Projeyi Nasıl Açarım?

ZIP dosyasını çıkarın ve Installer Projects uzantısı yüklü olan Visual Studio 2022'de .sln dosyasını açın. IronBarcode'un en son sürümünün NuGet Paket Yöneticisi üzerinden yüklü olduğundan emin olun. Daha ayrıntılı kurulum talimatları için, API belgelerine bakın.

Sıkça Sorulan Sorular

Barkod uygulamasıyla MSI yükleyici oluştururken hangi DLL dosyaları gereklidir?

IronBarCode ile bir MSI yükleyici oluştururken üç temel DLL dosyasını dahil etmelisiniz: onnxruntime.dll, IronBarcodeInterop.dll ve ReaderInterop.dll. Bu dosyalar, uygulamanız MSI paketi üzerinden dağıtıldığında IronBarCode'un düzgün çalışmasını sağlar.

Barkod uygulamam için bir MSI yükleyici oluşturmadan önce hangi önkoşullara ihtiyacım var?

IronBarCode ile bir MSI yükleyici oluşturmadan önce, Visual Studio 2022 için Microsoft Visual Studio Installer Projeleri uzantısını indirip yüklemeniz gerekir. Ayrıca, projenizde IronBarCode'un NuGet paket yöneticisi aracılığıyla kurulu olduğundan emin olun.

C#'da hızla MSI barkodları nasıl üretebilir ve okuyabilirim?

IronBarCode, MSI barkodları üretmek ve okumak için basit bir API sağlar. MSI kodlama türü ile BarcodeWriter.CreateBarcode() kullanarak bir MSI barkodu oluşturabilir, görüntü olarak kaydedebilir ve ardından BarcodeReader.Read() kullanarak, okuyucu seçeneklerinde BarcodeEncoding.MSI belirterek geri okuyabilirsiniz.

Barkod uygulamalarının dağıtımında MSI yükleyicileri kullanmanın avantajları nelerdir?

MSI yükleyicileri, kurumsal dağıtımlar için ideal olan standart kurulum yöntemleri sağlar. IronBarCode ile birleştirildiğinde geri alma özellikleri, yönetimsel kurulum noktaları, Windows Installer hizmeti entegrasyonu ve çeşitli ortamlar arasında güvenilir kurulum sağlarken geliştiricilerin hangi bileşenleri dahil edeceklerini seçmelerine izin verir.

Barkod kütüphanesi, MSI paketlerinde birden fazla barkod formatını destekliyor mu?

Evet, IronBarCode, çeşitli iş uygulamaları için çok yönlü yapan birden fazla barkod formatını destekler. Bu esneklik, geliştiricilerin, özel iş gereksinimlerine göre, MSI paketlerine farklı barkod türlerini entegre etmelerine olanak tanır.

Barkod operasyonlarında IronBarcode kullanmanın avantajları nelerdir?

IronBarcode, entegrasyon kolaylığı, birçok barkod formatını destekleme, yüksek kaliteli görüntü üretimi ve sağlam okuma yetenekleri gibi avantajlar sunarak, C#'ta barkod operasyonları için kapsamlı bir araçtır.

IronBarcode barkod görünümünü özelleştirme desteği sağlıyor mu?

Evet, IronBarcode, barkod görünümünü özelleştirmek için renk, boyut ve metin notları gibi geniş seçenekler sunar, bu da barkodları belirli tasarım gereksinimlerinize göre uyarlamanıza imkan tanır.

IronBarcode, iş süreçlerindeki verimliliği artırmaya nasıl yardımcı olabilir?

IronBarcode, hızlı ve doğru barkod üretimi ve okuma yeteneği sağlayarak, manuel veri girişi hatalarını azaltır ve envanter ile varlık takibini iyileştirerek iş süreçlerinin verimliliğini artırır.

Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?

IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.

IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?

IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,240,258 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.