แอสเซมบลี. NET คืออะไร ฉันเรียกดูผ่านเน็ตและฉันไม่สามารถเข้าใจคำจำกัดความได้
แอสเซมบลี. NET คืออะไร ฉันเรียกดูผ่านเน็ตและฉันไม่สามารถเข้าใจคำจำกัดความได้
คำตอบ:
กล่าวง่ายๆว่า: โค้ดอัน (precompiled) ที่สามารถประมวลผลได้โดยสภาพแวดล้อมรันไทม์. NET โปรแกรม. NET ประกอบด้วยแอสเซมบลีตั้งแต่หนึ่งตัวขึ้นไป
.class
ไฟล์ใน Java-world?
Assembly เป็นหน่วยที่เล็กที่สุดในการปรับใช้แอปพลิเคชั่น. net มันอาจจะเป็นdllหรือexe
ส่วนใหญ่มีสองประเภท:
การชุมนุมส่วนตัว: dll หรือ exe ซึ่งเป็นทรัพย์สินของแอปพลิเคชันเดียวเท่านั้น โดยทั่วไปจะถูกเก็บไว้ในโฟลเดอร์รูทของแอปพลิเคชัน
แอสเซมบลีสาธารณะ / ใช้ร่วมกัน: เป็น dll ที่สามารถใช้งานได้หลายแอพพลิเคชั่นในเวลาเดียวกัน ที่ใช้ร่วมกันชุมนุมถูกเก็บไว้ในGACเช่นแคชสมัชชาทั่วโลก
ฟังดูยากไหม Naa ....
GAC เป็นเพียงโฟลเดอร์C: \ Windows \ Assemblyที่คุณสามารถค้นหาแอสเซมบลีสาธารณะ / dll ของซอฟต์แวร์ทั้งหมดที่ติดตั้งในพีซีของคุณ
นอกจากนี้ยังมีประเภทที่สามและเป็นที่รู้จักน้อยที่สุดของการชุมนุม: สมัชชาดาวเทียม
แอสเซมบลีของดาวเทียมประกอบด้วยวัตถุคงที่เท่านั้นเช่นรูปภาพและไฟล์ที่ไม่สามารถดำเนินการได้อื่น ๆ
หวังว่านี่จะช่วยผู้อ่าน!
ประกอบ
เมื่อคุณรวบรวมแอปพลิเคชันรหัส MSIL ที่สร้างขึ้นจะถูกเก็บไว้ในชุดประกอบ แอสเซมบลีรวมทั้งแฟ้มแอปพลิเคชันที่ปฏิบัติการได้ที่คุณสามารถเรียกใช้โดยตรงจาก Windows โดยไม่จำเป็นต้องใช้โปรแกรมอื่น ๆ (เหล่านี้มีนามสกุลไฟล์. exe) และไลบรารี (ซึ่งมีนามสกุล. dll) สำหรับแอปพลิเคชันอื่น ๆ
นอกเหนือจากการมี MSIL แล้วแอสเซมบลียังรวมข้อมูลเมตา (นั่นคือข้อมูลเกี่ยวกับข้อมูลที่มีอยู่ในแอสเซมบลีที่รู้จักกันว่าเมทาดาทา) และทรัพยากรเพิ่มเติม (ข้อมูลเพิ่มเติมที่ใช้โดย MSIL เช่นไฟล์เสียงและรูปภาพ) ข้อมูลเมตาช่วยให้แอสเซมบลีสามารถอธิบายตนเองได้อย่างสมบูรณ์ คุณไม่จำเป็นต้องมีข้อมูลอื่นใดในการใช้แอสเซมบลีซึ่งหมายความว่าคุณหลีกเลี่ยงสถานการณ์เช่นการไม่สามารถเพิ่มข้อมูลที่จำเป็นในการลงทะเบียนระบบและอื่น ๆ ซึ่งมักจะเป็นปัญหาเมื่อพัฒนากับแพลตฟอร์มอื่น ๆ
ซึ่งหมายความว่าการปรับใช้แอปพลิเคชันมักทำได้ง่ายเพียงคัดลอกไฟล์ลงในไดเรกทอรีบนคอมพิวเตอร์ระยะไกล เนื่องจากไม่ต้องการข้อมูลเพิ่มเติมในระบบเป้าหมายคุณสามารถเรียกใช้ไฟล์ปฏิบัติการจากไดเรกทอรีนี้และ (สมมติว่าติดตั้ง. NET CLR) คุณก็พร้อมใช้งาน
แน่นอนว่าคุณไม่จำเป็นต้องรวมทุกอย่างที่จำเป็นในการเรียกใช้แอปพลิเคชันไว้ในที่เดียว คุณอาจเขียนโค้ดบางอย่างที่ทำงานที่ต้องการโดยหลายแอพพลิเคชั่น ในสถานการณ์เช่นนั้นมักจะมีประโยชน์ในการวางรหัสที่นำกลับมาใช้ใหม่ในสถานที่ที่ทุกโปรแกรมสามารถเข้าถึงได้ ใน. NET Framework นี่คือ Global Assembly Cache (GAC) การวางรหัสใน GAC นั้นง่าย - คุณเพียงแค่วางแอสเซมบลีที่มีรหัสในไดเรกทอรีที่ประกอบด้วยแคชนี้
แอสเซมบลีเป็นแฟ้ม. dll จริงบนฮาร์ดไดรฟ์ของคุณที่เก็บคลาสใน. NET Framework ตัวอย่างเช่นคลาสทั้งหมดที่มีอยู่ใน ASP.NET Framework จะอยู่ในแอสเซมบลีชื่อ System.Web.dll
แม่นยำยิ่งขึ้นชุดประกอบเป็นหน่วยหลักของการปรับใช้ความปลอดภัยและการควบคุมเวอร์ชันใน. NET Framework เนื่องจากแอสเซมบลีสามารถขยายหลายไฟล์แอสเซมบลีมักจะเรียกว่า "ตรรกะ" dll
บันทึก
.NET Framework (รุ่น 2.0) ประกอบด้วย 51 แอสเซมบลี
แอสเซมบลีมีสองประเภท: ส่วนตัวและที่ใช้ร่วมกัน แอสเซมบลีส่วนตัวสามารถใช้ได้โดยแอปพลิเคชันเดียวเท่านั้น ในทางตรงกันข้ามแอสเซมบลีที่ใช้ร่วมกันสามารถใช้งานได้โดยแอปพลิเคชันทั้งหมดที่อยู่บนเซิร์ฟเวอร์เดียวกัน
แอสเซมบลีที่ใช้ร่วมกันอยู่ในแคชแอสเซมบลีส่วนกลาง (GAC) ตัวอย่างเช่นแอสเซมบลี System.Web.dll และแอสเซมบลีอื่น ๆ ทั้งหมดที่รวมอยู่ใน. NET Framework จะอยู่ในแคชแอสเซมบลีส่วนกลาง
บันทึก
Global Assembly Cache นั้นอยู่ในโฟลเดอร์ \ WINDOWS \ Assembly ของคอมพิวเตอร์ของคุณ มีสำเนาแยกต่างหากของทุกแอสเซมบลีในโฟลเดอร์ \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 ของคุณ แอสเซมบลีชุดแรกถูกใช้ที่รันไทม์และชุดที่สองถูกใช้ในเวลาคอมไพล์
ก่อนที่คุณจะสามารถใช้คลาสที่มีอยู่ในชุดประกอบในแอปพลิเคชันของคุณคุณต้องเพิ่มการอ้างอิงไปยังชุดประกอบ โดยค่าเริ่มต้นแอปพลิเคชัน ASP.NET อ้างอิงแอสเซมบลีที่พบบ่อยที่สุดที่มีอยู่ในแคชแอสเซมบลีส่วนกลาง:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.web.services.dll
System.Xml.dll
System.Drawing.dll
system.enterpriseservices.dll
System.Web.Mobile.dll
ในการใช้คลาสใด ๆ ใน. NET Framework คุณต้องทำสองสิ่ง ขั้นแรกแอปพลิเคชันของคุณต้องอ้างอิงแอสเซมบลีที่ประกอบด้วยคลาส ประการที่สองแอปพลิเคชันของคุณจะต้องนำเข้าเนมสเปซที่เกี่ยวข้องกับคลาส
ในกรณีส่วนใหญ่คุณจะไม่ต้องกังวลเกี่ยวกับการอ้างอิงแอสเซมบลีที่จำเป็นเนื่องจากแอสเซมบลีทั่วไปส่วนใหญ่จะอ้างอิงโดยอัตโนมัติ อย่างไรก็ตามถ้าคุณต้องการใช้แอสเซมบลีแบบพิเศษคุณต้องเพิ่มการอ้างอิงอย่างชัดเจนในแอสเซมบลี ตัวอย่างเช่นถ้าคุณต้องการโต้ตอบกับ Active Directory โดยใช้คลาสใน System.DirectoryServices เนมสเปซคุณจะต้องเพิ่มการอ้างอิงถึงแอสเซมบลี System.DirectoryServices.dll ในแอปพลิเคชันของคุณ
แต่ละรายการคลาสในเอกสาร. NET Framework SDK แสดงรายการชุดประกอบและเนมสเปซที่เกี่ยวข้องกับคลาส ตัวอย่างเช่นถ้าคุณค้นหาคลาส MessageQueue ในเอกสารคุณจะพบว่าคลาสนี้อยู่ใน System.Messaging namespace ที่อยู่ในชุดประกอบ System.Messaging.dll
ถ้าคุณใช้ Visual Web Developer คุณสามารถเพิ่มการอ้างอิงไปยังแอสเซมบลีอย่างชัดเจนโดยเลือกเมนูตัวเลือกเว็บไซต์เพิ่มการอ้างอิงและเลือกชื่อของแอสเซมบลีที่คุณต้องการอ้างอิง ตัวอย่างเช่นการเพิ่มการอ้างอิงไปยังแอสเซมบลี System.Messaging.dll ผลลัพธ์ในแฟ้มการกำหนดค่าเว็บในรายการ 1.4 ที่ถูกเพิ่มลงในแอปพลิเคชันของคุณ
เช่น. Web.Config
enter code here
ถ้าคุณไม่ต้องการใช้ Visual Web Developer คุณสามารถเพิ่มการอ้างอิงไปยังแอสเซมบลี System.Messaging.dll โดยการสร้างไฟล์ในตัวอย่างข้างต้นด้วยมือ
Wikipedia ต้องบอกว่า:
ในกรอบงาน Microsoft .NET แอสเซมบลีเป็นไลบรารีรหัสที่คอมไพล์บางส่วนสำหรับใช้ในการปรับใช้การกำหนดรุ่นและความปลอดภัย มีสองประเภทคือ: กระบวนการแอสเซมบลี (EXE) และแอสเซมบลีไลบรารี (DLL) แอสเซมบลีของกระบวนการแสดงถึงกระบวนการซึ่งจะใช้คลาสที่กำหนดไว้ในแอสเซมบลีของไลบรารี แอสเซมบลี. NET ประกอบด้วยรหัสใน CIL ซึ่งโดยปกติแล้วจะสร้างจากภาษา CLI แล้วคอมไพล์เป็นภาษาเครื่องเมื่อรันไทม์โดย CLR just-in-time คอมไพเลอร์ แอสเซมบลีอาจประกอบด้วยหนึ่งไฟล์ขึ้นไป ไฟล์รหัสเรียกว่าโมดูล แอสเซมบลีสามารถประกอบด้วยโมดูลรหัสมากกว่าหนึ่งและเนื่องจากเป็นไปได้ที่จะใช้ภาษาต่าง ๆ เพื่อสร้างโมดูลรหัสเป็นไปได้ทางเทคนิคในการใช้ภาษาต่าง ๆ เพื่อสร้างแอสเซมบลี
หากคุณเรียกดูจริงๆมันจะช่วยได้ถ้าคุณชี้แจงสิ่งที่คุณไม่เข้าใจ
ดูสิ่งนี้ :
ในกรอบงาน Microsoft .NET แอสเซมบลีเป็นไลบรารีรหัสที่คอมไพล์บางส่วนสำหรับใช้ในการปรับใช้การกำหนดรุ่นและความปลอดภัย
การรวบรวมทางกายภาพของคลาสอินเทอร์เฟซ enum ฯลฯ ซึ่งอยู่ในรหัส IL ซึ่งสามารถเป็นไฟล์. EXE หรือ. DLL ไฟล์ EXE เป็นไฟล์ปฏิบัติการและ. DL สามารถใช้แบบไดนามิกในภาษาใด ๆ . net ที่รองรับ
แอสเซมบลีเป็นหน่วยรันไทม์ประกอบด้วยชนิดและทรัพยากรอื่น ๆ ทุกประเภทในชุดประกอบมีหมายเลขรุ่นเดียวกัน
บ่อยครั้งที่แอสเซมบลีเดียวมีเนมสเปซเดียวเท่านั้นและถูกใช้โดยหนึ่งโปรแกรม แต่มันสามารถครอบคลุมหลาย namespaces นอกจากนี้เนมสเปซหนึ่งเดียวสามารถแพร่กระจายไปยังหลาย ๆ แอสเซมบลีได้ ในการออกแบบขนาดใหญ่แอสเซมบลีอาจประกอบด้วยหลายไฟล์ที่จัดขึ้นพร้อมกันด้วยรายการ (เช่นสารบัญ)
ใน C # แอสเซมบลีเป็นการปรับใช้ที่เล็กที่สุดของแอพลิเคชัน. สุทธิสามารถเป็น dll หรือ exe มันมีสองชนิด: 1. แอสเซมบลีส่วนตัว 2. แอสเซมบลีสาธารณะ / สาธารณะ
นอกจากคำตอบที่ยอมรับแล้วฉันต้องการยกตัวอย่างให้คุณ!
ตัวอย่างเช่นเราทุกคนใช้
System.Console.WriteLine()
แต่รหัสสำหรับ System.Console.WriteLine!
รหัสใดที่ทำให้ข้อความบนคอนโซลเป็นจริง
ถ้าคุณดูที่หน้าแรกของเอกสารสำหรับคลาส Consoleคุณจะเห็นด้านบนด้านล่าง: Assembly: mscorlib (ใน mscorlib.dll) สิ่งนี้บ่งชี้ว่ารหัสสำหรับคลาส Console ตั้งอยู่ใน assem-bly ชื่อ mscorlib แอสเซมบลีอาจประกอบด้วยหลายไฟล์ แต่ในกรณีนี้เป็นไฟล์เดียวเท่านั้นซึ่งเป็นไลบรารีลิงก์แบบไดนามิก mscorlib.dll
ไฟล์ mscorlib.dll มีความสำคัญมากใน. NET เป็น DLL หลักสำหรับไลบรารีคลาสใน. NET และประกอบด้วยคลาส NET. NET และโครงสร้างพื้นฐานทั้งหมด
ถ้าคุณรู้จัก C หรือ C ++ โดยทั่วไปคุณต้องมี #include directive ที่ด้านบนที่อ้างถึงไฟล์ส่วนหัว ไฟล์ include จัดเตรียมต้นแบบฟังก์ชันการทำงานให้กับคอมไพเลอร์ ในทางตรงกันข้ามคอมไพเลอร์ C # ไม่จำเป็นต้องใช้ไฟล์ส่วนหัว ในระหว่างการรวบรวมคอมไพเลอร์ C # เข้าถึงไฟล์ mscorlib.dll โดยตรงและรับข้อมูลจากข้อมูลเมตาในไฟล์นั้นที่เกี่ยวข้องกับคลาสทั้งหมดและประเภทอื่น ๆ ที่กำหนดไว้ในนั้น
คอมไพเลอร์ C # สามารถสร้างได้ว่า mscorlib.dll มีคลาสชื่อ Console ในเนมสเปซชื่อ System ด้วยวิธีการที่ชื่อว่า WriteLine ซึ่งยอมรับอาร์กิวเมนต์ชนิดสตริงเดียว
คอมไพเลอร์ C # สามารถระบุได้ว่าการเรียก WriteLine นั้นถูกต้องและคอมไพเลอร์สร้างการอ้างอิงไปยังแอสเซมบลี mscorlib ในการปฏิบัติการ
โดยค่าเริ่มต้นคอมไพเลอร์ C # จะเข้าถึง mscorlib.dll แต่สำหรับ DLLs อื่น ๆ คุณจะต้องบอกคอมไพเลอร์แอสเซมบลีที่มีการเรียนอยู่ สิ่งเหล่านี้เรียกว่าการอ้างอิง
ฉันหวังว่ามันชัดเจนตอนนี้!
จาก DotNetBookZero Charles pitzold
MSDN มีคำอธิบายที่ดี :
แอสเซมบลีเป็นหน่วยการสร้างของโปรแกรมประยุกต์. NET Framework มันเป็นหน่วยพื้นฐานของการปรับใช้การควบคุมเวอร์ชันการใช้ซ้ำการกำหนดขอบเขตการเปิดใช้งานและการอนุญาตด้านความปลอดภัย แอสเซมบลีคือชุดของชนิดและทรัพยากรที่สร้างขึ้นเพื่อทำงานร่วมกันและตั้งหน่วยฟังก์ชันการทำงานแบบลอจิคัล แอสเซมบลีจัดเตรียมรันไทม์ภาษาทั่วไปด้วยข้อมูลที่จำเป็นต้องทราบของการใช้งานชนิด สำหรับรันไทม์ชนิดไม่มีอยู่นอกบริบทของแอสเซมบลี
แอสเซมบลีคือชุดของชนิดและทรัพยากรที่เป็นหน่วยทางลอจิคัลของฟังก์ชันการทำงาน ชนิดทั้งหมดใน. NET Framework ต้องมีอยู่ในแอสเซมบลี รันไทม์ภาษาทั่วไปไม่สนับสนุนชนิดนอกเหนือจากแอสเซมบลี ทุกครั้งที่คุณสร้างแอปพลิเคชัน Microsoft Windows®, Windows Service, Class Library หรือแอปพลิเคชันอื่น ๆ ด้วย Visual Basic .NET คุณจะสร้างแอสเซมบลีเดียว แอสเซมบลีแต่ละครั้งจะถูกเก็บไว้เป็นไฟล์. exe หรือ. dll
ที่มา: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4
สำหรับผู้ที่มีพื้นหลัง Java อย่างฉันหวังว่าแผนภาพต่อไปนี้จะอธิบายแนวคิด -
แอสเซมบลีก็เหมือนไฟล์ jar (มีไฟล์. class หลายไฟล์) รหัสของคุณสามารถอ้างอิงแอสเซมบลีที่มีอยู่หรือโค้ดของคุณเองสามารถเผยแพร่เป็นแอสเซมบลีสำหรับโค้ดอื่นเพื่อการอ้างอิงและการใช้งาน (คุณสามารถคิดว่านี่เป็นไฟล์ jar ใน Java ที่คุณสามารถเพิ่มในการอ้างอิงโครงการของคุณ)
ในตอนท้ายของวันแอสเซมบลีเป็นรหัสที่คอมไพล์ที่สามารถเรียกใช้บนระบบปฏิบัติการใด ๆ ที่ติดตั้ง CLR นี่เหมือนกับการพูดว่าไฟล์. class หรือ jar ที่บันเดิลสามารถรันบนเครื่องใด ๆ ที่ติดตั้ง JVM
ใน. Net แอสเซมบลีสามารถ :
คอลเลกชันต่างๆที่สามารถจัดการชิ้นส่วนบรรจุ
Types (or Classes)
,Resources (Bitmaps/Images/Strings/Files)
,Namespaces
,Config Files
รวบรวมPrivately
หรือPublicly
; ปรับใช้กับlocal
หรือShared (GAC)
โฟลเดอร์;discover-able
โดยคนอื่น ๆprograms/assemblies
และ; สามารถ version-ed
เนื่องจากแอสเซมบลีเป็นหน่วยที่เล็กที่สุดของการรักษาความปลอดภัยการกำหนดรุ่นการปรับใช้และการใช้งานซ้ำของรหัสใน Microsoft.Net
มันมี:
- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header
แอสเซมบลีเป็นส่วนพื้นฐานของการเขียนโปรแกรมด้วย. NET Framework มันมีรหัสที่ CLR ดำเนินการรหัส MSIL (Microsoft Intermediate Language) ในไฟล์เรียกทำงานแบบพกพาจะไม่ถูกเรียกใช้งานหากไม่มีไฟล์แอสเซมบลีที่เกี่ยวข้อง
แอปพลิเคชั่น. NET สร้างขึ้นโดยการประกอบหลาย ๆ ชุดเข้าด้วยกัน พูดง่ายๆคือชุดประกอบไม่มีอะไรมากไปกว่าไบนารีที่อธิบายตัวเอง (DLL หรือ EXE) ที่มีเวอร์ชันซึ่งประกอบด้วยคอลเลกชันประเภท (คลาส, อินเทอร์เฟซ, โครงสร้าง, ฯลฯ ) และการคัดเลือกเพิ่มเติม (รูปภาพ, ตารางสตริง สิ่งหนึ่งที่ต้องระวังอย่างเจ็บปวดในตอนนี้ก็คือองค์กรภายในของแอสเซมบลี. NET นั้นไม่มีอะไรเหมือนกับองค์กรภายในของเซิร์ฟเวอร์ COM คลาสสิก (โดยไม่คำนึงถึงนามสกุลไฟล์ที่แชร์)
ใน. NET เมื่อเราคอมไพล์ซอร์สโค้ดแล้วแอสเซมบลีจะถูกสร้างขึ้นใน Visual Studio การชุมนุมประกอบด้วยสองส่วน Manifest และ IL (ภาษาระดับกลาง) Manifest มีข้อมูลเมตาแอสเซมบลีหมายถึงข้อกำหนดเวอร์ชันของแอสเซมบลีข้อมูลความปลอดภัยชื่อและแฮชของไฟล์ทั้งหมดที่ประกอบเป็นแอสเซมบลี IL มีข้อมูลเกี่ยวกับการเรียนการก่อสร้างวิธีการหลัก ฯลฯ
ฉันพบว่าลิงก์นี้มีประโยชน์มาก มันยังช่วยให้คุณเห็นว่า IL มีบทบาทใน. NET อย่างไร
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
โซลูชันVisual Studioประกอบด้วยโครงการหนึ่งโครงการขึ้นไป ตัวอย่าง: โครงการคอนโซลสามารถผลิตประกอบ แอสเซมบลีเป็นรหัสที่มีตรรกะที่สามารถจัดส่งไปยังลูกค้าและทางกายภาพเป็น. EXE (โปรแกรมที่เรียกใช้งานได้) หรือ. DLL (สามารถใช้งานได้โดยโปรแกรมอื่น)
แอสเซมบลีประกอบด้วยข้อมูลเกี่ยวกับเนื้อหาการกำหนดรุ่นและการอ้างอิงแอปพลิเคชันที่ใช้ไม่จำเป็นต้องพึ่งพาแหล่งภายนอกเช่นรีจิสทรีบนระบบ Windows เพื่อให้ทำงานได้อย่างถูกต้อง แอสเซมบลีลดความขัดแย้ง. dll และทำให้แอปพลิเคชันของคุณเชื่อถือได้มากขึ้นและง่ายต่อการใช้งาน
มันเป็นคอลเลกชันประเภทและทรัพยากรที่สร้างขึ้นเพื่อทำงานร่วมกันและสร้างหน่วยการใช้งานที่เป็นตรรกะ แอสเซมบลีในรูปแบบของไฟล์ executable (.exe) หรือ dynamic link library (.dll) และเป็นหน่วยการสร้างของแอ็พพลิเคชัน. NET พวกเขาจัดเตรียมรันไทม์ภาษาทั่วไปพร้อมกับข้อมูลที่จำเป็นต้องทราบเกี่ยวกับการใช้งานประเภท
ทุกชุดประกอบมีไฟล์รายการชุดประกอบ คล้ายกับสารบัญรายการประกอบมี:
ในการใช้แอสเซมบลีในแอปพลิเคชันคุณต้องเพิ่มการอ้างอิง เมื่อมีการอ้างอิงแอสเซมบลีชนิดที่เข้าถึงคุณสมบัติวิธีการและสมาชิกอื่น ๆ ของเนมสเปซทั้งหมดจะพร้อมใช้งานสำหรับแอปพลิเคชันของคุณราวกับว่ารหัสของพวกเขาเป็นส่วนหนึ่งของไฟล์ต้นฉบับของคุณ
ดังนั้นเราทุกคนรู้ว่าซอร์สโค้ดของเราถูกแปลงเป็น Microsoft Intermediate Language (MSIL) เมื่อรันไทม์ CLR (Common Languge Runtime) แปลง MSIL เป็นรหัสเนทิฟด้วยคอมไพเลอร์ JIT ก่อนที่จะทำการแปลงรหัส MSIL จะต้องผ่านกระบวนการตรวจสอบที่ตรวจสอบ MSIL + MetaData (ชื่อแอสเซมบลีเวอร์ชันการอ้างอิง): เพื่อค้นหาว่าสามารถกำหนดรหัสให้ปลอดภัยได้หรือไม่ ถ้ามันผ่านการตรวจสอบแล้ว MSIL จะถูกแปลงเป็นรหัสพื้นเมือง วิธีการที่เรียกทั้งหมดจะถูกแปลงเป็นภาษาเครื่องและบันทึกไว้ในแคชสำหรับการใช้งานในภายหลัง