AssemblyName.KeyPair 속성
.NET Framework 2.0
어셈블리의 공개 키 또는 공개 키 토큰에서 생성된 공개 및 개인 암호화 키 쌍을 가져오거나 설정합니다.
네임스페이스: System.Reflection
어셈블리: mscorlib(mscorlib.dll)
어셈블리: mscorlib(mscorlib.dll)
/** @property */ public StrongNameKeyPair get_KeyPair () /** @property */ public void set_KeyPair (StrongNameKeyPair value)
public function get KeyPair () : StrongNameKeyPair public function set KeyPair (value : StrongNameKeyPair)
속성 값
어셈블리 공개 키 또는 공개 키 토큰에서 생성된 공개 및 개인 암호화 키 쌍이 포함된 StrongNameKeyPair 개체입니다.using System; using System.Reflection; using System.Threading; using System.IO; using System.Globalization; using System.Reflection.Emit; using System.Configuration.Assemblies; using System.Text; public class AssemblyName_CodeBase { public static void MakeAssembly(AssemblyName myAssemblyName, string fileName) { // Get the assembly builder from the application domain associated with the current thread. AssemblyBuilder myAssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave); // Create a dynamic module in the assembly. ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("MyModule", fileName); // Create a type in the module. TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyType"); // Create a method called 'Main'. MethodBuilder myMethodBuilder = myTypeBuilder.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, typeof(void), null); // Get the Intermediate Language generator for the method. ILGenerator myILGenerator = myMethodBuilder.GetILGenerator(); // Use the utility method to generate the IL instructions that print a string to the console. myILGenerator.EmitWriteLine("Hello World!"); // Generate the 'ret' IL instruction. myILGenerator.Emit(OpCodes.Ret); // End the creation of the type. myTypeBuilder.CreateType(); // Set the method with name 'Main' as the entry point in the assembly. myAssemblyBuilder.SetEntryPoint(myMethodBuilder); myAssemblyBuilder.Save(fileName); } public static void Main() { // Create a dynamic assembly with name 'MyAssembly' and build version '1.0.0.2001'. AssemblyName myAssemblyName = new AssemblyName(); // Set the codebase to the physical directory were the assembly resides. myAssemblyName.CodeBase = String.Concat("file:///", Directory.GetCurrentDirectory()); // Set the culture information of the assembly to 'English-American'. myAssemblyName.CultureInfo = new CultureInfo("en-US"); // Set the hash algoritm to 'SHA1'. myAssemblyName.HashAlgorithm = AssemblyHashAlgorithm.SHA1; myAssemblyName.VersionCompatibility = AssemblyVersionCompatibility.SameProcess; myAssemblyName.Flags = AssemblyNameFlags.PublicKey; // Provide this assembly with a strong name. myAssemblyName.KeyPair = new StrongNameKeyPair(File.Open("KeyPair.snk", FileMode.Open, FileAccess.Read)); myAssemblyName.Name = "MyAssembly"; myAssemblyName.Version = new Version("1.0.0.2001"); MakeAssembly(myAssemblyName, "MyAssembly.exe"); // Get the assemblies loaded in the current application domain. Assembly[] myAssemblies = Thread.GetDomain().GetAssemblies(); // Get the dynamic assembly named 'MyAssembly'. Assembly myAssembly = null; for(int i = 0; i < myAssemblies.Length; i++) if(String.Compare(myAssemblies[i].GetName().Name, "MyAssembly") == 0) myAssembly = myAssemblies[i]; // Display the full assembly information to the console. if(myAssembly != null) { Console.WriteLine("\nDisplaying the full assembly name.\n"); Console.WriteLine(myAssembly.GetName().FullName); Console.WriteLine("\nDisplaying the public key.\n"); byte []pk; pk = myAssembly.GetName().GetPublicKey(); for (int i=0;i<pk.GetLength(0);i++) Console.Write ("{0:x}", pk[i]); Console.WriteLine(); Console.WriteLine("\nDisplaying the public key token.\n"); byte []pt; pt = myAssembly.GetName().GetPublicKeyToken(); for (int i=0;i<pt.GetLength(0);i++) Console.Write ("{0:x}", pt[i]); } } }
import System.*;
import System.Reflection.*;
import System.Threading.*;
import System.IO.*;
import System.Globalization.*;
import System.Reflection.Emit.*;
import System.Configuration.Assemblies.*;
import System.Text.*;
public class AssemblyNameCodeBase
{
public static void MakeAssembly(AssemblyName myAssemblyName,
String fileName)
{
// Get the assembly builder from the application domain associated
// with the current thread.
AssemblyBuilder myAssemblyBuilder = System.Threading.Thread.
GetDomain().DefineDynamicAssembly(myAssemblyName,
AssemblyBuilderAccess.RunAndSave);
// Create a dynamic module in the assembly.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.
DefineDynamicModule("MyModule", fileName);
// Create a type in the module.
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyType");
// Create a method called 'main'.
MethodBuilder myMethodBuilder = myTypeBuilder.DefineMethod("main",
MethodAttributes.Public | MethodAttributes.HideBySig
| MethodAttributes.Static, void.class.ToType(), null);
// Get the Intermediate Language generator for the method.
ILGenerator myILGenerator = myMethodBuilder.GetILGenerator();
// Use the utility method to generate the IL instructions
// that print a string to the console.
myILGenerator.EmitWriteLine("Hello World!");
// Generate the 'ret' IL instruction.
myILGenerator.Emit(OpCodes.Ret);
// End the creation of the type.
myTypeBuilder.CreateType();
// Set the method with name 'main' as the entry point in the assembly.
myAssemblyBuilder.SetEntryPoint(myMethodBuilder);
myAssemblyBuilder.Save(fileName);
} //MakeAssembly
public static void main(String[] args)
{
// Create a dynamic assembly with name 'MyAssembly' and
// build version '1.0.0.2001'.
AssemblyName myAssemblyName = new AssemblyName();
// Set the codebase to the physical directory were the assembly resides.
myAssemblyName.set_CodeBase(String.Concat("file:///",
Directory.GetCurrentDirectory()));
// Set the culture information of the assembly to 'English-American'.
myAssemblyName.set_CultureInfo(new CultureInfo("en-US"));
// Set the hash algoritm to 'SHA1'.
myAssemblyName.set_HashAlgorithm(AssemblyHashAlgorithm.SHA1);
myAssemblyName.set_VersionCompatibility(
AssemblyVersionCompatibility.SameProcess);
myAssemblyName.set_Flags(AssemblyNameFlags.PublicKey);
// Provide this assembly with a strong name.
myAssemblyName.set_KeyPair(new StrongNameKeyPair(File.Open(
"KeyPair.snk", FileMode.Open, FileAccess.Read)));
myAssemblyName.set_Name("MyAssembly");
myAssemblyName.set_Version(new Version("1.0.0.2001"));
MakeAssembly(myAssemblyName, "MyAssembly.exe");
// Get the assemblies loaded in the current application domain.
Assembly myAssemblies[] = System.Threading.Thread.GetDomain().
GetAssemblies();
// Get the dynamic assembly named 'MyAssembly'.
Assembly myAssembly = null;
for (int i = 0; i < myAssemblies.length; i++) {
if (String.Compare(((Assembly)myAssemblies.get_Item(i)).GetName().
get_Name(), "MyAssembly") == 0) {
myAssembly = (Assembly)myAssemblies.get_Item(i);
}
}
// Display the full assembly information to the console.
if (myAssembly != null) {
Console.WriteLine("\nDisplaying the full assembly name.\n");
Console.WriteLine(myAssembly.GetName().get_FullName());
Console.WriteLine("\nDisplaying the public key.\n");
ubyte pk[];
pk = myAssembly.GetName().GetPublicKey();
for (int i = 0; i < pk.GetLength(0); i++) {
Console.Write("{0:x}", pk.get_Item(i));
}
Console.WriteLine();
Console.WriteLine("\nDisplaying the public key token.\n");
ubyte pt[];
pt = myAssembly.GetName().GetPublicKeyToken();
for (int i = 0; i < pt.GetLength(0); i++) {
Console.Write("{0:x}", pt.get_Item(i));
}
}
} //main
} //AssemblyNameCodeBase
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.