2010-06-13 44 views
2

我有一個在我的WinXP機器上工作得很好的應用程序。但是,當我嘗試在我的Win7機器上運行它時,它會在嘗試加載嵌入資源時失敗。資源都在那裏(我可以看到他們使用反射器)。在Windows 7上加載嵌入的資源

失敗的線是所有形式:

Splash.Image = new Bitmap(typeof(ContainerForm).Assembly.GetManifestResourceStream("SplashTest.Resources.Logo.gif")); 

他們都失敗,並在相同的異常:

Exception='System.ArgumentException: Parameter is not valid. 
    at System.Drawing.Bitmap..ctor(Stream stream) 

我不明白爲什麼這不是對我的工作的Win7機器,但在我平時的WinXP開發機器上。

任何想法?

回答

1

這裏沒有很多可能的故障模式。如果無法找到資源,Assembly.GetManifestResourceStream()將返回null。這將使位圖構造函數失敗並顯示指定的異常。有一個bug的位,它應該拋出ArgumentNullException。

Anyhoo,它看起來像是由於某種原因程序集不能與您的XP機器上的位圖資源建立。用Ildasm.exe仔細檢查。雙擊Manifest,您應該看到帶有您要求的名稱的.mresource。

更好的鼠標陷阱是使用Project + Properties,Resources選項卡添加資源,單擊Add Resource按鈕上的箭頭,Add Existing File並導航到該文件。然後您可以直接通過自動生成的屬性來引用位圖:

Splash.Image = Properties.Resources.Logo;