這兩天在SliverLight項目中碰到一個問題:項目中有一個XML文件,需要使用XMLReader將內容讀取出來,使用如下代碼:
Stream stream = this.GetType().Assembly.GetManifestResourceStream("SilverlightApplication2.XMLFile1.xml"); HtmlPage.Window.Alert((stream == null).ToString());
但是,奇怪的是返回的Stream總是空。
開始懷疑是命名空間的問題,將SliverlightApplication1.命名空間去掉,問題依舊存在。換了幾種獲取Assembly方式,問題還在,不知道到底是什麼問題。
打開客戶端IE臨時文件的XAP包,解壓縮出來,這個XML文件是存在的,爲什麼還是空呢?
接着用Linq to XML的寫法來測試,
XElement ele = XElement.Load("XMLFile1.xml"); HtmlPage.Window.Alert((ele == null).ToString());
卻是能夠讀到的。真是見鬼了。
後來總算查到Build Action" property should be set to " Embedded Resourse"。所以設置這個XML文件的Buid Action 爲Embedded Resource。再試,問題就解決了。看來還是對GetManifestResourceStream這個方法以及程序集的理解不到位。