[Mono-winforms-list] Porting Windows .NET 4 WinForm Application To *NIX With Mono - Unexpected binary element 0

Stifu stifu at free.fr
Thu Jan 12 15:09:22 EST 2012


It sounds like a Mono ResourceManager bug to me.
I reported a bug that sounds similar a little while ago:
http://bugzilla.xamarin.com/show_bug.cgi?id=749

In my case, I found out a workaround: adding the file to the project, and
setting it as embedded resource, rather than using an resx file.


plaid wrote
> 
> I have a WinForms program ported from .NET 1.1 to .NET 4 (Full Profile)
> compiled as an x86 project within Visual Studio 2010 Ultimate on Windows 7
> 64-bit.
> 
> It has a combination of VB, C#, ASP.NET (Web Service ported to WCF) and as
> well connects to SQL.
> 
> --------------------------------------------------------------------------------------------------------
> 
> I've installed a VM of openSUSE 11.4 (both 32-bit and 64-bit) with the
> latest repository of Mono (2.10.6 and 2.10.2 respectively).
> 
> I've also installed the packages for
> libgdiplus0
> mono-basic (mono-data, mono-data-sqlite, mono-web, mono-winforms)
> mono-wcf (mono-extras, mono-mvc)
> 
> and eventually found I also needed
> mono-locale-extras
> 
> as well as the necessity to use
> ln -s ~/.kde4 ~/.kde
> and
> export MONO_MWF_SCALING=disable
> 
> in order to get past my initial errors.
> 
> --------------------------------------------------------------------------------------------------------
> 
> Now, when I try to run my application it is failing out before loading the
> UI with the error:
> 
> System.Runtime.Serialization.Serialization Exception: Unexpected binary
> element: 0
> at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject
> ...
> at System.Resources.ResourceManager.GetObject(System.String name)
> at MyNameSpace.MyForm.InitializeComponent()
> ...
> 
> After some debugging I realized it was from it not being able to load the
> resources for neither a PictureBox I have on the opening form nor the Icon
> I have set on the Form.
> 
> --------------------------------------------------------------------------------------------------------
> 
> in InitializeComponent() the code dealing with this error should be
> 
> Dim resources As System.Resources.ResourceManager = New
> System.Resources.ResourceManager(GetType(MyForm))
> ...
> Me.pict.Image = CType(resources.GetObject("pict.Image"),
> System.Drawing.Image)
> ...
> Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
> 
> --------------------------------------------------------------------------------------------------------
> 
> In the .resx file, they are listed as
> 
>   <data name="pict.Image" type="System.Drawing.Bitmap, System.Drawing,
> Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
> mimetype="application/x-microsoft.net.object.bytearray.base64">
> ....
> 
>   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing,
> Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
> mimetype="application/x-microsoft.net.object.bytearray.base64">
> ...
> 
> --------------------------------------------------------------------------------------------------------
> 
> Am I missing something here?
> 
> Just as a curiousity I replaced the pict.Image line with a Shared Function
> I use in other places to swap in and out embedded resources of images
> which looks something like
> 
>     Public Shared Function GetBMPImage(ByVal name As String) As Bitmap
>         GetBMPImage = Nothing
>         Dim stream As IO.Stream
>         Try
>             Dim execAssembly As Reflection.Assembly =
> Reflection.Assembly.GetExecutingAssembly
>             stream =
> execAssembly.GetManifestResourceStream(String.Concat(GetType(MyForm).Namespace,
> ".", name, ".bmp"))
>             GetBMPImage = New Bitmap(stream)
>         Catch err As Exception
>             'TODO: Err Handling
>         Finally
>         End Try
>     End Function
> 
> and commented out the Me.Icon line
> 
> ...The form loaded with the Image I used and I was able to use that form
> properly until it tried to open another Form which has the same problem...
> 
> I must have missed something simple here cause I can't imagine this is a
> default issue with Mono, right?
> 
> Any responses would be appreciated.
> 
> Ars Longa, Vita Brevis.
> 


--
View this message in context: http://mono.1490590.n4.nabble.com/Porting-Windows-NET-4-WinForm-Application-To-NIX-With-Mono-Unexpected-binary-element-0-tp4289685p4290287.html
Sent from the Mono - WinForms mailing list archive at Nabble.com.


More information about the Mono-winforms-list mailing list