Kann ich .NET C # -Code auf meinem Mac kompilieren?


22

Ich brauche eine Möglichkeit, einen kurzen Teil des .NET C # -Codes in eine DLL zu kompilieren, die dann die Windows-Umgebung eines Clients ausführt.

Ich führe OS X 10.9.2 auf einem iMac aus.

Weiß jemand, welche Tools dies ermöglichen?

Ich würde Parallels und Windows lieber nicht installieren, wenn ich einen Weg finden könnte, dies zu kompilieren, ohne eine so umfangreiche Installation von Microsoft-Tools zu benötigen.

Antworten:


21

Schauen Sie sich das Mono-Projekt an. Vielleicht ist es das, wonach Sie suchen.

http://www.mono-project.com/Mono:OSX

MonoDevelop ist eine plattformübergreifende IDE, die hauptsächlich für C # und andere .NET-Sprachen entwickelt wurde. MonoDevelop ermöglicht Entwicklern das schnelle Schreiben von Desktop- und ASP.NET-Webanwendungen unter Linux, Windows und Mac OSX. Mit MonoDevelop können Entwickler mit Visual Studio erstellte .NET-Anwendungen problemlos auf Linux und Mac OSX portieren und dabei eine einzige Codebasis für alle Plattformen beibehalten.


monodevelop.com MonoDevelop ist eine plattformübergreifende IDE, die hauptsächlich für C # und andere .NET-Sprachen entwickelt wurde. MonoDevelop ermöglicht Entwicklern das schnelle Schreiben von Desktop- und ASP.NET-Webanwendungen unter Linux, Windows und Mac OSX. Mit MonoDevelop können Entwickler mit Visual Studio erstellte .NET-Anwendungen problemlos auf Linux und Mac OSX portieren und dabei eine einzige Codebasis für alle Plattformen beibehalten. - Wenn Sie Ihren Code mit MonoDevelop nicht korrekt kompilieren können, haben Sie möglicherweise keine andere Wahl, als eine VM auszuführen.
Ebene 42

Thx, ich habe mir Mono angesehen, aber während es funktionieren sollte, habe ich keine klare Anleitung gefunden, um es entweder zu installieren oder zu verwenden.
Jagra

1
@Jagra Hier gibt es ein paar Tutorial-Videos: youtube.com/results?search_query=monodevelop+install+mac
level42

1
Um jeden Zweifel auszuräumen: Ja , wenn Sie eine DLL unter Mono kompilieren, läuft diese unter Windows ohne Änderungen, da Sie keine bestimmten Mono-Bibliotheken wie Mono.Addin oder Mono.Simd verwenden. Es geht auch in beide Richtungen - eine in Visual Studio kompilierte DLL / EXE wird in Mono unverändert ausgeführt, da Sie keine bestimmten Microsoft / Windows-Bibliotheken wie WPF, Workflow Foundation, COM + usw. verwenden.
NothingsImpossible

1
@Jagra: Sobald Sie Mono (und MonoDevelop, wenn Sie möchten) von go-mono.com/mono-downloads/download.html installiert haben , ist die Verwendung sehr einfach. Auch ohne MonoDevelop sollten Sie in der Lage sein, die meisten SLN-Projekte direkt aus Visual Studio mit zu kompilieren xbuild.
Jwosty

8

Wenn Sie einen Mac haben, können Sie C # folgendermaßen kompilieren:

Kompilieren: mcs fileName.cs
Ausführen:mono fileName.exe

Wenn Sie Mono nicht auf Ihrem Mac installiert haben , können Sie es googeln und installieren, und dann können Sie loslegen. Sie brauchen dazu kein Windows.


5

Sie können es mit Homebrew installieren :

brew install mono

Dann können Sie es verwenden mit:

mcs hello.cs
mono hello.exe



1

Kann ich .NET C # -Code auf meinem Mac kompilieren?

Sie können C # -Code ja kompilieren.

Ich würde Parallels und Windows lieber nicht installieren, wenn ich einen Weg finden könnte, dies zu kompilieren, ohne eine so umfangreiche Installation von Microsoft-Tools zu benötigen.

Mono ist nicht 100% kompatibel mit der .NET-Implementierung.

Die Common Language Infrastructure (CLI) ist ein Framework zum Ausführen von verwaltetem Code. Die CLI besteht aus mehreren Teilen, darunter ein Virtual Execution System (VES). .NET's VES ist die Common Language Runtime. Mono hat eine eigene, separate VES-Implementierung.

Mit anderen Worten, Sie sollten zumindest nicht damit rechnen, Code auszuführen, der nur in einer * nix / OSX-Umgebung getestet wurde, ohne ihn in einer Windows-Umgebung zu testen .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.