wince下GetManifestResourceStream獲得的Stream是null的解決

問題的引入

在編程過程當中遇到下面這樣一個問題:web

有這樣一個方法:編程

public static AlphaImage CreateFromResource(string imageResourceName)
{        
   MemoryStream stream =
        (MemoryStream)Assembly.GetCallingAssembly().GetManifestResourceStream(imageResourceName);
 
    return CreateFromStream(stream);
}

 

在調用的時候老是獲得stream是null.爲何呢?架構

看看咱們的調用和程序的架構:工具

bgPixBox.Image = AlphaImage.CreateFromResource("AlphaMobileControls35Test.Resources.Wallpaper.jpg");
 
 alphaPictureBox1.Image = AlphaImage.CreateFromResource("AlphaMobileControls3.5Test.Resources.Toolbar.png");
 
 btn1.BackgroundImage = AlphaImage.CreateFromResource("AlphaMobileControls3.5Test.Resources.Btn1.png");
 btn1.ActiveBackgroundImage = AlphaImage.CreateFromResource("AlphaMobileControls3.5Test.Resources.Btn1_Pushed.png");
 btn1.DisabledBackgroundImage = AlphaImage.CreateFromResource("AlphaMobileControls3.5Test.Resources.Btn1_Disabled.png");

 程序架構:spa

問題的解決方法

上面的方法本沒有錯,調用也徹底沒有錯,但是爲何就是不成功呢?你們看上面架構的項目名稱,默認的狀況下命名空間和項目名稱是同樣的,所以上面的調用就出錯了.解決方法法,把命名空間中帶」.」(點)的都去掉,這樣就ok。由於命名空間中帶點會讓上面的方法在找路徑時找不到。.net

總結

VB.Net中資源的名稱爲:項目默認命名空間.資源文件名插件

C#中則是:項目命名空間.資源文件所在文件夾名.資源文件名orm

用GetManifestResourceStream獲取的資源要保證包含在工程中,不包含在工程中即便在同一目錄下也沒用。包含在工程中之後把該文件的「屬性」中的「生成操做」改成「嵌入的資源」。就能夠用了xml

經過GetManifestResourceNames(好像是這個名字)把全部的名字都取出來,而後看看有沒有你要的。通常是Assembly名.類名.Manifest.Resource。htm

// 獲取當前類庫的程序集 Assembly assembly = Assembly.GetExecutingAssembly(); // 從程序集中讀取插件的菜單和工具欄配置信息(xml文件內容)TestPlugin.Properties.Resources Stream stream = assembly.GetManifestResourceStream(「資源文件名稱」);

上面的解決方案再wince中同樣可使用。

歡迎訪問個人另外一個站點: GetManifestResourceStream獲得的Stream是null的解決

相關文章
相關標籤/搜索