標籤:blog http io ar os 使用 sp for 檔案
一開始看到WPF裡面經常用如下語句來構造資源檔Uri:
Uri uri = new Uri("/AssemblyName;component/image.png");
我還以為這種格式的字串是URI標準規定的,但是網上查了一下卻沒發現有這種格式的URI字串。
URI是統一資源識別項,通用文法為:
協議名(http,https,ftp,file等)+冒號+協議所對應的內容
URI又分為URL和URN,URL是用來定義一個資源的訪問路徑.而URN則是用來定義一個資源的名稱。(http://zh.wikipedia.org/zh/統一資源標誌符)
仔細看了一下MSDN,才發現上面格式的字串是微軟體自己擴充出來的一種URI格式,即Pack URI.這種URI在WPF裡用得非常多,主要用來定位
資源檔,以及Xaml檔案等。
Pack URI主要是用於描述一個Package中所包含的組成單元。
1. Pack URI的主要文法
pack://authority/path
其中authority指這裡所指的Package的類型,而path主要指這裡所指的組成單元在Package中路徑。
WPF所支援的authority包括:application:/// 和 siteoforigin:/// :
前者主要用來描述在編繹時就已知的資源(比如:資源檔等被Project所引用的檔案在編繹時刻均已知),
而後者主要用來描述在編繹時無法確定其狀態的外部資源(比如:硬碟上的某個檔案,或者網格上的某個檔案)。
注意:在實際構建Pack URI的時需要將authority中所包含的"/"換成",". 因此 application:/// 應該為 application:,,,,siteoforigin:///類推。
2. Pack URI的用法
(1)表示當前Assembly中所引用的資源時,採用如下格式構建Pack URI
pack://application:,,,/(資源相對於Assembly所在目錄的相對路徑)
(2)表示當前Assemby所引用的其它Assembly所引用的資源時,採用如下格式構建Pack URI
pack://application:,,,/AssemblyShortName[;Version][;PublicKey];component/(資源相對於Assembly所在目錄的相對路徑)
(3)表示siteoforigin類型的資源時,採用如下格式構建Pack URI
pack://siteoforigin:,,,/(資源相對於當前執行的assembly所在位置的路徑)
3. Absolute pack URI and relative pack URI
以上所說的都是Absolute pack URI,格式包含schema://authority/path.字串比較長,寫起來不是很方便。
因此還有一種簡化版的relative pack URI,構造時只需要使用path即可。
注意:當表示當前Assembly中所引用的資源時,path需表示目標資源相對於當前路徑的相對路徑。在路徑前加"/"表示相對於Assembly的根目錄
原文地址:http://www.cnblogs.com/Code-life/archive/2012/10/08/2715930.html
【轉】【WPF】資源讀取 URI