2017-11-28 1 views
0

zu starten, ich kopierte diesen Code von der Microsoft-Website:Mono Compilation Fehler in C#

using System; 
namespace HelloWorld 
{ 
    class Hello 
    { 
     static void Main() 
     { 
      Console.WriteLine("Hello World!"); 

      // Keep the console window open in debug mode. 
      Console.WriteLine("Press any key to exit."); 
      Console.ReadKey(); 
     } 
    } 
} 

Dies wird gespeichert als HelloWorld.cs Dies alles schön und gut ist.

Das eigentliche Problem beginnt, wenn ich mit der Kompilierung beginne. Zuerst versuche ich mcs HelloWorld.cs verwendet, die diesen Fehler auftauchen:

bash: mcs: command not found 

wenn ich mono --aot HelloWorld.cs verwenden, ich diesen Fehler:

Cannot open assembly 'HelloWorld.cs': File does not contain a valid CIL image. 

einen RPI 3 unter Verwendung von Raspbian und Mono Runtime v2.0.50727 verwenden.

Wie kann ich dieses Programm kompilieren?

Debug von dem Versuch, mono-komplett zu installieren:

[email protected]:~ $ sudo apt-get install mono-complete 
    Reading package lists... Done 
    Building dependency tree  
    Reading state information... Done 
    Some packages could not be installed. This may mean that you have 
    requested an impossible situation or if you are using the unstable 
    distribution that some required packages have not yet been created 
    or been moved out of Incoming. 
    The following information may help to resolve the situation: 

    The following packages have unmet dependencies: 
    mono-complete : Depends: mono-runtime (= 5.4.1.6-0xamarin1+raspbian9b1) but 3.2.8+dfsg-10 is to be installed 
         Depends: mono-runtime-sgen (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-utils (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-devel (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-mcs (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-roslyn (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-csharp-shell (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-4.0-gac (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: mono-4.0-service (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: monodoc-base (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: monodoc-manual (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: libmono-cil-dev (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
         Depends: ca-certificates-mono (= 5.4.1.6-0xamarin1+raspbian9b1) but it is not going to be installed 
    mono-runtime : Depends: mono-runtime-sgen (= 3.2.8+dfsg-10) but it is not going to be installed 
    E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages. 

Antwort

0
  1. Der mcs Befehl wird nicht, wie die Fehlerzustände gefunden. Wahrscheinlich ist es entweder nicht installiert oder Ihre Umgebung PATH enthält nicht den Ordner, in dem es sich befindet, um es finden und ausführen zu können. Weitere Informationen über den Pfad einstellen: Mono Compiler is not working

  2. mono wird verwendet, kompilierte Programme zu laufen, so dass wird nicht funktionieren, werden Sie es kompilieren haben zuerst. C# -Code wird zuerst in eine Zwischensprachendarstellung kompiliert, die normalerweise als *.dll Dateien gespeichert wird, die Sie bereitstellen. Diese werden dann just-in-time (JIT) erneut kompiliert, wenn Sie sie tatsächlich mit dem Framework auf dem Server ausführen. Dadurch kann das Programm automatisch mit der genauen CPU-Architektur, auf der es ausgeführt wird, sowie mit allen erforderlichen Optimierungen kompatibel sein. Wenn Sie dies im Voraus (AOT) tun möchten, können Sie die kompilierte Ausgabe verwenden und das Flag --aot verwenden.

  3. Warum nicht .NET Core verwenden? Es ist die neueste Cross-Plattform-Rahmen und sollte gut auf dem Raspberry Pi, verwenden Sie diese Anweisungen auszuführen: https://github.com/dotnet/core/blob/master/samples/RaspberryPiInstructions.md

+0

1. Wie tf würden Sie herunterladen mcs – ReedsShorts

+0

2. Würden Sie nicht haben einen anderen Computer zu verwenden, um Run .NET Core und dann auf den Pi kopieren? Ich verwende nur das RPI. – ReedsShorts

+0

Wenn du das RPI selbst kompilierst, dann musst du bei Mono bleiben. Du hättest "mcs" bekommen sollen, als du Mono installiert hast, damit es nur das Dateisystem durchsucht, um zu sehen, wo es ist. Sonst ist hier ein Link zum direkten Download: http://www.mono-project.com/docs/about-mono/languages/csharp/#working-with-mcs –