Eto: Mac - يعمل Mono 6.4 على تشغيل جميع التطبيقات ، بينما لا تعمل الإصدارات الأعلى من Mono

تم إنشاؤها على ٢٨ مارس ٢٠٢٠  ·  21تعليقات  ·  مصدر: picoe/Eto

توقفت جميع تطبيقات Mac التي قمت بتطويرها حتى الآن عن العمل بعد ترقية Mono إلى 6.6 (نفس المشكلة مع 6.8).

تؤدي العودة إلى تثبيت سابق لـ Mono 6.4 إلى إصلاح المشكلة.

يتم تجميع تطبيقاتي مقابل TargetFramework net461 (نقطة دخول Mac) و netstandard2.0 (dll المشترك) في حال كان ذلك مهمًا.

كما هو الحال دائمًا ، من المحتمل أن يكون الخطأ لي.

شكرا لك على صبرك.

ال 21 كومينتر

مرحبًا LaraSQP ، شكرًا على التقارير ، ولكن من المفيد حقًا تضمين تفاصيل مثل الاستثناء الفعلي (تحقق من تطبيق Console.app) وما جربته.

أيضًا ، هناك شيء واحد يجب ملاحظته وهو أنه عند التجميع لـ _release_ ، مع تثبيت mono على صندوق dev الخاص بك ، فإنه سيتم تجميع mono داخل تطبيقك حتى لا يتطلب تثبيت mono لتشغيل تطبيقك. هذا سيجعلها لديك وقت تشغيل معروف. بدلاً من ذلك ، استخدم .NET Core بدلاً من ذلك وقم بتجميعه في تطبيقك (لا يتطلب تثبيت mono للقيام بذلك).

شكرا لك على الرد السريع.

لم أكن على دراية بتطبيق Console.app وسوف يبلغ عن الاستثناء.

لا أعلم أيضًا عن تثبيت Mono على Windows. الرتق الشيء. ما المثبت الذي ينطبق؟ 64 بت (بدون GTK #) أم أحتاج إلى GTK # أيضًا؟

ليست هناك حاجة إلى GTK # ، فهي تستخدم فقط mkbundle لتجميع mono ، وهو ما تفعله باستخدام خاصية <MacBundleTarget> في csproj الخاص بك. القيمة الافتراضية هي mono-6.4.0-osx-10.9-x64 إذا لم يتم تحديدها ، ويمكن أن تكون أي قيمة مدرجة في mkbundle -list-targets

بخصوص تطبيق Console.app ، ليس لدي سوى خطأين غير معنيين تمامًا (بالنسبة لي ، على الأقل):

29 مارس 06:19:01 my-MacBook-Air com.apple.xpc.launchd [1] (com.apple.xpc.launchd.oneshot.0x1000015e.MyApp1 [10705]): تم إنهاء الخدمة برمز غير طبيعي: 78

29 آذار (مارس) 06:40:29 my-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

شيء واحد يجب مراعاته ، هو أنك إذا قمت بتعديل Info.plist بطريقة ما (من إحدى مشكلاتك الأخرى) ، فهو _ يحتاج_ أن يكون LF فقط ، UTF-8 _ بدون BOM_ ، وليس CRLF. سوف تفترض أنه تالف بخلاف ذلك.

تم تغيير Info.plist بواسطة npp.

لقد قمت بتثبيت Mono على جهاز dev الخاص بي ولكن إعادة الترجمة لا تضيف Mono إلى الحزمة. ماذا ينقصني؟

في وضع الإصدار يقوم بذلك بشكل افتراضي. وإلا ، اضبط <MacBundleMono> على true في csproj.

ألق نظرة على BundleMono.targets و Mac.targets للتعرف على الخصائص المختلفة التي يمكنك تعيينها.

آمل أن أضيف هذه الخيارات إلى خصائص مشروع VS لتسهيل اكتشافها في المستقبل ، ولكن للأسف القليل من الوقت (المجاني) للقيام بذلك.

لا تؤدي إضافة <MacBundleMono>True</MacBundleMono> إلى csproj إلى القيام بذلك.

ما لم تفعل ذلك بطريقة غير ظاهرة لي ، هذا هو.

نعم.

اتضح أنه يتم تضمين مجلد MonoBundle في التطبيق فقط عند تعيين MacBundleMono على False .

أيضًا ، تم تغيير Info.plist خلال عملية الإنشاء لتشمل كلاً من UTF-8 BOM و CRLF ، لذلك يجب إصلاحهما يدويًا بعد ذلك.

أيضًا ، يتم تغيير Info.plist من خلال عملية الإنشاء لتشمل كلاً من UTF-8 BOM و CRLF ، لذلك يجب إصلاحهما يدويًا بعد ذلك.

لا ينبغي أن يكون هذا هو الحال .. هل يمكنك إرفاق ملف Info.plist الذي تستخدمه (وليس الملف المترجم).

اتضح أن مجلد MonoBundle مضمن في التطبيق فقط عند ضبط MacBundleMono على False.

نعم ، مجلد MonoBundle لا يعني أن mono مجمع .. بشكل غريب .. غياب هذا المجلد يعني أن mono "مجمع" وكل شيء مدرج في الملف التنفيذي الأصلي.

MacBundleMono تمثال نصفي. لم يتم تضمين مونو مهما كان الأمر.

وأي إصدار من Mono أعلى من 6.4.0.137 يستمر في تعطل تطبيقاتي.

سأبحث في أهداف البناء لاحقًا.

شكرا لك على صبرك.

هل ما زلت تتلقى هذا التحذير عند البناء؟

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.

إذا كان الأمر كذلك ، فقد تحتاج إلى إعادة التشغيل أو الإشارة تحديدًا إلى مكان تثبيت mono باستخدام <MonoPath> .

هل يمكنك أيضًا أن ترسل لي dmg الخاص بتطبيقك (بافتراض أنك على استعداد للقيام بذلك؟). يمكنني محاولة تشخيصه بشكل أكبر.

لا أتلقى تحذيرًا بشأن mkbundle لذا سأحاول MonoPath التالي.

مرفق مشروع بسيط استخدمته لاختبار هذا وذاك. لا يبدأ حتى فوق Mono 6.4 في Mac ولا يوجد تقرير تعطل في Console.app

MacFileTest.zip

لقد أضفت Mono إلى environment variables ، لذا لا توجد مشكلة في الوصول إلى 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 . أنا مندهش قليلاً لأن الأمر dotnet في التجشؤ Terminal :

zsh: الأمر غير موجود: dotnet

خمن شيئًا واحدًا لا علاقة له بالآخر (؟).

لا تزال هناك مشكلتان صغيرتان قد ترغب في معرفتهما:

  1. تتضمن عملية الإنشاء دائمًا ملف .pdb داخل مجلد MacOS للحزمة.

  2. تقوم عملية الإنشاء دائمًا بتعديل Info.plist لتضمين مفتاح CFBundleExecutable ، مع تكرار المفتاح الموجود إذا كان موجودًا. ينتج عن هذا تضمين كل من BOM و CRLF على الرغم من عدم وجوده في Info.plist الأصلي في المشروع.

الحل لكل من هاتين المشكلتين هو ملف دفعي بسيط لحذف 1 واستبدال 2 ، والذي للأسف يجب تشغيله يدويًا لأنه لا يمكن إضافته إلى post-build events لأنه على الرغم من كونه post-build فإنه لا يزال يعمل في وقت مبكر جدًا ، بقدر ما أستطيع أن أقول.

شكرا مرة أخرى على صبرك اللامتناهي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات