私がこれまでに開発したすべてのMacアプリは、Monoを6.6にアップグレードした後、動作を停止しました(6.8でも同じ問題)。
Mono 6.4の以前のインストールに戻すと、問題が修正されます。
私のアプリは、重要な場合に備えて、 TargetFramework net461
(Macエントリポイント)とnetstandard2.0
(共有dll)に対してコンパイルされます。
いつものように、エラーは私のものである可能性があります。
お待ちいただいてありがとうございます。
@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をインストールしましたが、同じ問題は発生していません。
考慮すべきことの1つは、Info.plistを何らかの方法で(他の問題の1つから)変更した場合、CRLFではなくLFのみ、UTF-8はBOMなしである必要があるということです。 それ以外の場合は破損していると見なされます。
Info.plist
はnppによって変更されました。
開発マシンにMonoをインストールしましたが、再コンパイルしてもMonoがバンドルに追加されません。 何が足りないのですか?
リリースモードでは、デフォルトでそれを行います。 それ以外の場合は、csprojで<MacBundleMono>
をtrueに設定します。
設定できるさまざまなプロパティについては、 BundleMono.targetsとMac.targetsを
これらのオプションをVSプロジェクトのプロパティに追加して、将来それらを見つけやすくしたいと思っていますが、残念ながら、そうする時間はほとんどありません。
csprojに<MacBundleMono>True</MacBundleMono>
を追加しても、それは行われません。
それが私には明らかでない方法でそれをしない限り、それはそうです。
わかった。
MacBundleMono
がFalse
設定されている場合にのみ、MonoBundleフォルダーがアプリに含まれることがわかります。
また、 Info.plist
はビルドプロセスによって変更され、 UTF-8 BOM
とCRLF
両方が含まれるため、後で手動で修正する必要があります。
また、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にクラッシュレポートはありません。
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つの小さな問題が残っています:
ビルドプロセスには、バンドルのMacOS
フォルダー内に常に.pdb
ファイルが含まれます。
ビルドプロセスは常にInfo.plist
を変更して、 CFBundleExecutable
キーを含め、既存のキーが存在する場合はそれを複製します。 これにより、プロジェクトの元のInfo.plist
に存在していなくても、 BOM
とCRLF
両方が含まれることになります。
回避策は、両方のこれらの問題は、それがに追加することはできませんので、残念ながら手動で実行する必要があることを、2を1を削除し、交換する簡単なバッチファイルでpost-build events
であるにもかかわらずためにpost-build
それはまだ早すぎる動作します、 私の知る限り。
何卒ご理解とご協力を賜りますようお願い申し上げます。