windows - .NET/Mono rammer targetting

Indlæg af Hanne Mølgaard Plasc

Problem



Antag, at jeg har 2 maskiner, en maskine med MS-vinduer med .NET 4.0 og den anden starter en Linux-maskine med Mono 2.10.1

Nu opretter jeg en kommandolinjeprogram på de respektive maskiner, der udsender den installerede rammeversion ved hjælp af:


Console.WriteLine(Environment.Version);  


Spørgsmål 1


Er min antagelse korrekt, at følgende skal vises:

Windows: 4.0.30319.1

Linux: 2.10.1 (eller noget lignende ??)


Spørgsmål 2

Forudsat at vi har både mono og ms.net installeret på en Windows-maskine, er der en måde at angive, at en exe skal køre på monorammen i Windows? (måske en config-fil?)


Spørgsmål 3

Hvis jeg udarbejder en (simpel) mono-applikation på en linux-maskine, vil det kompilerede exe-arbejde på en Windows-maskine med kun ms.net installeret?

Bedste reference


Opdater



  • Spørgsmål 1 (test.cs nedenfor
    Console.WriteLine(Environment.Version);  
    
    ), testet på linux:



.


mono.2.6.7 $ ./test.exe 
2.0.50727.1433
$ source custom/MONO/devenv.sh 
mono.2.11 $ dmcs test.cs
mono.2.11 $ ./test.exe 
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v1.1.4322
1.1.4322.2032
mono.2.11 $ mono ./test.exe 
4.0.30319.1
mono.2.11 $ 



  • Spørgsmål 2


    Du kan lave en batchfil for at påberåbe mono.exe myapplication. Se i\% PROGRAMFILES\% \ Mono 2.10 \ bin for mange eksempler

  • Spørgsmål 3
    Jep



For kompatibilitet tjek den anden vej (se efter implementeringsstubs, manglende P/Invoke-funktionalitet osv.) Der er MoMa-værktøjet [5]





test.cs


using System;

namespace X 
{ 
  class Y 
  {
    public static int Main(string[] args)
    {
      Console.WriteLine(Environment.Version);
      return 0;
    }
  } 
}

Andre referencer 1


annonce Spørgsmål 1: Du bør forvente, at versionen af ​​Runtime, ikke af Mono

Andre referencer 2


Til spørgsmål 2: Du kan standard runtime til mono på Windows miljø til Xamarin Studio.


Du kan mono køre tid herfra:


Xamarin Studio => Værktøjer => Indstillinger => Projekter => .NET Runtimes => Tilføj (tilføj mono her)


og marker mono som standard runtime.