Mono C #: MKBundle'd "Hello World" البرنامج النصي ينفذ مع رمز الخروج فقط "11" على خادم ويب

StackOverflow https://stackoverflow.com//questions/24014152

  •  21-12-2019
  •  | 
  •  

سؤال

أود تشغيل رمز Mono (C #) على خادم ويب لا يحتوي على وقت تشغيل Mono مثبتا. نظرا لأن MkBundle قادر على إنتاج رمز أصلية، فأنا أحاول أولا الحصول على برنامج نصي "Hello World" عادي للعمل على كلا الجانبين، والذي يعمل محليا ولكن ليس على خادم الويب.

c # helloworld.cs النصي:

giveacodicetagpre.

أقوم بتجميع وتجميع باستخدام: GMCS Helloworld.cs: Helloworld.exe
MKBundle $ HelloWorld Hellellld.exe --static --Deps

أستيبي الوحيد المسموح به لتنفيذ هذا البرنامج النصي على خادم الويب هو باستخدام برنامج نصي PHP، مما يلي:

giveacodicetagpre.

محليا، يعمل هذا البرنامج النصي وأحصل على الرد التالي:

صفيف (1) { [0]=> سلسلة (13) "مرحبا، العالم!" } int (0)

ولكن على خادم الويب هذا هو كل إرجاع البرنامج النصي

صفيف (0) {} int (11)

رمز الخروج باش 11 غير قياسي وفقا ل هذا و هذا خروج المشتريات.

كلا الجهازين موجودين على Linux 64bit و "ملف HelloWorld" إرجاع ما يلي ...
على الجهاز المحلي:

helloworld: ELF 64-bit LSB قابل للتنفيذ، X86-64، الإصدار 1 (SYSV)، مرتبط ديناميكيا (يستخدم LIBS المشترك)، ل GNU / Linux 2.6.24، BuildID [Sha1]= FBC9731FB13202C604B02SIONEFEF51C69DC40D8، غير تجريد

على خادم الويب:

helloworld: ELF 64 بت LSB قابل للتنفيذ، X86-64، الإصدار 1 (SYSV)، مرتبط ديناميكيا (يستخدم Libs المشترك)، جردت

قد "مرتبط ديناميكيا (يستخدم Libs المشترك)، تجريد" لا يزال يعني أن بعض المكتبات المضمنة أو وقت تشغيل أحادي لا تزال مفقودة

هل كانت مفيدة؟

المحلول

قمت بإنشاء جهاز افتراضي بنفس نظام التشغيل كخادم الويب، عند تشغيل الحزمة التي حصلت عليها "خطأ تجزئة (ملقاة الأساسية)"، والذي يحتوي على رمز الخروج "11".mkbundle ليست طريقة متوافقة تماما لنشر برنامج مكتوب أحادي على أجهزة Linux.

حتى في النهاية قمت بتثبيت Mono على الجهاز الظاهري، تم تجميعها و MKBundle'd رمز، وبعد تحميل الملف إلى خادم الويب، كان قادرا على تنفيذه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top