سؤال

أرغب في توزيع برامج .NET الخاصة بي بدون إطار عمل .NET.هل من الممكن ترجمة برنامج .NET إلى رمز الجهاز؟

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

المحلول

نعم، يمكنك الترجمة المسبقة باستخدام Ngen.exe، ولكن هذا لا يزيل اعتماد CLR.

لا يزال يتعين عليك شحن تجميعات IL أيضًا، والفائدة الوحيدة من Ngen هي أن تطبيقك يمكن أن يبدأ دون استدعاء JIT، بحيث تحصل على وقت بدء تشغيل سريع حقًا.

وفقًا لـ CLR عبر C#:

أيضًا ، عادة ما تكون التجميعات المسبقة باستخدام NGEN أبطأ من مجموعات Jit'ed لأن برنامج التحويل البرمجي JIT يمكنه تحسينه على جهاز الأهداف (32 بت؟64 بت؟سجلات خاصة؟إلخ) ، في حين أن NGEN سوف ينتج فقط مجموعة أساسية.

يحرر:

هناك بعض الجدل حول المعلومات المذكورة أعلاه من CLR عبر C#، حيث يقول البعض أنه مطلوب منك تشغيل Ngen على الجهاز المستهدف فقط كجزء من عملية التثبيت.

نصائح أخرى

Remotesoft لديه واحد:سلمندر .NET رابط

ليس لدي أي خبرة في ذلك رغم ذلك.

هناك بعض أدوات الطرف الثالث التي تقوم بذلك، على سبيل المثال.

منتج آخر (باهظ الثمن ومملوك، تبدأ التراخيص بسعر 1599 دولارًا) يمكنه القيام بذلك وهو زينوكود ما بعد البناء.ومع ذلك، لم أستخدمها بنفسي، حيث تبلغ تكلفتها حوالي الناتج القومي الإجمالي لدولة أفريقية صغيرة وكل...

هل من الممكن تجميع رمز .NET IL إلى رمز الجهاز؟

نعم، ولكن .NET Framework يقوم بذلك نيابةً عنك في وقت التشغيل (افتراضي) أو في وقت التثبيت (ngen).من بين الأسباب الأخرى، يتم إجراء كود الجهاز IL -> هذا بشكل منفصل على كل جهاز تثبيت بحيث يمكن تحسينه لهذا الجهاز المحدد.

أود توزيع برامج .NET الخاصة بي بدون إطار .NET.هل من الممكن تجميع برنامج .NET إلى رمز الجهاز؟

لا، لجميع المقاصد والأغراض لا يمكنك القيام بذلك.قد تعمل الحلول البديلة التابعة لجهات خارجية في بعض السيناريوهات، ولكن بحلول ذلك الوقت لن أعتبرها حقًا "تعليمات برمجية مُدارة" أو ".NET" بعد الآن.

نعم يمكنك الآن!أعلنت مايكروسوفت مؤخرا .NET الأصلي, ، وهي عبارة عن تقنية تجمع تطبيقك مع وقت التشغيل .NET Native (يسمونه MRT) في ثنائي واحد (في الواقع مكتبة واحدة قابلة للتنفيذ وواحدة ديناميكية).

انظر الروابط:http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announce-net-native-preview.aspx http://blogs.msdn.com/b/dotnet/archive/2014/04/24/dotnetnative-performance.aspx

هنالك IL2CPU للجزء التجميعي.

لا أعتقد أن هذا ممكن.يمكنك إنشاء تجميع مُجهز مسبقًا ولكنك لا تزال بحاجة إلى الإطار.

إذا كنت مهتمًا فقط بحجم نشر إطار العمل، فيمكنك القراءة هذا.

أعتقد أنه لا ينبغي عليك:هذه هي مهمة مترجم JIT.

ومع ذلك، يمكنك استخدام ClickOnce أو Windows Installer لنشره بحيث لا يشكل الإطار المفقود مشكلة كبيرة:يمكنك إخبار المثبت بتنزيل Framework وتثبيته.

انظر إلى مشروع MONO:الأمر الأحادي مع خيار --aot. http://www.mono-project.com/AOT

لقد اعتقدت دائمًا أنه سيكون من الرائع ترجمة c# إلى كود الجهاز مباشرة دون تبعية CLR بالرغم من ذلك....

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