我有一個包含TreeView的Windows窗體。樹視圖爲其項目中嵌入資源的節點具有圖像。在我的開發機器上運行表單時(Visual Studio內外),它運行良好,treenodes每個都有其正確的映像。在生產箱上運行時,窗口在嘗試加載嵌入的圖像時會出現錯誤。如果發生這種情況,我添加了不使用圖像的邏輯,以便樹仍然顯示,但我想弄清楚問題是什麼以及如何解決問題。嵌入式圖像的.NET問題
嘗試創建新位圖時,返回的錯誤消息是通用「參數無效」。堆棧跟蹤將「System.Drawing.Bitmap..ctor(Type type,String resource)」行作爲故障點。請參閱下面的代碼。
ImageList imageListNodes = new ImageList();
Bitmap mIcon;
mIcon = new Bitmap(this.GetType(), "m2.ico"); // This is the line that fails.
imageListNodes.Images.Add("m", (Image)mIcon);
tvRecords.ImageList = imageListNodes; // This is the treeview used in the form.
文件m2.ico已直接添加到項目中。它的屬性包括Build Action = Embedded Resource,以及Copy to Output Directory =不復制。
我的開發計算機運行的是Windows 7,而且生產環境爲Windows Server 2003 SP2。該項目是在.NET 3.5中,他們都有。這種形式可以在不同的客戶端機器上使用,所以它應該能夠在Server 2003中運行起來。
感謝您的任何建議!
編輯: 在幾分鐘內,並且已經建議此設置根本不起作用。我在上面指出,這在我的電腦上都可以在Visual Studio調試模式下使用,並且可以在自己的電腦上調用。圖標文件本身在網絡共享上關閉,因此DLL無法將其拉入;文件必須正確嵌入,並且位圖/圖標轉換必須正常工作,否則在我的機器上根本無法工作。
我很欣賞這些建議,並且我願意嘗試其他方法來實現相同的目標,但請注意,我最初的問題至少是爲什麼這在我的計算機上運行,而不是另一個。謝謝!
使用ILspy或反射器檢查生成的exe文件以查看資源是否實際位於部署的程序集中。 –