Eto: Mac-Mono 6.4はすべてのアプリを実行しますが、Mono以降のバージョンは実行しません

作成日 2020年03月28日  ·  21コメント  ·  ソース: picoe/Eto

私がこれまでに開発したすべてのMacアプリは、Monoを6.6にアップグレードした後、動作を停止しました(6.8でも同じ問題)。

Mono 6.4の以前のインストールに戻すと、問題が修正されます。

私のアプリは、重要な場合に備えて、 TargetFramework net461 (Macエントリポイント)とnetstandard2.0 (共有dll)に対してコンパイルされます。

いつものように、エラーは私のものである可能性があります。

お待ちいただいてありがとうございます。

全てのコメント21件

@LaraSQPさん、レポートに感謝しますが、実際の例外(Console.appを確認)や試したことなどの詳細を含めると非常に役立ちます。

また、開発ボックスにmonoをインストールして_release_用にコンパイルすると、アプリ内にmonoがバンドルされるため、アプリを_run_するためにmonoをインストールする必要がないことに注意してください。 これにより、既知のランタイムが得られます。 または、代わりに.NET Coreを使用して、アプリにバンドルします(これを行うためにmonoをインストールする必要はありません)。

迅速な返信ありがとうございます。

Console.appについて知らなかったため、例外が報告されます。

WindowsへのMonoのインストールについても知りませんでした。 くそったれ。 どのインストーラーが適用されますか? 64ビット(GTK#なし)またはGTK#も必要ですか?

GTK#は必要ありません。モノをバンドルするためにmkbundleのみを使用します。これは、csprojの<MacBundleTarget>プロパティを使用して行います。 指定しない場合、デフォルトでmono-6.4.0-osx-10.9-x64になり、 mkbundle -list-targetsリストされている任意の値にすることができます。

Console.appに関しては、(少なくとも私にとっては)まったく情報がない2つのエラーしかありません。

3月29日06:19:01my-MacBook-Air com.apple.xpc.launchd [1](com.apple.xpc.launchd.oneshot.0x1000015e.MyApp1 [10705]):サービスが異常なコードで終了しました:78

3月29日06:40:29my-MacBook-Air com.apple.xpc.launchd [1](com.example.MyApp1.4212 [11362]):サービスが異常なコードで終了しました:1

Monoをインストールして再コンパイルしようとしています。

@LaraSQP 「クラッシュレポート」セクションを

「クラッシュレポート」は空です。

ところで、mono 6.8をインストールしましたが、同じ問題は発生していません。

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

考慮すべきことの1つは、Info.plistを何らかの方法で(他の問題の1つから)変更した場合、CRLFではなくLFのみ、UTF-8はBOMなしである必要があるということです。 それ以外の場合は破損していると見なされます。

Info.plistはnppによって変更されました。

開発マシンにMonoをインストールしましたが、再コンパイルしてもMonoがバンドルに追加されません。 何が足りないのですか?

リリースモードでは、デフォルトでそれを行います。 それ以外の場合は、csprojで<MacBundleMono>をtrueに設定します。

設定できるさまざまなプロパティについては、 BundleMono.targetsMac.targets

これらのオプションをVSプロジェクトのプロパティに追加して、将来それらを見つけやすくしたいと思っていますが、残念ながら、そうする時間はほとんどありません。

csprojに<MacBundleMono>True</MacBundleMono>を追加しても、それは行われません。

それが私には明らかでない方法でそれをしない限り、それはそうです。

わかった。

MacBundleMonoFalse設定されている場合にのみ、MonoBundleフォルダーがアプリに含まれることがわかります。

また、 Info.plistはビルドプロセスによって変更され、 UTF-8 BOMCRLF両方が含まれるため、後で手動で修正する必要があります。

また、Info.plistはビルドプロセスによって変更され、UTF-8 BOMとCRLFの両方が含まれるため、後で手動で修正する必要があります。

これは当てはまらないはずです..使用しているInfo.plistファイル(コンパイルされたファイルではない)を添付できますか?

MacBundleMonoがFalseに設定されている場合にのみ、MonoBundleフォルダーがアプリに含まれることがわかります。

はい、MonoBundleフォルダーは、monoがバンドルされていることを意味しません。奇妙なことに、このフォルダーがないということは、monoが「バンドルされている」ことを意味し、すべてがネイティブ実行可能ファイルに含まれています。

MacBundleMonoはバストです。 モノは何があっても含まれていません。

また、6.4.0.137を超えるMonoのバージョンは、引き続きアプリをクラッシュさせます。

ビルドターゲットについては後で調べます。

お待ちいただいてありがとうございます。

ビルド時にまだこの警告が表示されますか?

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.

その場合は、再起動するか、 <MonoPath>を使用してmonoがインストールされた場所を具体的に指定する必要があります。

また、アプリのdmgを送っていただけませんか(そうする意思があると仮定しますか?)。 私はそれをさらに診断しようとすることができました。

mkbundleに関する警告が表示されないので、次にMonoPath試してみます。

添付されているのは、私がこれとあれをテストするために使用した単純なプロジェクトです。 MacのMono6.4より上では起動せず、Console.appにクラッシュレポートはありません。

MacFileTest.zip

environment variablesにMonoを追加したので、 mkbundle問題なくアクセスできます。 MonoPathはここでは問題ではありません。

実際、私はmkbundle手動で実行することができました...

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

... Macで動作しないことを除けば、成功したようです。

私のプロジェクト(上記)にはmkbundleへの参照がないので、私が多くを見逃していることは明らかです。

前回の投稿でうまくいかなかったか、見つからなかったか、なんらかの理由で削除されたようです。

まず、 netcoreapp3.1実際に問題が修正されました。 どうもありがとう。

Monoをアンインストールすると、すべてのアプリがnet core実行されるようになりました。 Terminalげっぷのコマンドdotnet以来、私は少し驚いています。

zsh:コマンドが見つかりません:dotnet

あることが他のこととは関係がないと思います(?)。

あなたが知りたいと思うかもしれない2つの小さな問題が残っています:

  1. ビルドプロセスには、バンドルのMacOSフォルダー内に常に.pdbファイルが含まれます。

  2. ビルドプロセスは常にInfo.plistを変更して、 CFBundleExecutableキーを含め、既存のキーが存在する場合はそれを複製します。 これにより、プロジェクトの元のInfo.plistに存在していなくても、 BOMCRLF両方が含まれることになります。

回避策は、両方のこれらの問題は、それがに追加することはできませんので、残念ながら手動で実行する必要があることを、2を1を削除し、交換する簡単なバッチファイルでpost-build eventsであるにもかかわらずためにpost-buildそれはまだ早すぎる動作します、 私の知る限り。

何卒ご理解とご協力を賜りますようお願い申し上げます。

このページは役に立ちましたか?
0 / 5 - 0 評価