这两天在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这个方法以及程序集的理解不到位。