Using mono-2.0 [was Re: [MonoDevelop] Import Visual Studio .NET Projects]

Dean Brettle dean@brettle.com
Wed, 16 Mar 2005 09:57:53 -0500


On Wed, 2005-03-16 at 00:57 -0800, Todd Berman wrote:
> On Tue, 2005-03-15 at 23:36 -0500, Dean Brettle wrote:
> > On Tue, 2005-03-15 at 10:21 -0800, Todd Berman wrote:
<snip>
> > As a first pass, would you accept a patch that uses an
> > env var (say MONODEVELOP_USE_MONO2) to determine whether to use gmcs+2.0
> > assemblies?
> 
> No. I would rather see it done right once without the hack, and the
> potential for the hack to be more permanent than you thought.

OK.

> 
> > In the long run, perhaps it should be a project configuration option.
> > However that looks like a considerably larger task.  Looks like it would
> > require:
> 
> It should be a project configuration option.
> 
> > 1. changing .prjx schema to remove version info for GAC refs and add
> > per-configuration attrs controlling mono-1.0 vs mono-2.0.
> 
> This isnt needed at all, or acceptable. You should (via the GUI) allow
> one or the other, and for MONO-SYSTEM dlls, when the project option
> changes, you change the references.

Sorry, I wasn't clear.  I meant a *per-configuration* project option.
The idea would be that you could have a Debug-Mono-1.0 config and a
Debug-Mono-2.0 config.  The references (and more importantly their
versions) are currently specified project-wide, so I think the .prjx
format would need to change to handle that.

Thoughts?

> 
> > 2. removing ref version info from the Edit References GAC tab 
> 
> Just don't show the references that match to the other set, removing ref
> version info is bad, and will not be accepted.

Again, I was thinking of a per-configuration project option.  It wasn't
clear what version info to show in that case.  I thought showing the
version info for only the active config might be confusing.

<snip>
> > 4. adding an option to the project config options to select mono-2.0 vs
> > mono-1.0.
> 
> This is the important bit, the rest of the gui changes just hinge on
> this one being correct.
> 
> However, in order to be forward thinking, instead of serializing this as
> a bool, we might want to use something more flexible. Just something to
> think about.

Agreed.  I was thinking a "targetRuntime" enum.  Initial valid values
would be "mono-1.0" and "mono-2.0".  Sound right?

> > 
> > Also, I'd appreciate any info on differences beteen gmcs usage and mcs
> > usage?  "gmcs --help" and "mcs --help" produce almost identical results.
> > 
> 
> There are none (that I know of)

FYI, I tried using gmcs and, IMO, it is still too unstable for
widespread use.  I ran into a number of bugs that were specific to gmcs.
How confident are you that it is wrong to compile with mcs when
targeting mono-2.0?  Who would know for sure?

--Dean