kann man in C# eine Konsolenanwendung für den OSX mahen?

2 Antworten

Du brauchst eine in sich geschlossene Anwendung (self-contained application). Lies dazu hier: Publish self-contained (du kannst auch den Publish-Wizard nutzen: Rechtsklick auf dein Projekt > Publish).

Voraussetzung ist, dass deine Anwendung auf .NET Core basiert.

Palladin007  10.04.2022, 17:01

Liefert der Compiler dann auch eine auf MacOS direkt ausführbare Executable?
Self-contained meint ja nur, dass die Runtime selber mitgeliefert wird, aber nicht, wie das ausführbare Programm gestartet werden soll.
Ich hab's selber nie ausprobiert, deshalb frage ich.

Geht aber sicher auch ohne, indem man die Runtime selber irgendwo hin legt (oder mit kopiert) und z.B. ein Skript anbietet. Aber klar, wenn der Compiler das alles von selber liefert, wäre das natürlich besser.

Voraussetzung ist, dass deine Anwendung auf .NET Core basiert.

Davon kann man meine ich ausgehen, da der Fragestellt die dotnet-CLI nutzt :)

0
Palladin007  10.04.2022, 17:04
@Palladin007

PS:

Publish an app self-contained. A macOS 64-bit executable is created.

Wer lesen kann ist klar im Vorteil :D

1

Ich habe kein einziges OS von Apple, daher kann ich hier nicht direkt helfen, aber...

... es sollte doch eine Skript-API geben?
Also sowas wie die die Bash unter Linux oder Cmd oder Powershell unter Windows.

Die exe, die unter Windows vom C#-Compiler erstellt werden kann, ist ja am Ende nicht das Programm, sondern nur ein sehr einfaches Stück Code, was das eigentliche Programm (meist gleicher Name mit ".dll") sucht und anschließend die .NET-Runtime mit genau dieser Datei startet - vereinfacht ausgedrückt.
Im Detail habe ich nicht untersucht, was wirklich dahinter steckt, aber man kann so ein Programm - wie Du ja schon bemerkt hast - sehr einfach mit "dotnet x.dll" starten.

Wenn Du unter MacOS also ein direkt ausführbares Programm haben möchtest, kannst Du also prinzipiell jede Technologie nutzen, die Du möchtest, viel passiert da nicht.
Warum Microsoft sowas für den Mac nicht selber anbietet, weiß ich nicht - vielleicht hat Apple da irgendwelche Restriktionen, die Microsoft davon abhalten, sowas automatisch zu machen?

Oder Du entwickelst mit MacOS-eigenen Technologien ein kleines Programm, was genau das tut. Das könnte dann z.B. in eine Text-Datei daneben gucken und darin die Start-DLL lesen und ausführen, auf diese Weise musst Du nur wenig zusätzlich entwickeln, kannst es immer wieder benutzen und deine Schwester hat keine unnötige Komplexität über das Doppelklicken hinaus.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
Palladin007  10.04.2022, 17:03

PS:

Oder natürlich self-contained, wie regex9 schreibt.
Ich weiß nicht, ob der Compiler dann auch eine direkt ausführbare Datei liefert, aber selbst wenn nicht, ersparst Du dir damit das Problem, erst die .NET-CLI zu suchen oder vorher bereitzustellen, hast aber den Nachteil, dass die Runtime samt Framework komplett mitgeliefert werden muss, was durchaus eine Menge sein kann.

PPS:

Publish an app self-contained. A macOS 64-bit executable is created.

Wer lesen kann ist klar im Vorteil :D

0