คุณช่วยอธิบายได้ไหมว่า Assembly ใน C # หรือ. NET คืออะไร
- มันเริ่มต้นที่ไหนและสิ้นสุดที่ไหน?
- ฉันควรรู้ข้อมูลสำคัญอะไรบ้างเกี่ยวกับแอสเซมบลี
คุณช่วยอธิบายได้ไหมว่า Assembly ใน C # หรือ. NET คืออะไร
คำตอบ:
แอสเซมบลีคือเอาต์พุตที่คอมไพล์แล้วของโค้ดของคุณโดยทั่วไปคือ DLL แต่ EXE ของคุณยังเป็นแอสเซมบลี เป็นหน่วยการปรับใช้ที่เล็กที่สุดสำหรับโครงการ. NET
โดยทั่วไปแล้วแอสเซมบลีจะประกอบด้วยรหัส. NET ใน MSIL (ภาษา Microsoft Intermediate) ที่จะถูกคอมไพล์เป็นโค้ดเนทีฟ ("JITted" - คอมไพล์โดยคอมไพเลอร์ Just-In-Time) ในครั้งแรกที่เรียกใช้งานบนเครื่องที่กำหนด โค้ดที่คอมไพล์นั้นจะถูกเก็บไว้ในแอสเซมบลีและใช้ซ้ำในการโทรครั้งต่อ ๆ ไป
แอสเซมบลียังสามารถมีทรัพยากรเช่นไอคอนบิตแมปตารางสตริงและอื่น ๆ นอกจากนี้แอสเซมบลียังมีข้อมูลเมตาในรายการแอสเซมบลี - ข้อมูลเช่นหมายเลขเวอร์ชันชื่อที่แข็งแกร่งวัฒนธรรมแอสเซมบลีที่อ้างอิงและอื่น ๆ
ใน 99% ของเคสของคุณหนึ่งแอสเซมบลีเท่ากับไฟล์ฟิสิคัลบนดิสก์ - เคสของแอสเซมบลีหลายไฟล์ (หนึ่งแอสเซมบลีกระจายมากกว่าไฟล์เดียว) ดูเหมือนจะเป็นเคส edge ที่ค่อนข้างแปลกซึ่งฉัน ไม่เคยพบมาก่อนในช่วง 5 ปีขึ้นไปของการพัฒนา. NET
ในชุดประกอบหลายไฟล์จะยังคงมีรายการประกอบเพียงรายการเดียวใน DLL หรือ EXE และรหัส MSIL ในไฟล์ netmodule หลายไฟล์
ในกรอบงาน Microsoft .NET แอสเซมบลีคือไลบรารีโค้ดที่คอมไพล์แล้วบางส่วนเพื่อใช้ในการปรับใช้การกำหนดเวอร์ชันและความปลอดภัย
http://www.codeguru.com/columns/csharp_learning/article.php/c5845
แอสเซมบลีคือไฟล์ที่คอมไพลเลอร์สร้างขึ้นโดยอัตโนมัติเมื่อคอมไพล์แอปพลิเคชัน. NET ทุกตัวสำเร็จ อาจเป็นได้ทั้งไดนามิกลิงก์ไลบรารีหรือไฟล์ปฏิบัติการ มันถูกสร้างขึ้นเพียงครั้งเดียวสำหรับแอ็พพลิเคชันและในการคอมไพล์ที่ตามมาแต่ละครั้งแอสเซมบลีจะได้รับการอัพเดต
นี่คือคำอธิบายอีกประการหนึ่งเกี่ยวกับการประกอบ. NET Assemblies คำพูดย่อ:
กรอบงาน. NET ประกอบด้วยแนวคิดของโมดูลแอสเซมบลีซึ่งทั้งเก็บข้อมูลเมตาและข้อมูลรายการ ชุดประกอบสามารถมีหลายโมดูล Visual C # จะสร้างโมดูลเดียวซึ่งกลายเป็นแอสเซมบลีโดยคอมไพเลอร์ C # (csc.exe) แต่แอสเซมบลีสามารถเชื่อมโยงโมดูล. NET จำนวนมากเข้าด้วยกันผ่านเครื่องมือบรรทัดคำสั่งแอสเซมบลีลิงค์เกอร์ (al.exe) ตัวอย่างเช่นไฟล์ซอร์สโค้ด. c แต่ละไฟล์ของคุณสามารถคอมไพล์ลงในโมดูลและเชื่อมโยงเข้าด้วยกันเพื่อสร้างแอสเซมบลี - แอสเซมบลีเป็นเพียงชุดของโมดูลและทรัพยากร อย่างไรก็ตามหนึ่งในโมดูลเหล่านี้ ต้องมีข้อมูลเมตาดาต้าของรายการ (ดูด้านล่าง) เพื่อให้ CLR เข้าใจแอสเซมบลี
....
เมื่อสร้าง. exe หรือ. dll ใหม่ภายใน VS.NET คุณจะเห็นไฟล์ของคุณปรากฏในโฟลเดอร์ถังขยะของคุณ การเปิดใน notepad จะทำให้พูดพล่อยๆหรือแม้กระทั่งในโปรแกรมแก้ไขเลขฐานสิบหกโดยไม่ทราบโครงสร้างของไฟล์คุณต้องมีเครื่องมือเช่น ildasm.exe หรือ CFF explorer เพื่อสร้างความหมายจากมัน โครงสร้างของชุดประกอบมีดังนี้:ส่วนหัว PE ส่วน
หัว
CLR ข้อมูลเมตา
CLR
รหัสCLR IL
ข้อมูลดั้งเดิม
คำตอบคือเพื่อให้เข้าใจได้ทันที
พูดง่ายๆก็คือเป็นโครงการที่รวบรวมที่เกี่ยวข้องกับคลาสและไฟล์เพิ่มเติมของคุณหากมี นั่นคือแต่ละโครงการในการแก้ปัญหาคือการชุมนุม
หรือมากกว่าทางเทคนิค
การชุมนุมเป็นที่ที่ชนิดถูกเก็บไว้ใน flesystem แอสเซมบลีเป็นกลไกในการปรับใช้โค้ด ตัวอย่างเช่น
System.Data.dll
แอสเซมบลีประกอบด้วยประเภทสำหรับจัดการข้อมูล ในการใช้ประเภทในแอสเซมบลีอื่นต้องอ้างอิง - ที่มา
เราจะรู้ได้อย่างไร? หากคุณดูคุณสมบัติของโครงการภายใต้โซลูชันคุณจะเห็นภาพต่อไปนี้
เมื่อคุณคอมไพล์โครงการก็จะเปิดออกเพื่อDLLหรือEXE
เมื่อซอร์สโค้ดถูกคอมไพเลอร์โดยภาษาคอมไพเลอร์จะสร้างManaged Assemblyและ MSIL (MisroSoft Intermediate Language) ที่สภามีไฟล์ .dll หรือ .exe Assebmly สามารถเป็นได้สองประเภทPrivate AssemblyและShared Assembly แอสเซมบลีที่ใช้ร่วมกันจะถูกเก็บไว้ในGAC (Global Assembly Cache)เพื่อให้แอปพลิเคชันใด ๆ สามารถอ้างถึงได้ในขณะที่แอสเซมบลีส่วนตัวถูกเก็บไว้ในโฟลเดอร์แอปพลิเคชันซึ่งสามารถใช้ได้โดยแอปพลิเคชันเดียวเท่านั้น
แอสเซมบลีคือ DLL หรือ EXE ซึ่งจะสร้างขึ้นเมื่อคุณเผยแพร่หรือคอมไพล์แอปพลิเคชันของคุณ
หลังจากเขียนซอร์สโค้ดของโปรแกรมของคุณ (โครงการ) แล้วไฟล์จะถูกสร้างขึ้นซึ่งอาจเป็น DLL หรือ EXE ขึ้นอยู่กับโครงการของคุณ ทำให้เพียงครั้งเดียวสำหรับโครงการเดียว มีสองประเภท 1: - เดี่ยว 2: - แอสเซมบลีเดี่ยวที่ใช้ร่วมกันหรือหลายโปรแกรมที่ใช้เฉพาะในโปรแกรมเดียวในขณะที่แชร์สามารถใช้สำหรับมัลติโปรแกรม
แอสเซมบลีคือชุดของหน่วยตรรกะ โลจิคัลยูนิตอ้างถึงชนิดและรีซอร์สที่จำเป็นในการสร้างแอ็พพลิเคชันและปรับใช้โดยใช้. Net framework โดยทั่วไป Assembly คือชุดของ Exe และ DLL เป็นแบบพกพาและปฏิบัติการได้