對於動態**場景來說,在執行時載入和解析xaml是有意義的,對於那些沒有支援xaml編譯的.net語言也是有意義的。但大多數wpf專案會通過msbuild和visual studio完成xaml編譯。xaml編譯包括三項事情:
(1)將乙個xaml檔案轉換為一種特殊的二進位制格式
(2)將轉換好的內容作為二進位制資源嵌入到正在被建立的程式集中,然後執行鏈結操作
(3)將xaml和過程式**自動連線起來
1.baml
2.生成的源**
提示 x:class只能在要編譯的xaml檔案中使用。但是有時在沒有x:class的情況下,編譯xaml檔案也是沒有問題的。這其實意味著沒有對應的**隱藏檔案,因此你不能使用任何需要過程式**才能實現的特性。因此,在沒有x:class標籤的情況下,新增乙個xaml檔案到visual studio專案中,是很方便的一種部署已編譯xaml並提高效能的方式,而不用建立**隱藏檔案。
如果你使用x:class的話,一些過程式**確實是在xaml編譯過程中生成的,但是這些過程式**僅僅是「粘合**(glue code)」,類似於在執行時載入和解析鬆散xaml檔案所要寫的**,如那些字尾為.g.cs(或.g.vb)的檔案,這裡的g表示generated(生成)。
每個生成的原始檔中包含了乙個由根物件元素中的x:class指定的類的部分類定義。xaml檔案中的每個已命名的元素在該部分類中都有乙個成員(預設是私有的),這些成員的名稱就是元素名稱。其中還有乙個initialzecomponent方法用於完成一大堆煩人的工作,包括載入嵌入baml資源、向成員賦予適當的例項(這些例項是在xaml中定義的)、繫結所有的事件處理程式(如果事件處理程式已在xaml檔案中指定的話)。
編譯的過程
編譯的概念 編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。編譯的完整過程 c源程式 預編譯處理 c 編譯 優化程式 s asm 匯程式設計序 obj o a ko 鏈...
編譯原理 編譯的過程
預處理 prepressing 展開巨集定義 處理 define,include 刪除注釋,新增行號和檔名標識。生成.i 預處理檔案 編譯 compilation 詞法分析 語法分析 語義分析 優化。預處理 編譯用ccl完成。生成.s 彙編 檔案 彙編 assembly 把彙編 轉成機器可執行的指令...
centos 7 編譯安裝mysql 詳細過程
一 配置防火牆,開啟80埠 3306埠 centos 7.0預設使用的是firewall作為防火牆,這裡改為iptables防火牆。1 關閉firewall systemctl stop firewalld.service 停止firewall systemctl disable firewalld...