Eto: Mac - Mono 6.4 fĂŒhrt alle Apps aus, höhere Mono-Versionen nicht

Erstellt am 28. MĂ€rz 2020  Â·  21Kommentare  Â·  Quelle: picoe/Eto

Alle Mac-Apps, die ich bisher entwickelt habe, funktionieren nach dem Upgrade von Mono auf 6.6 nicht mehr (gleiches Problem mit 6.8).

Das ZurĂŒcksetzen auf eine frĂŒhere Installation von Mono 6.4 behebt das Problem.

Meine Apps kompilieren gegen TargetFramework net461 (Mac-Einstiegspunkt) und netstandard2.0 (gemeinsame DLL), falls es darauf ankommt.

Der Fehler dĂŒrfte wie immer bei mir liegen.

Vielen Dank fĂŒr Ihre Geduld.

Alle 21 Kommentare

Hey @LaraSQP , danke fĂŒr die Berichte, aber es wĂ€re wirklich hilfreich, wenn Sie Details wie die tatsĂ€chliche Ausnahme (ĂŒberprĂŒfen Sie Console.app) und das, was Sie versucht haben,

Beachten Sie auch, dass beim Kompilieren fĂŒr _release_, wenn Mono auf Ihrer Entwicklerbox installiert ist, Mono in Ihrer App gebĂŒndelt wird, sodass Mono nicht installiert werden muss, um Ihre App _auszufĂŒhren_. Dadurch wird es so, dass Sie eine bekannte Laufzeit haben. Alternativ können Sie stattdessen .NET Core verwenden und es in Ihrer App bĂŒndeln (dafĂŒr muss mono nicht installiert sein).

Danke fĂŒr die schnelle Antwort.

Wusste nichts von Console.app und wird die Ausnahme melden.

Wusste auch nicht, wie man Mono unter Windows installiert. Verdammte Sache. Welches Installationsprogramm gilt? 64-Bit (kein GTK#) oder brauche ich auch GTK#?

GTK# wird nicht benötigt, es verwendet nur mkbundle zum BĂŒndeln von Mono, was es mit der Eigenschaft <MacBundleTarget> in Ihrem csproj tut. Der Standardwert ist mono-6.4.0-osx-10.9-x64 wenn nicht angegeben, und kann ein beliebiger Wert sein, der in mkbundle -list-targets

In Bezug auf Console.app habe ich nur zwei Fehler, die (zumindest fĂŒr mich) ziemlich informativ sind:

29. MĂ€rz 06:19:01 my-MacBook-Air com.apple.xpc.launchd[1] (com.apple.xpc.launchd.oneshot.0x1000015e.MyApp1[10705]): Dienst mit abnormalem Code beendet: 78

29. MĂ€rz 06:40:29 my-MacBook-Air com.apple.xpc.launchd[1] (com.example.MyApp1.4212[11362]): Dienst mit abnormalem Code beendet: 1

Ich versuche jetzt, mit installiertem Mono neu zu kompilieren.

@LaraSQP Schauen Sie sich den Abschnitt "

"Absturzberichte" ist leer.

Übrigens, ich habe Mono 6.8 installiert und sehe nicht das gleiche Problem.

Screen Shot 2020-03-28 at 3 30 34 PM

Eine Sache, die Sie beachten sollten, ist, dass, wenn Sie Info.plist in irgendeiner Weise modifiziert haben (von einem Ihrer anderen Probleme), dass es _nur LF, UTF-8 _ohne BOM_ und nicht CRLF sein muss. Es wird davon ausgegangen, dass es sonst beschÀdigt ist.

Info.plist wurde von npp geÀndert.

Ich habe Mono auf meinem Entwicklungscomputer installiert, aber die Neukompilierung fĂŒgt Mono nicht zum Bundle hinzu. Was vermisse ich?

Im Release-Modus tut es dies standardmĂ€ĂŸig. Andernfalls setzen Sie <MacBundleMono> in csproj auf true.

Sehen Sie sich Mac.targets fĂŒr die verschiedenen Eigenschaften an, die Sie festlegen können.

Ich hoffe, diese Optionen zu den VS-Projekteigenschaften hinzuzufĂŒgen, um sie in Zukunft leichter zu entdecken, aber leider so wenig (freie) Zeit dafĂŒr.

Das HinzufĂŒgen von <MacBundleMono>True</MacBundleMono> zu csproj tut dies nicht.

Es sei denn, es tut es auf eine Weise, die fĂŒr mich nicht offensichtlich ist.

OK.

Es stellt sich heraus, dass ein MonoBundle-Ordner nur dann in der App enthalten ist, wenn MacBundleMono auf False .

Außerdem wird Info.plist durch den Build-Prozess geĂ€ndert, um sowohl UTF-8 BOM als auch CRLF , sodass sie anschließend manuell korrigiert werden mĂŒssen.

Außerdem wird Info.plist durch den Build-Prozess so geĂ€ndert, dass sowohl UTF-8 BOM als auch CRLF enthalten sind, sodass sie anschließend manuell korrigiert werden mĂŒssen.

Dies sollte nicht der Fall sein. Könnten Sie Ihre Info.plist-Datei anhÀngen, die Sie verwenden (nicht die kompilierte).

Es stellt sich heraus, dass ein MonoBundle-Ordner nur dann in der App enthalten ist, wenn MacBundleMono auf False gesetzt ist.

Ja, ein MonoBundle-Ordner bedeutet nicht, dass Mono gebĂŒndelt ist. Seltsamerweise bedeutet das Fehlen dieses Ordners, dass Mono "gebĂŒndelt" ist und alles in der nativen ausfĂŒhrbaren Datei enthalten ist.

MacBundleMono ist eine BĂŒste. Mono ist auf keinen Fall enthalten.

Und jede Version von Mono ĂŒber 6.4.0.137 bringt meine Apps weiterhin zum Absturz.

Ich werde spÀter auf die Build-Ziele eingehen.

Vielen Dank fĂŒr Ihre Geduld.

Erhalten Sie diese Warnung immer noch beim Bauen?

Couldn't find mkbundle, so app bundle will require mono to be installed! Install mono from https://mono-project.com to bundle it with your app or set MonoPath to where it is installed.

Wenn dies der Fall ist, mĂŒssen Sie möglicherweise einen Neustart durchfĂŒhren oder mit <MonoPath> speziell auf den Ort verweisen, an dem mono installiert wurde.

Könnten Sie mir auch die dmg Ihrer App schicken (vorausgesetzt, Sie sind dazu bereit?). Ich könnte versuchen, es weiter zu diagnostizieren.

Ich erhalte keine Warnung zu mkbundle also versuche ich es als nÀchstes mit MonoPath .

Im Anhang ist ein einfaches Projekt, mit dem ich dies und das getestet habe. Es startet nicht einmal ĂŒber Mono 6.4 auf dem Mac und es gibt keinen Absturzbericht in Console.app

MacFileTest.zip

Ich hatte Mono zu environment variables hinzugefĂŒgt, so dass mkbundle problemlos zugĂ€nglich ist. MonoPath ist hier nicht das Problem.

TatsĂ€chlich konnte ich mkbundle manuell ĂŒber...

mkbundle --simple --cross mono-6.4.0-osx-10.9-x64 MacFileTest.exe -o MacFileTest

... was erfolgreich zu sein schien, außer dass es nicht auf dem Mac lĂ€uft.

Da es in meinem Projekt (oben) keinen Hinweis auf mkbundle , ist es offensichtlich, dass ich eine ganze Menge ĂŒbersehe.

Mein letzter Beitrag scheint es nicht geschafft zu haben, oder ich kann ihn nicht finden oder er wurde irgendwie gelöscht.

Erstens hat die Verwendung von netcoreapp3.1 das Problem tatsÀchlich behoben. Ich danke dir sehr.

Ich habe Mono deinstalliert und alle Apps laufen jetzt auf net core . Ich bin etwas ĂŒberrascht, da der Befehl dotnet in den Terminal rĂŒlpst:

zsh: Befehl nicht gefunden: dotnet

Denke, das eine hat nichts mit dem anderen zu tun (?).

Es bleiben noch zwei kleine Probleme, ĂŒber die Sie vielleicht Bescheid wissen möchten:

  1. Der Build-Prozess umfasst immer eine .pdb Datei im MacOS Ordner des Bundles.

  2. Der Build-Prozess Ă€ndert Info.plist , um einen CFBundleExecutable SchlĂŒssel einzuschließen, wobei der vorhandene SchlĂŒssel, falls vorhanden, dupliziert wird. Dies fĂŒhrt dazu, dass sowohl BOM als auch CRLF eingeschlossen werden, obwohl sie im ursprĂŒnglichen Info.plist im Projekt nicht vorhanden sind.

Der Workaround fĂŒr diese beiden Probleme ist eine einfache Batch-Datei zum Löschen von 1 und Ersetzen von 2, die leider manuell ausgefĂŒhrt werden muss, da sie nicht zu den post-build events hinzugefĂŒgt werden kann, da sie trotz post-build noch zu frĂŒh ausgefĂŒhrt wird , Soweit ich sagen kann.

Nochmals vielen Dank fĂŒr Ihre unendliche Geduld.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen