সি # বা। ​​নেট এ্যাসেম্বলি আসলে কী?


107

আপনি কি দয়া করে ব্যাখ্যা করতে পারবেন সি # বা .নেট এ্যাসেম্বলি কি?

  1. এটি কোথা থেকে শুরু হয় এবং কোথায় শেষ হয়?
  2. সমাবেশগুলি সম্পর্কে আমার কী গুরুত্বপূর্ণ তথ্য জানা উচিত?

4
কড়া কথায় বলতে গেলে, এসেম্বলি কি সি # কনসেপ্টের পরিবর্তে একটি নেট নেট কনসেপ্ট নয়?
জেফএইচ

14
@ জেফএইচএইচ: যখন আমি প্রশ্ন জিজ্ঞাসা করেছি তখন আমি ভেবেছিলাম এটি একটি সি # ধারণা। এখন আমি বুঝতে পারি এটি একটি নেট। তবুও, যেহেতু আমি মনে করি যে অন্য লোকেরা আমার মতো বিভ্রান্ত হতে পারে তাই আমি ইচ্ছাকৃতভাবে গুগলের পক্ষে এই
ভুলটির

এটি একটি সি # ধারণাটিও। "অভ্যন্তরীণ" অ্যাক্সেস সংশোধকটি সঠিকভাবে ব্যবহার করতে আপনাকে এটি বুঝতে হবে।
জান রোজিকি

উত্তর:


116

কোনও অ্যাসেমব্লি হ'ল আপনার কোডের সংকলিত আউটপুট, সাধারণত একটি ডিএলএল, তবে আপনার EXE একটি সমাবেশও হয়। এটি কোনও নেট প্রকল্পের জন্য স্থাপনার সবচেয়ে ছোট একক।

অ্যাসেমব্লিতে সাধারণত এমএসআইএল (মাইক্রোসফ্ট ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ) এর নেট কোড থাকে যা নেটিভ কোডে সংকলিত হবে ("JITted" - জাস্ট-ইন-টাইম সংকলক দ্বারা সংকলিত) প্রথমবার কোনও প্রদত্ত মেশিনে কার্যকর করা হবে। এই সংকলিত কোডটি সমাবেশেও সংরক্ষণ করা হবে এবং পরবর্তী কলগুলিতে পুনরায় ব্যবহার করা হবে।

সমাবেশে আইকন, বিটম্যাপস, স্ট্রিং টেবিল ইত্যাদির মতো সংস্থান থাকতে পারে। তদ্ব্যতীত, সমাবেশে অ্যাসেমব্লি ম্যানিফেস্টে মেটাডেটাও রয়েছে - সংস্করণ নম্বর, শক্ত নাম, সংস্কৃতি, রেফারেন্সড অ্যাসেমব্লিসি ইত্যাদি।

আপনার 99% ক্ষেত্রে, একটি অ্যাসেমব্লি ডিস্কের একটি ফিজিকাল ফাইলের সমান হয় - একটি বহু-ফাইল অ্যাসেমব্লির ক্ষেত্রে (একটি সমাবেশ, একটি ফাইলের চেয়ে বেশি জুড়ে বিতরণ করা হয়) এটির চেয়ে বরং বেদ-বল প্রান্তের কেস বলে মনে হয় নেট। বিকাশের আমার 5+ বছরের মধ্যে এখনও কখনও মুখোমুখি হয়নি।

একটি মাল্টিফাইলে সমাবেশে একটি ডিএলএল বা এক্সইএ এবং এমএসআইএল কোডে একাধিক নেটমডিউল ফাইলগুলিতে কেবলমাত্র একটি বিধানসভা প্রকাশ হতে পারে।


4
@মার্ক_স: আমার ধারণা আপনি একটি বহু-সমাবেশ ফাইলের অর্থ। স্টুডিওর কমান্ড-লাইন সরঞ্জামের মাধ্যমে একক ফাইলে একাধিক অ্যাসেমব্লি প্যাকেজ করা সম্ভব, তবে সরাসরি আইডিইয়ের মাধ্যমে নয়।
গ্রেগ ডি

4
অ্যাসেমব্লির একটি খুব গুরুত্বপূর্ণ বিষয় হল সমাবেশের ম্যানিফেস্টে মেটাডেটা ata ম্যানিফেস্টটিতে সংস্করণ, শক্তিশালী নাম, সংস্কৃতি, রেফারেন্সড অ্যাসেমব্লিসি ইত্যাদির মতো তথ্য রয়েছে a একাধিক ফাইলে অ্যাসেমব্লিতে এখনও একটি ডিএল বা এক্সে শুধুমাত্র একটি সংসদীয় ম্যানিফেস্ট থাকবে এবং একাধিক। নেটমডিউল ফাইলগুলিতে এমএসআইএল কোড থাকবে। মূলত একটি
অ্যাসেমব্লিং হ'ল

@মার্ক_স: আপনি যদি
উত্তরটিতে

@ ইরাক্স: সম্পন্ন; @ প্রতিকিক: এখন আপনি আমাকে বিভ্রান্ত করছেন: আপনি আবার "মাল্টি-ফাইল অ্যাসেম্বলি" সম্পর্কে কথা বলছেন, যখন @ গ্রেগডি উল্লেখ করেছেন যে এটি সত্যই "মাল্টি-এসেম্বলি ফাইল" ছিল - এটি এখন কী ?? (যেমনটি আমি বলেছি - আমি কখনই এ জাতীয় জন্তুটির মুখোমুখি হইনি, সুতরাং এটি ফাইলের অধীনে একাধিক
অ্যাসেমব্লি

4
"এই সংকলিত কোডটি সমাবেশেও সংরক্ষণ করা হবে এবং পরবর্তী কলগুলিতে পুনরায় ব্যবহার করা হবে।" এটি বিভ্রান্তিকর এবং / বা খুব পরিষ্কার নয়। কোনও সংকলিত কোড কোনও সমাবেশে "সঞ্চিত" থাকে না। আমি মনে করি আপনি যখন প্রথম পদ্ধতিটি প্রয়োগ করার সময় প্রতিটি পদ্ধতি / ফাংশনটি দেশীয় কোডটিতে "জিটড" করার পদ্ধতিটি উল্লেখ করছেন। তারপরে, সমাবেশটি মেমোরিতে থাকা অবস্থায়, পদ্ধতির নেটিভ কোড সংস্করণ বলা হয় called যদি অ্যাসেম্বলিটি লোড করা হয় এবং পরে পুনরায় লোড করা হয় তবে জিট প্রক্রিয়াটি আবারও ঘটবে। অবশ্যই এটি ধরে নিয়েছে যে আপনি NGEN আপনার অ্যাসেমব্লিকে নেটিভ কোডে প্রাক-সংকলন করতে ব্যবহার করছেন না (প্রস্তাবিত নয়)।
অ্যাশ

13

.NET সমাবেশ

মাইক্রোসফ্ট .NET ফ্রেমওয়ার্কে একটি অ্যাসেমব্লিশি মোতায়েন, সংস্করণ এবং সুরক্ষার জন্য আংশিকভাবে সংকলিত কোড লাইব্রেরি।


7

http://www.codeguru.com / কলামগুলি / শ্যাশ_প্লেয়ারিং / পার্টিকেল.এফপি /c5845

অ্যাসেম্বলি হ'ল এমন একটি ফাইল যা প্রতিটি। নেট অ্যাপ্লিকেশন সফল সংকলনের পরে সংকলক দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। এটি ডায়নামিক লিংক লাইব্রেরি বা এক্সিকিউটেবল ফাইল হতে পারে। এটি কেবল একবারই একটি অ্যাপ্লিকেশনের জন্য উত্পন্ন হয় এবং প্রতিটি সংকলনের পরে সমাবেশটি আপডেট হয়।


4
সমাবেশগুলি এগুলি ধারণ করে এমন ফাইলগুলির থেকে পৃথক।
গ্রেগ ডি

4
@ রাঘব - স্বর্গের জন্য নৈমিত্তিক কিছু দিয়ে আপনার ফটোগ্রাফ আপডেট করুন! আমরা এখানে পাসপোর্টের জন্য পোজ দিচ্ছি না, আপনি জানেন!
রবিন রড্রিক্স

4

নেট নেট অ্যাসেমব্লিশগুলি তৈরি করার আরও একটি ব্যাখ্যা এখানে দেওয়া হয়েছে , একটি মিনি-কোট:

.NET ফ্রেমওয়ার্কটিতে মডিউল, অ্যাসেমব্লিগুলির ধারণাগুলি সমন্বিত থাকে যা মেটাডেটা এবং ম্যানিফেস্ট উভয় তথ্য সঞ্চয় করে। একটি সমাবেশে একাধিক মডিউল থাকতে পারে। ভিজ্যুয়াল সি # কেবলমাত্র একটি মডিউল তৈরি করে যা সি # সংকলক (সিএসসি.এক্সি) দ্বারা একটি অ্যাসেমব্লিতে রূপান্তরিত হয়, তবে একটি অ্যাসেম্বলি অনেকগুলি নেট মডিউলকে সমাবেশ লিঙ্কার (al.exe) কমান্ড-লাইন সরঞ্জামের সাথে সংযুক্ত করতে পারে। উদাহরণস্বরূপ আপনার প্রতিটি সোর্স কোড .cs ফাইলগুলি একটি মডিউলে সংকলিত হয়ে সমাবেশ গঠনের জন্য একত্রে সংযুক্ত হতে পারে - একটি অ্যাসেম্বলি কেবল মডিউল এবং সংস্থানগুলির সংগ্রহ collection এই মডিউলগুলির মধ্যে একটি; সমাবেশটি সিএলআর দ্বারা বোঝার জন্য অবশ্যই ম্যানিফেস্ট মেটাডেটা (নীচে দেখুন) থাকতে হবে।
....
VS.NET এর মধ্যে একটি নতুন .exe বা .dll তৈরি করার পরে আপনি দেখতে পাবেন যে আপনার ফাইলটি আপনার বিন ফোল্ডারের ভিতরে উপস্থিত রয়েছে। এটিকে নোটপ্যাডে খোলার ফলে গীব্রিশ বা ফাইলের কাঠামো না জেনে কোনও হেক্সাডেসিমাল সম্পাদকের অভ্যন্তরে ilasm.exe বা সিএফএফ এক্সপ্লোরার এর মতো একটি সরঞ্জাম প্রয়োজন যা তা বোঝাতে পারে। সমাবেশের কাঠামোটি নিম্নরূপ:

পিই শিরোনাম
সিএলআর শিরোনাম
সিএলআর মেটাডেটা
সিএলআর
আইএল কোড
নেটিভ ডেটা


সেই লিঙ্কটি আমাকে কোথায় নিয়ে যাচ্ছে? ধরণের অসীম পুনর্নির্দেশ! কয়েক পুনঃনির্দেশ পর এটা আমার একটি পৃষ্ঠায় বলে নিয়ে গেল এই । আপনার পোস্ট করা URL টি আসল হওয়ার কোনও উপায় নেই।
Sнаđошƒаӽ

3

উত্তরটি অবিলম্বে উপলব্ধি করার জন্য রয়েছে।

সোজা কথায় বলতে গেলে এটি আপনার ক্লাস এবং অতিরিক্ত ফাইল যুক্ত করে সংকলিত প্রকল্প is যে, একটি সমাধান প্রতিটি প্রকল্পের সমাবেশ হয়

বা আরও প্রযুক্তিগতভাবে,

একটি সমাবেশ যেখানে একটি টাইপ flesystem সঞ্চিত হয়। সমাবেশগুলি কোড মোতায়েন করার একটি প্রক্রিয়া। উদাহরণস্বরূপ, System.Data.dll সমাবেশে ডেটা পরিচালনা করার জন্য বিভিন্ন ধরণের রয়েছে contains অন্যান্য সমাবেশগুলিতে প্রকারগুলি ব্যবহার করতে, তাদের অবশ্যই রেফারেন্স করা উচিত be - উত্স

আমরা এটি কীভাবে জানি? সমাধানের অধীনে যদি আপনি কোনও প্রকল্পের বৈশিষ্ট্যগুলি এক নজরে দেখে থাকেন তবে নীচের চিত্রগুলি দেখতে পারেন।

আপনি যখন প্রকল্পটি সংকলন করেন, তখন এটি ডিএলএল বা EXE এ পরিণত হয়

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


1

ভাষা সংকলক দ্বারা যখন একটি উত্স কোড সংকলিত হয় তখন এটি একটি পরিচালিত সমাবেশ এবং এমএসআইএল (মিস্রোসফ্ট ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ) জেনারেট করে । এই সমাবেশে .dll বা .exe ফাইল রয়েছে । অ্যাসেমব্লি দুটি প্রাইভেট এসেম্বলি এবং শেয়ার্ড অ্যাসেমব্লির হতে পারে , শেয়ার্ড অ্যাসেমব্লিটি জিএসি (গ্লোবাল অ্যাসেম্বলি ক্যাশে) এ সংরক্ষণ করা হয় যাতে কোনও অ্যাপ্লিকেশন এটি উল্লেখ করতে পারে যখন প্রাইভেট এসেম্বলি অ্যাপ্লিকেশন ফোল্ডারে সংরক্ষণ করা হয় যা কেবলমাত্র একটি অ্যাপ্লিকেশন ব্যবহার করতে পারে।


0

অ্যাসেম্বলি হ'ল একটি ডিএলএল বা একটি এক্সইইটি যা আপনি যখন এটি প্রকাশ করবেন বা আপনার অ্যাপ্লিকেশনটি সংকলন করবেন তখন তৈরি হবে।


0

আপনার প্রোগ্রামের উত্স কোড লেখার পরে (প্রকল্প) তারপরে একটি ফাইল তৈরি করা হবে যা ডিএলএল বা এএসইই হতে পারে আপনার প্রকল্পের উপর নির্ভর করে। এটি একটিমাত্র প্রকল্পের জন্য একবার করে। এর দুটি প্রকার 1: - একক 2: - ভাগ করা বা মাল্টিগ্রাম একক সমাবেশ কেবলমাত্র একটি প্রোগ্রামে ব্যবহৃত হয় যখন ভাগ করা মাল্টিগ্রামের জন্য ব্যবহৃত হতে পারে


আপনার প্রোগ্রাম (প্রকল্প) এর সোর্স কোড লেখার পরে একটি ফাইল তৈরি করা হবে যা আপনার প্রকল্পের উপর নির্ভর করে ডিএলএল বা এক্সই হতে পারে - উত্স কোড লেখার পরে? হিসেবে একটি খুব ভাল ইঙ্গিত হবে বলে মনে হচ্ছে না যখন যে ফাইল তৈরি করা হয়, যা BTW প্রশ্ন দেওয়া অবাস্তব নয়।
Sнаđошƒаӽ

0

একটি অ্যাসেমব্লি লজিক্যাল ইউনিটের একটি সংগ্রহ। লজিকাল ইউনিটগুলি প্রকার এবং সংস্থানগুলি উল্লেখ করে যা একটি অ্যাপ্লিকেশন তৈরি করতে এবং। নেট ফ্রেমওয়ার্কটি ব্যবহার করে তাদের স্থাপন করতে প্রয়োজনীয় to মূলত, এসেম্বলি হ'ল এক্স এবং ডিএলএলগুলির সংগ্রহ। এটি পোর্টেবল এবং এক্সিকিউটেবল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.