আমি যদি এমন কোনও মেশিনে একটি নেট অ্যাপ্লিকেশন চালাতে চাই যেখানে। নেট নেট ফ্রেমওয়ার্ক পাওয়া যায় না; দেশীয় কোডটিতে অ্যাপ্লিকেশনটি সংকলনের কোনও উপায় আছে কি?
উত্তর:
মাইক্রোসফ্টের একটি নিবন্ধ রয়েছে যা আপনি কীভাবে এমএসআইএলকে নেটিভ কোডে সংকলন করতে পারবেন তা বর্ণনা করে
আপনি Ngen ব্যবহার করতে পারেন ।
নেটিভ ইমেজ জেনারেটর (Ngen.exe) এমন একটি সরঞ্জাম যা পরিচালিত অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করে। এনজেন.এক্সে দেশীয় চিত্র তৈরি করে, যা সংকলিত প্রসেসর-নির্দিষ্ট মেশিন কোডযুক্ত ফাইলগুলি এবং সেগুলি স্থানীয় কম্পিউটারে নেটিভ ইমেজ ক্যাশে ইনস্টল করে। রানটাইম আসল অ্যাসেমবিলিটি সংকলনের জন্য কেবলমাত্র ইন-টাইম (জেআইটি) সংকলকটি ব্যবহার না করে ক্যাশে থেকে স্থানীয় চিত্রগুলি ব্যবহার করতে পারে।
দুর্ভাগ্যক্রমে, আপনার প্রোগ্রামটি চালনার জন্য আপনার এখনও ফ্রেমওয়ার্ক থেকে গ্রন্থাগারগুলির প্রয়োজন। এম। এস। নেট ফ্রেমওয়ার্ক এসডিকে দিয়ে এমন কোনও বৈশিষ্ট্য নেই যা আপনাকে সমস্ত প্রয়োজনীয় ফাইলগুলি একক নির্বাহযোগ্য হিসাবে সংকলন করতে দেয়
রিমোটসফ্ট এমন একটি সরঞ্জাম তৈরি করে যা .NET অ্যাপ্লিকেশনটিকে একটি প্যাকেজে সংকলিত করে যা। নেট ইনস্টল না করে চালানো যায়। এটির সাথে আমার কোনও অভিজ্ঞতা নেই:
এখানে অন্যান্য উত্তরগুলির মধ্যে কয়েকটি যেমন উল্লেখ করেছে, আপনি নিজের অ্যাপ্লিকেশনটি স্থানীয় মেশিন কোডে সংকলিত করতে .NET নেটিভ সরঞ্জামটি ব্যবহার করতে পারেন । এই উত্তরগুলির বিপরীতে, তবে আমি কীভাবে এটি করব তা ব্যাখ্যা করব ।
পদক্ষেপ:
ডটনেট সিএলআই (কমান্ড লাইন ইন্টারফেস) সরঞ্জামটি ইনস্টল করুন , যা নতুন .NET কোর সরঞ্জামচয়ের অংশ। আমরা আমাদের অ্যাপ্লিকেশনটি সংকলন করতে এটি ব্যবহার করব; আপনি এটি সম্পর্কে একটি ভাল নিবন্ধ এখানে পেতে পারেন ।
একটি শেল প্রম্পট এবং cd
আপনার অ্যাপ্লিকেশন ডিরেক্টরিতে খুলুন ।
এটি টাইপ করুন:
dotnet compile --native
এটাই! আপনার কাজ শেষ হয়ে গেলে, আপনার অ্যাপ্লিকেশনটি একক বাইনারিতে এইভাবে সংকলিত হবে:
এটি একক কার্যকর কার্যকর হবে; কোনও পিডিবি, সমাবেশ, বা কনফিগার ফাইল অন্তর্ভুক্ত নেই (হুর!)।
বিকল্পভাবে, আপনি যদি আরও দ্রুত প্রোগ্রাম চান, আপনি এটি চালাতে পারেন:
dotnet compile --native --cpp
এটি আপনার প্রোগ্রামটি সি ++ কোড জেনারেটর (রিউজিআইটির বিপরীতে) ব্যবহার করে অনুকূলিত করবে, সুতরাং আপনার অ্যাপটি এওটি পরিস্থিতিগুলির জন্য আরও বেশি অনুকূলিত হয়েছে।
আপনি ডটনেট সিএলআই গিটহাব রেপোতে এ সম্পর্কিত আরও তথ্য পেতে পারেন ।
আমি তাদের বেশ কয়েকটি পরীক্ষা করেছি এবং এই মুহুর্তে কেবলমাত্র এক। নেট 3.5 সমর্থন করে এবং একটি দুর্দান্ত ভার্চুয়ালাইজেশন স্ট্যাক রয়েছে জেনোকোড পোস্ট বিল্ড
এনজেনের সাথে আপনার এখনও .NET কাঠামো ইনস্টল করা দরকার তবে একটি সরঞ্জাম ব্যবহার করা যেমন আপনার সমস্ত পরিচালিত কোড স্থানীয় কোডে সংকলিত হয় যাতে আপনি ফ্রেমওয়ার্কের উপস্থিতি ছাড়াই মেশিনে স্থাপন করতে পারেন।
মাইক্রোসফ্ট তার .NET নেটিভ প্রাকদর্শন ঘোষণা করেছে যা ফ্রেমওয়ার্ক ইনস্টল না করেই .NET অ্যাপ্লিকেশনগুলি চালানোর অনুমতি দেয়।
একবার দেখুন: http://blogs.msdn.com/b/dotnet/archive/2014/04/02/annoucing-net-native-preview.aspx
এফএকিউ: http://msdn.microsoft.com/en-US/vstudio/dn642499.aspx
আপনি VS2013 এর জন্য মাইক্রোসফ্ট .NET নেটিভ ডাউনলোড করতে পারেন এখান থেকে: http://msdn.microsoft.com/en-US/vstudio/dotnetnative
হ্যাঁ, নেজেন , নেটিভ ইমেজ জেনারেটর ব্যবহার করে । তবে কয়েকটি বিষয় সম্পর্কে আপনার সচেতন হওয়া দরকার:
সব মিলিয়ে, আপনার অ্যাপ্লিকেশনটির প্রারম্ভকালীন সময় হ্রাস করার প্রয়োজন হলে Ngen ব্যবহার করা কেবলমাত্র মূল্যবান।
আপনি পারেন! তবে আপনি .NET 1.1 এ সীমাবদ্ধ (আপনার জন্য জেনেরিক নেই): মনো-এগিয়ে-কাল-সংকলন (এওটি)
তবে এর অর্থ হ'ল সংকলনটি সত্যই নেটিভ, সুতরাং আপনি আর কোনও একক বাইটকোড সমাবেশ স্থাপন করতে পারবেন না, আপনার প্রতি প্ল্যাটফর্মের জন্য একটি প্রয়োজন।
এটি মূলত ডিজাইন করা হয়েছিল কারণ আইফোনটির জন্য নেট বা নেট নেই, তাই তারা মনো টাচ তৈরি করেছিল।
.NET নেটিভ নামে পরিচিত নতুন প্রিম্পম্পিলেশন প্রযুক্তি ব্যবহার করে আপনি এটি করতে পারেন। এটি এখানে দেখুন: http://msdn.microsoft.com/en-US/vstudio/dotnetnative
বর্তমানে এটি কেবল উইন্ডোজ স্টোর অ্যাপ্লিকেশনগুলির জন্য উপলব্ধ। এটি একক উপাদান সংযোগ সম্পাদন করে। সুতরাং। নেট ফ্রেমওয়ার্ক লাইব্রেরিগুলি স্থিরভাবে আপনার অ্যাপ্লিকেশনটিতে লিঙ্কযুক্ত। সমস্ত কিছু দেশীয়তে সংকলিত হয় এবং আইএল সমাবেশগুলি আর মোতায়েন করা হয় না। অ্যাপ্লিকেশনগুলি সিএলআরের বিপরীতে চলে না তবে পরিচালিত রানটাইম (Mrt.dll) নামে একটি স্ট্রিপ ডাউন, অনুকূলিত রানটাইম
উপরে উল্লিখিত হিসাবে, এনজিইএন একটি মিশ্র সংকলন মডেল ব্যবহার করেছে এবং গতিশীল পরিস্থিতিগুলির জন্য আইএল এবং জেআইটির উপর নির্ভর করেছিল। .NET নেটিভ JIT ব্যবহার করে না তবে এটি বিভিন্ন গতিশীল পরিস্থিতিতে সমর্থন করে। কোড লেখকদের রানটাইম নির্দেশিকা ব্যবহার করতে হবে। NET নেটিভ সংকলককে তারা সমর্থন করতে চান এমন গতিশীল পরিস্থিতিতে ints
একটি নেটিভ চিত্র তৈরি করতে আপনি ngen.exe ব্যবহার করতে পারেন তবে আপনাকে এখনও মূল অ-নেটিভ কোড বিতরণ করতে হবে এবং এটি এখনও লক্ষ্য মেশিনে ইনস্টল করা কাঠামোর প্রয়োজন।
যা সত্যিই আপনার সমস্যার সমাধান করে না।
2019 উত্তর: ডটনেট / কোর্ট ব্যবহার করুন । এটি। নেট কোর প্রকল্পগুলি স্বতন্ত্র .exe
ফাইলগুলিতে সংকলন করতে পারে । কোনও নির্ভরতা নেই (যেমন সিস্টেম লাইব্রেরি বাদে kernel32.dll
)। আমি বাজি ধরলাম এটি ঠিক ওপিটির দরকার।
এর গিটহাব হোম পৃষ্ঠা থেকে:
কোরআরটি সংকলক একটি পরিচালিত .NET কোর অ্যাপ্লিকেশনটি একটি স্থানীয় (আর্কিটেকচার নির্দিষ্ট) একক-ফাইল এক্সিকিউটেবল যা সংযুক্ত করা সহজ comp এটি স্ট্যান্ডএলোন ডায়নামিক বা স্ট্যাটিক লাইব্রেরি তৈরি করতে পারে যা অন্যান্য প্রোগ্রামিং ভাষায় রচিত অ্যাপ্লিকেশন দ্বারা গ্রাস করা যায়।
.NET- র প্রকৃতি হ'ল এমএসআইএল-তে সংকলিত অ্যাপ্লিকেশনগুলি ইনস্টল করতে সক্ষম হবেন, তারপরে জেআইটি বা এনজেন দ্বারা, এমএসআইএল স্থানীয় কোডে সংকলন করে এবং স্থানীয়ভাবে একটি ক্যাশে সংরক্ষণ করা হয়। এটি কখনও কখনও সত্যিকারের নেটিভ .exe তৈরির উদ্দেশ্যে করা হয়নি যা নেট নেট ফ্রেমওয়ার্কের বাইরে স্বাধীনভাবে চালানো যেতে পারে।
সম্ভবত কিছু হ্যাক রয়েছে যা এটি করে তবে এটি আমার কাছে নিরাপদ নয়। অনেকগুলি গতিশীলতা রয়েছে যা কাঠামোর প্রয়োজন যেমন: ডায়নামিক অ্যাসেমবিলি লোডিং, এমএসআইএল কোড উত্পন্নকরণ ইত্যাদি etc.
নেটিভগুলিতে সংকলনের মূল কারণটি হল আপনার কোডগুলি সুরক্ষিত করা, অন্যথায় এমএসআইএল সংকলিত হ'ল ক্লায়েন্টের মেশিনে উত্স কোড মোতায়েন করার মতো।
এনজিইএন স্থানীয় ভাষায় সংকলন করে তবে আইএল কোড মোতায়েন করা প্রয়োজন, এই উদ্দেশ্যটি কেবলমাত্র স্টার্টআপের সময় হ্রাস করার জন্য তবে এটি অকেজোও।
কোরআরটি আলফা সংস্করণ এবং কেবল সাধারণ হেলিওরল্ড টাইপের অ্যাপ্লিকেশনগুলির সাথে কাজ করে।
। নেট কোর একক এক্সিকিউটেবল ফাইলগুলিতে সংকলন করে তবে এটি দেশীয় উদাহরণও নয়, এটি কেবলমাত্র আইএল কোডগুলির একটি জিপড ফাইল এবং এটি চলমান চলাকালীন কোডগুলি অস্থায়ী ফোল্ডারে আনজিপ করে দেবে।
মাইক্রোসফ্টের থেকে আমার সহজ প্রশ্ন হ'ল, যদি রিউজিআইটি ফ্লাইটে আইএলকে দেশীয় ভাষায় সংকলন করতে পারে তবে আপনি কেন একই আইএলকে সামনের সময়ের (এওটি) সংকলন করতে পারবেন না।
নেট কোর আরটি কার্যকর সমাধানের মতো মনে হচ্ছে; শীঘ্রই সমস্ত অ্যাপ্লিকেশন। নেট কোর যাবে; https://www.codeproject.com/Articles/5262251/ Generate- Native- Executable- from- NET- Core- 3-1- Proje? msg = 5753507# xx5753507xx https://docs.microsoft.com/en-us / সংরক্ষণাগার / এমএসডিএন-ম্যাগাজিন / 2018 / নভেম্বর / নেট-কোর-প্রকাশনা-বিকল্পগুলি-নেট-কোর
পুরানো জনের সাথে সম্ভবত পরীক্ষিত হয় না। নেট এসডিকে সম্ভব একইভাবে করুন।
এটি তৈরি করতে ( http://www.dotnetnative.online/ )। নেট সংকলন দেশী এক্সে সংকলন করতে, আমি এটি চেষ্টা করেছি, এটি নতুন তবে ভাল।