WPF uygulaması (WPF) oluşturma

 

Yayımlanan: Haziran 2016

Windows Presentation Foundation (WPF) uygulamalar olarak oluşturulabilen .NET Framework yürütülebilir (.exe) kitaplıkları (.dll) veya her iki tür derlemeleri birleşimi. Bu konu nasıl oluşturulacağını tanıtır WPF uygulamaları ve yapı işlemi anahtar adımları açıklar.

Entity with relative path '../Token/autoOutline_md.md' can not be found, for source topic '{"project_id":"3fedad16-eaf1-41a6-8f96-0c1949c68f32","entity_id":"a58696fd-bdad-4b55-9759-136dfdf8b91c","entity_type":"Article","locale":"tr-TR"}'.

WPF uygulaması aşağıdaki yollarla derlenebilir:

Olduğunda bir WPF projesi yapılandırıldığında, dile özgü birleşimi ve WPF-belirli hedefler çağrılır. Bu hedefleri Yürütme işlemine ardışık düzen adı ve anahtar adımlar aşağıdaki şekilde gösterilmiştir.

WPF yapı işlemi

Oluşturma öncesi başlatmalar

Yapılandırmadan önce MSBuild önemli araçlar ve kitaplıkların, aşağıdakiler dahil konumunu belirler:

  • .NET Framework.

  • Entity with relative path '../Token/TLA2%23tla_wcsdk_md.md' can not be found, for source topic '{"project_id":"3fedad16-eaf1-41a6-8f96-0c1949c68f32","entity_id":"a58696fd-bdad-4b55-9759-136dfdf8b91c","entity_type":"Article","locale":"tr-TR"}'. Dizinler.

  • Konumunu WPF başvuru derlemeleri.

  • Derleme arama yolları için özellik.

İlk konum burada MSBuild olan başvuru derleme dizini (%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.0\) derlemeleri arar. Bu adımda, yapı işlemi ayrıca çeşitli özellikler ile öğe gruplarını başlatır ve gerekli temizleme işini gerçekleştirir.

Başvuruları çözme

Yapı işlemi bulur ve uygulaması projesi oluşturmak için gerekli olan derlemeleri bağlar. Bu mantık yer alan ResolveAssemblyReference görev. Olarak bildirilen tüm derlemeler Reference Proje dosyasında yanı sıra, bilgi arama yolları ve sistemde zaten yüklü derlemelerin meta görev için sağlanır. Görev derlemeleri arar ve yüklü derlemenin meta verilerini çekirdek filtrelemek için kullandığı WPF çıktı bildirimlerinde yukarı gösterme gereken derlemeleri. Bu, ClickOnce bildirimleri yedekli bilgileri önlemek için yapılır. PresentationFramework.dll temsilcisi kabul edilebilir örneğin bir uygulamanın ve yerleşik WPF ve dahası tüm WPF derlemeler mevcut olan her makinede aynı konumda .NET Framework yüklü tüm tüm bilgileri içerecek şekilde gerek yoktur .NET Framework başvuru derlemeleri bildirimlerdeki.

Biçimlendirmeyi Derleme — geçiş 1

Bu adımda, XAML dosyaları ayrıştırılır ve derlenir, böylece çalışma zamanı ayrıştırma geçirdikleri değil XML ve özellik değerlerini doğrulama. Derlenmiş XAML Dosya öncesi simgeleştirilmemiş, yükleme zamanında yüklemekten daha hızlı olmalıdır, böylece bir XAML dosyası.

Bu adımda, aşağıdaki etkinlikleri gerçekleşmesi her XAML olan dosya bir Page öğesi oluşturun:

  1. XAML Dosyası biçimlendirme derleyicisi tarafından ayrıştırılır.

  2. Derlenmiş gösterim için oluşturulan XAML ve obj\Release klasörüne kopyalanır.

  3. Yeni bir parçalı sınıf CodeDOM gösterimi oluşturulur ve obj\Release klasörüne kopyalanır.

Dile özgü kod dosyası için ek olarak, oluşturulan her XAML dosyası. Örneğin, Page1.xaml sayfası için bir Visual Basic Proje, bir Page1.g.vb oluşturulur; için bir Page1.xaml sayfa içinde bir C# Proje, bir Page1.g.cs oluşturulur. Dosya adı ".g" dosyası oluşturulur gösterir biçimlendirme dosyasının en üst düzey öğesi için bir parçalı sınıf bildirimi sahip kodu (gibi Page veya Window). Sınıf ile bildirilen partial değiştiricisini C# (Extends içinde Visual Basic) başka bir yerde sınıfın başka bir bildirim göstermek için genellikle arka plan kod içinde Page1.xaml.cs dosya.

Parçalı sınıf uygun temel sınıftan (gibi Page sayfası için) ve uygulayan System.Windows.Markup.IComponentConnector arabirimi.IComponentConnector Arabirimi bileşeni başlatmak ve adları ve olayları içeriği öğelere bağlamak için yöntemler vardır. Sonuç olarak, oluşturulan kod dosyası aşağıdaki gibi bir yöntem uygulamasına sahiptir:

public void InitializeComponent() {  
    if (_contentLoaded) {  
        return;  
    }  
    _contentLoaded = true;  
    System.Uri resourceLocater =   
        new System.Uri(  
            "window1.xaml",   
            System.UriKind.RelativeOrAbsolute);  
    System.Windows.Application.LoadComponent(this, resourceLocater);  
}  

Varsayılan olarak, biçimlendirme derlemesinin aynı şekilde çalışır AppDomain olarak MSBuild altyapısı. Bu önemli bir performans kazancı sağlar. Bu davranışı ile değiştirilebilir AlwaysCompileMarkupFilesInSeparateDomain özelliği. Tüm başvuru derlemelerinin ayrı kaldırarak eklentiyi avantajı vardır AppDomain.

Biçimlendirmeyi Derleme — geçiş 2

Tüm XAML sayfaları derlenir biçimlendirme derlemesinin 1 geçişi sırasında.XAML yerel olarak tanımlanan tür başvuruları (aynı proje başka bir yerde kodda tanımlanan türlere başvurular) dosyaları şu anda derleme dışındadır. Yerel olarak tanımlanmış türlerden yalnızca kaynağı var ve henüz derlenmiş olmasıdır. Bunu belirlemek için ayrıştırıcının gibi öğeler için aramayı içeren buluşsal yöntemler kullanır x:Name Biçimlendirme dosyasındaki. Örnek bulunduğunda, biçimlendirme dosyasının derlemesi kod dosyaları, sonra derlenen kadar ertelenir ikinci biçimlendirme derleme geçişi bu dosyaları işledikten.

Dosya Sınıflandırma

Yapı işlemi puts Çıkış dosyalarını farklı kaynak gruplar halinde, hangi uygulama derlemesine bunlar yerleştirilecek temel. Tipik olarak yerelleştirilmemiş uygulamada tüm veri dosyaları olarak işaretlenmiş. Resource ana derlemeye (yürütülebilir veya kitaplık) yerleştirilir. Zaman UICulture projede derlenen tüm ayarlandığında XAML dosyaları ve özellikle dile özgü olarak işaretlenmiş kaynakları uydu kaynak derlemesine yerleştirilir. Ayrıca, tüm dilden kaynakları ana derlemeye yerleştirilir. Yapı işlemi bu adımda, o belirleme yapılır.

ApplicationDefinition, Page, Ve Resource Proje dosyasında yapı eylemleri ile Genişletilebilir Localizable meta veri (kabul edilebilir değerler true ve false), dosyanın dile özgü veya dilden olup olmadığını belirler.

Çekirdek derleme

Çekirdek derleme adımı kod dosyalarının derlenmesini içerir. Dile özgü hedef dosyaları Microsoft.CSharp.targets ve Microsoft.VisualBasic.targets mantığı tarafından yönetilir. Buluşsal belirlediyseniz biçimlendirme derleyici tek bir geçiş yeterli olup, ardından ana derleme oluşturulur. Ancak, bir veya daha fazla XAML dosyalarınız projede yerel olarak tanımlanmış tür başvuruları, ardından biçimlendirme derlemesinin ikinci geçişi tamamlandıktan sonra son uygulama derlemesinin oluşturulabilmesi için geçici .dll dosyası oluşturulur.

Bildirim üretme

Tüm uygulama derlemeleri ve içerik dosyaları hazır olduktan sonra yapı işleminin sonunda ClickOnce için uygulama bildirimleri oluşturulur.

Dağıtım bildirimi dosyası dağıtım modelini açıklar: geçerli sürümü, güncelleştirme davranışı ve dijital imza birlikte yayımcı kimliği. Bu bildirimi dağıtımı işleyen yöneticiler tarafından yazılmış amaçlanmıştır. Dosya uzantısı olan .xbap (için XAML tarayıcısı uygulamaları (XBAP'ler)) ve .application yüklü uygulamaları için. Önceki tarafından dikte edilen HostInBrowser Proje özelliği ve sonuç olarak uygulamayı tarayıcı barındıran olarak bildirimini tanımlar.

Uygulama bildirimi (bir. exe.manifest dosyası) uygulama derlemeleri ve bağımlı kitaplıkları açıklar ve uygulama için gereken izinleri listeler. Bu dosya uygulama geliştiricisi tarafından yazılmış amaçlanmıştır. Başlatmak için bir ClickOnce Uygulama, bir kullanıcı uygulamanın dağıtım bildirimi dosyasını açar.

Bu dosya bildirim dosyaları her zaman için oluşturulan XBAP'ler. Yüklü uygulamalar için sürece oluşturulmaz GenerateManifests özellik değeri ile proje dosyasında belirtilen true.

XBAP'ler tipik Internet bölgesi uygulamalarına atanan bu izinleri üzerine iki ek izin alma: WebBrowserPermission ve MediaPermission.WPF Yapı sistemi uygulama bildiriminde bu izinleri bildirir.

WPF Yapılandırma sistemi artımlı derlemeler için destek sağlar. Biçimlendirme veya kodda yapılan değişiklikleri algılama oldukça Akıllı ve yalnızca bu değişiklikten etkilenen yapıları derler. Artımlı derleme mekanizması aşağıdaki dosyaları kullanır:

  • Bir $(AssemblyName) _MarkupCompiler.Cache dosyası geçerli derleyici durumunu korumak için.

  • Bir $(AssemblyName) _MarkupCompiler.lref dosyası önbelleğe XAML dosyaları yerel olarak tanımlanmış tür başvuruları ile.

Artımlı derlemeyi yöneten kurallar verilmiştir:

  • Dosya değişikliği, yapı sistemi algılar en küçük birimdir. Bu nedenle, bir kod dosyası için yapı sistemi bir türü değiştirdiyseniz veya kod eklediyseniz bildiremez. Aynı proje dosyaları için geçerlidir.

  • Artımlı derleme mekanizmasının olması gerekir, bir XAML sayfa bir sınıf tanımlar veya diğer sınıflarını kullanır.

  • Varsa Reference Girişleri değiştirin ve ardından tüm sayfaları yeniden derleyin.

  • Bir kod dosyası değişirse, yerel olarak tanımlanmış tür başvurularını içeren tüm sayfaları yeniden derleyin.

  • Varsa bir XAML Dosya değişiklikleri:

    • Varsa XAML olarak bildirilen Page projedeki: ise XAML değil yerel olarak tanımlanmış tür başvuruları yoksa, yeniden derleyin XAML ve tüm XAML yerel başvurularla; sayfaları XAML tüm yeniden derleyin yerel başvuruları varsa XAML sayfalarını yerel başvurularla.

    • Varsa XAML olarak bildirilen ApplicationDefinition projede: tüm yeniden derleyin XAML sayfaları (neden: her XAML başvurusu olan bir Application değişmiş olabilir türü).

  • Proje dosyası yerine uygulama tanımı bir kod dosyası bildirir, bir XAML dosyası:

    • Kontrol edin ApplicationClassName Proje dosyasında değeri değişti (yeni bir uygulama türü oluyor?). Bu durumda, tüm uygulama yeniden derleyin.

    • Aksi takdirde, tüm yeniden derleyin XAML sayfalarını yerel başvurularla.

  • Bir proje dosyası değişirse: tüm önceki kuralları uygulayın ve derlenmesi için gerekenler bakın. Aşağıdaki özellikler tetikleyiciye tam yeniden derlemeyi değiştirir: AssemblyName, IntermediateOutputPath, RootNamespace, ve HostInBrowser.

Aşağıdaki yeniden derleme senaryoları desteklenir:

  • Tüm uygulama derlenir.

  • Yalnızca XAML yerel olarak tanımlanan tür başvuruları dosyaları derlenir.

  • Hiçbir şey (projedeki değiştiyse) derlenir.

Bir WPF uygulamasını dağıtma
WPF MSBuild Başvurusu
WPF içinde URI'leri paketleme
WPF Uygulama kaynağı, içerik ve veri dosyaları

Show: