[Mono-list] Mono 2.0 issues in Ubuntu - where is the problem and how will it be fixed?
ibboard at gmail.com
Fri May 11 18:48:06 UTC 2012
On 11/05/12 17:38, Atsushi Eno wrote:
> IBBoard wrote:
>> Someone in Ubuntu might have decided that GTK# for .Net 4.0 only might
>> have been a "feature" and hence not a bug when 2.0 apps won't work,
>> but it seems like a very badly planned and unnecessary change.
> That sounds wrong to me. Reasons:
> - ABI compatibility is supported only each of 2.0 and 4.0. No one
> (Microsoft or Mono) assured cross-ABI compatibility.
I'm writing C# 2.0 code as a LCD (WinXP users and people on older Linux
distros). C# 3.0 and 4.0 code are extensions of 2.0 - everything is new
and added, but backward compatible (as far as I've seen). Cross-ABI
compatibility seemed like half of the point. Java managed it across lots
of versions, and as a language with byte-code/CIL, it seems like half of
the point that you insulate apps against such things (unlike C/C++ that
can balk at the tiniest of API changes on Linux).
> - It is like Windows and .NET 1.1. People don't complain that Microsoft
> does not ship .NET 1.1 in the latest OSes. By not shipping 1.1, any 1.1
> apps could be broken like yours.
Really? I've got some .Net 1.1 apps, and the last I checked, they still
worked with .Net 2.0 and 3.5 installed.
Also, according to Hanselman (who is trustworthy, I believe) only 65% of
computers had .Net 3.5 in 2010
That'll have improved because of people upgrading and getting Windows 7,
but that is still by no means all of them. It also doesn't account for
Linux users and how many are using old versions of Mono. Why should I
cut out users unnecessarily and jump to 4.0 for an app with an already
small install base and no power to make people change their mind?
>> The script I have appears to work for now, but I'd prefer a better way
>> to detect when to add the fix to the command-line (something that does
>> feature detection rather than OS detection, and so will work across
>> derivatives and other OSes that go the same route). If anyone has any
>> suggestions or scripts then I'd be glad to hear them.
>> Recompiling for .Net 4 or rebuilding GTK# just for the sake of Ubuntu
>> just seems unnecessary.
> 2.0 will be deprecated and will vanish from mono later, like we killed
> 1.1 profile in the past. Building for 4.0 is absolutely the right
I'd like to use .Net 4 features and target it, but for what my app is,
saying "sorry, you need to download a big huge framework update" just
isn't a tenable position. One of my previous apps had enough rejections
in the days when .Net 2.0 was in a WinXP SP just because it was written
in .Net 1.1 (which was common) and people didn't want to get an extra
dependency that they didn't have for some reason.
> And this rather sounds like "I don't want to build 2.0 packages, so you
> build 2.0 packages for me instead" ...
No, it sounds like "my app is small, and rebuilding GTK# just for the
sake of Ubuntu is a waste of my time compared to working on features, as
well as being a likely cause of problems for me and upset users when
they either a) get confused by the extra "with GTK#" download or b) have
a larger download (that may or may not conflict with system libraries)
just because of a distro they don't use or c) hit bugs when my builds of
GTK# don't play nicely with theirs".
> Atsushi Eno
>> On 11 May 2012 09:00, Atsushi
>> Eno<atsushieno at veritas-vos-liberabit.com> wrote:
>>> To my understanding, Ubuntu does not support GTK# for .NET 2.0 based
>>> runtime, which is not a bug. You are trying to run an app with
>>> software components on an OS. If you want to use the feature that the OS
>>> does not provide, you'll have to provide that by yourself, like it
>>> make sense to bug Microsoft that WP7 does not ship with System.Data.
>>> (In other words, while .NET 2.0 could be the LCD, gtk# on .NET 2.0 is
>>> not .)
>>> I believe you could build and provide gtk# which is based on .NET 2.0
>>> profile. Putting package for public would help Ubuntu users. Or
>>> Ubuntu/Debian people may already have such packages apart from official
>>> repos. AFAIR there are some "2.0-cil" packages in Ubuntu.
>>> Atsushi Eno
>>> IBBoard wrote:
>>>> It appears there is a problem with running older .Net apps on the
>>>> versions of Ubuntu. If you compile for .Net 2.0 (perhaps because
>>>> that is
>>>> your lowest common denominator, because you are working
>>>> cross-platform and
>>>> you know some people will still be using WinXP without the huge .Net
>>>> updates) and run it on Ubuntu then you currently get an instant
>>>> crash with a
>>>> message like "Missing method System.Type::op_Inequality(Type,Type) in
>>>> assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly
>>>> It looks like this problem is quite prevalent and problematic
>>>> and the rest of Google). The two fixes people have are "recompile"
>>>> (only an
>>>> option if you're *only* targeting Ubuntu and want to use v4.0) or
>>>> "add the
>>>> --runtime=v4.0 switch" to force a 2.0 app to run as 4.0.
>>>> Based on the assembly mentioned in error and what I've picked up
>>>> am I right in understanding that this is a purely Ubuntu-caused problem
>>>> because GTK# is now build with the .Net 4.0-compatible compiler? Is
>>>> any way they can fix this, or are we stuck with it? And are there any
>>>> sensible and non-hackish ways to work around this in the meantime?
>>>> I'm working on my own Bash wrapper at the moment to fix this only when
>>>> but I'm sure there must be better ways to do it.
>>>> Mono-list maillist - Mono-list at lists.ximian.com
>>> Mono-list maillist - Mono-list at lists.ximian.com
> Mono-list maillist - Mono-list at lists.ximian.com
More information about the Mono-list