บทความนี้อธิบายวิธีการสร้างชื่อที่รัดกุมสำหรับแอสเซมบลี และการติดตั้งแฟ้ม.dll ในแบบสากลแอสเซมบลีแคช (GAC)
ด้วย GAC คุณสามารถใช้แอสเซมบลีร่วมระหว่างโปรแกรมประยุกต์จำนวนมาก GAC ไม่ได้รับการติดตั้งโดยอัตโนมัติ ด้วยการใช้งานจริง.NET โดยปกติจะมีการจัดเก็บคอมโพเนนต์ใน C:\WINNT\Assembly
การติดตั้งแอสเซมบลีใน GAC คุณต้องตั้งชื่อที่ซับซ้อนให้กับแอสเซมบลี ชื่อไม่มีแฮคีย์การเข้ารหัสลับ หรือลายเซ็น
ชื่อที่รัดกุมนี้ช่วยให้มั่นใจการกำหนดรุ่นของคอมโพเนนต์ที่ถูกต้อง ซึ่งช่วยป้องกันไม่ให้คอมโพเนนต์ที่มีชื่อเดียวกัน จาก conflicting กัน หรือ จากการไม่ถูกต้องได้ถูกใช้โดยโปรแกรมประยุกต์ที่ consuming
ความต้องการ
รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่จำเป็นต้องใช้:
- สิทธิ์ของผู้ดูแลเข้ากับคอมพิวเตอร์ที่แอสเซมบลีที่ใช้ร่วมกันจะถูกติดตั้งอยู่
บทความนี้อนุมานว่า คุณไม่คุ้นเคยกับหัวข้อต่อไปนี้:
- familiarity ทั่วไป ด้วยแอสเซมบลีใน.NET
- familiarity ทั่วไปเกี่ยวกับการใช้เครื่องมือที่พร้อมท์รับคำสั่ง
แคชของแอสเซมบลีส่วนกลาง
เมื่อต้องการสร้างโครงการไลบรารีคลาสขนาดเล็ก โดยใช้ Visual Studio การสร้างชื่อที่เข้มงวด และติดตั้งแฟ้ม.dll ของโครงการใน GAC ดำเนินการดังต่อไปนี้:
- ใน Visual Studio สร้างการใหม่ Visual c# คลาโครงการไลบรารี และชื่อโครงการGACDemo.
- คุณต้องใช้ชื่อที่รัดกุม เมื่อต้องการสร้างคู่คีย์การเข้ารหัสลับนี้ ใช้เครื่องมือการ SN เครื่องมือนี้จะอยู่ในไดเรกทอรีย่อย \bin ซึ่งมีการติดตั้งใน.NET Framework โซลูชันสำหรับนักพัฒนา Kit (SDK) เครื่องมือการ SN ง่ายใช้อยู่ คำสั่งบรรทัดคำสั่งที่ใช้ต่อไปนี้
sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
หมายเหตุ:ใน Visual Studio 2005 และ Visual Studio รุ่นที่ใหม่กว่า คุณสามารถใช้คุณสมบัติของโครงการ IDE คู่ของคีย์สร้าง และลงทะเบียนแอสเซมบลีของคุณ แล้ว คุณสามารถข้ามขั้นตอนที่ 3 และขั้นตอนที่ 4 และยัง ให้ข้ามการทำการเปลี่ยนแปลงรหัสใด ๆ ไปยังแฟ้ม AssemblyInfo.cs
เมื่อต้องการใช้คุณสมบัติของโครงการ IDE คู่ของคีย์สร้าง และลงทะเบียนแอสเซมบลีของคุณ ดำเนินการดังต่อไปนี้:- คลิกขวาใน Explorer โซลูชันGACDemoแล้ว คลิกคุณสมบัติ.
- คลิกการการเซ็นชื่อแท็บ และคลิกเพื่อเลือกนั้นเซ็นชื่อแอสเซมบลีกล่องกาเครื่องหมาย
- ในการเลือกคีย์การชื่อที่รัดกุมรายการ คลิก<new...></new...>.
- ประเภท:GACkey.snkชื่อแฟ้มที่สำคัญ คลิกเพื่อยกเลิกการป้องกันแฟ้มของฉันคีย์ ด้วยรหัสผ่านกล่องกาเครื่องหมาย และจากนั้น คลิกตกลง.
- กด CTRL + SHIFT + B เพื่อคอมไพล์โครงการ
หลังจากที่คุณทำตามขั้นตอนเหล่านี้ คุณยังคงต้องทำตามขั้นตอนที่ 5 การติดตั้งแอสเซมบลีของคุณใน GAC - สร้างไดเรกทอรีที่ระบุGACKeyใน C:\ เพื่อให้คุณสามารถได้อย่างง่ายดายคีย์ในการค้นหา และเข้าถึงคีย์ที่พร้อมท์รับคำสั่ง
หมายเหตุ:สำหรับผู้ใช้ที่มากที่สุด เครื่องมือ.NET จะอยู่ใน C:\Program Files\Microsoft.NET\FrameworkSDK\Bin ก่อนที่คุณพิมพ์คำสั่งต่อไปนี้ของ SN คุณอาจต้องการคัดลอกเส้นทางนี้คล้ายคลึงกันบนคอมพิวเตอร์ของคุณไปยังไดเรกทอรีของช่องเก็บ.NET ประเภท:ซีดีหน้าจอพร้อมรับคำสั่ง คลิกขวาที่การวางเส้นทาง และกด enter เพื่อเปลี่ยนไดเรกทอรีซึ่งเป็นที่ตั้งของเครื่องมือการ SN อย่างรวดเร็ว
พิมพ์ต่อไปนี้:sn -k "C:\GACKey\GACkey.snk"
- มีสร้างคีย์ แต่ไม่ได้เชื่อมโยงกับแอสเซมบลีของโครงการ เมื่อต้องการสร้างความสัมพันธ์นี้ คลิกสองครั้งที่แฟ้ม AssemblyInfo.cs ใน Visual Studio .NET โซลูชัน Explorer แฟ้มนี้มีรายการของแอตทริบิวต์ของแอสเซมบลีที่รวมอยู่ โดยค่าเริ่มต้นเมื่อสร้างโครงการใน Visual Studio .NET ปรับเปลี่ยนAssemblyKeyFileแอสเซมบลีคุณลักษณะในรหัสต่อไปนี้:
[แอสเซมบลี: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
การคอมไพล์โครงการ โดยการคลิก CTRL + SHIFT + B คุณไม่จำเป็นต้องมีรหัสเพิ่มเติมใด ๆ ที่อยู่ในการติดตั้งแฟ้ม.dll ใน GAC - คุณสามารถติดตั้งแฟ้ม.dll โดยการใช้เครื่องมือ Gacutil หรือ โดยการลากแฟ้ม.dll ไปยังโฟลเดอร์ที่เหมาะสม ถ้าคุณใช้ Gacutil เครื่องมือ คุณสามารถใช้คำสั่งที่มีลักษณะดังต่อไปนี้:
gacutil - ฉัน "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
เมื่อต้องการลากแฟ้ม เปิดอินสแตนซ์ที่สองของ Windows Explorer ในอินสแตนซ์ที่หนึ่ง ค้นหาตำแหน่งที่ตั้งของผลลัพธ์แฟ้ม.dll สำหรับโครงการคอนโซลของคุณ ในที่อื่น ๆ สแตนซ์ ค้นหา c:\[SystemRoot]\Assembly จากนั้น ลากแฟ้ม.dll ของคุณไปแอสเซมบลีโฟลเดอร์
การแสดงรายการรหัสเสร็จสมบูรณ์ (AssemblyInfo.cs)
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly is made up of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values, or you can default the revision and build numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// To sign your assembly you must specify a key to use. See the
// Microsoft .NET Framework documentation for more information about assembly signing.
//
// Use the following attributes to control that key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your computer. KeyFile refers to a file that contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed to the CSP and used.
// (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile must be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information about this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]
การตรวจสอบ
- เปิด Windows Explorer
- ค้นหา C:\SystemRoot\ แอสเซมบลี
- คุณเห็น GACDemo ในรายชื่อแฟ้ม.dll ที่ติดตั้ง
สำหรับข้อมูลเพิ่มเติม ให้ดูเว็บไซต์ต่อไปนี้ของ Microsoft:
หมายเลขบทความ (Article ID): 815808 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 4.0
ใช้กับ
- Microsoft Visual C# 2008 Express Edition
- Microsoft Visual C# 2005 Express Edition
- Microsoft Visual C# .NET 2003 Standard Edition
- Microsoft ASP.NET 1.0
- Microsoft ASP.NET 1.1
| kbcodesign kbcommandline kbnamespace kbhowtomaster kbmt KB815808 KbMtth |
แปลโดยคอมพิวเตอร์ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:
815808
(http://support.microsoft.com/kb/815808/en-us/
)