AssemblyName.KeyPair プロパティ
アセンブリの公開キーまたは公開キー トークンが生成した公開暗号キーと秘密暗号キーのペアを取得または設定します。
Public Property KeyPair As StrongNameKeyPair
[C#]
public StrongNameKeyPair KeyPair {get; set;}
[C++]
public: __property StrongNameKeyPair* get_KeyPair();public: __property void set_KeyPair(StrongNameKeyPair*);
[JScript]
public function get KeyPair() : StrongNameKeyPair;public function set KeyPair(StrongNameKeyPair);
プロパティ値
アセンブリの公開キーまたは公開キー トークンが生成した公開暗号キーと秘密暗号キーのペアを保持している StrongNameKeyPair オブジェクト。
解説
ランタイムは、アセンブリを読み込むときに、 AssemblyName.KeyPair プロパティを設定しません。このプロパティの getter は、アセンブリが読み込まれた後でユーザーがプロパティを設定し、続けてそのプロパティを取得する場合にだけ有用です。
使用例
Imports System
Imports System.Reflection
Imports System.Threading
Imports System.IO
Imports System.Globalization
Imports System.Reflection.Emit
Imports System.Configuration.Assemblies
Imports System.Text
Imports Microsoft.VisualBasic
Public Class AssemblyName_CodeBase
Public Shared Sub MakeAssembly(myAssemblyName As AssemblyName, fileName As String)
' Get the assembly builder from the application domain associated with the current thread.
Dim myAssemblyBuilder As AssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Create a dynamic module in the assembly.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule("MyModule", fileName)
' Create a type in the module.
Dim myTypeBuilder As TypeBuilder = myModuleBuilder.DefineType("MyType")
' Create a method called 'Main'.
Dim myMethodBuilder As MethodBuilder = myTypeBuilder.DefineMethod("Main", MethodAttributes.Public Or MethodAttributes.HideBySig Or MethodAttributes.Static, GetType(object), Nothing)
' Get the Intermediate Language generator for the method.
Dim myILGenerator As ILGenerator = 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)
End Sub 'MakeAssembly
Public Shared Sub Main()
' Create a dynamic assembly with name 'MyAssembly' and build version '1.0.0.2001'.
Dim myAssemblyName As 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.
Dim myAssemblies As [Assembly]() = Thread.GetDomain().GetAssemblies()
' Get the dynamic assembly named 'MyAssembly'.
Dim myAssembly As [Assembly] = Nothing
Dim i As Integer
For i = 0 To myAssemblies.Length - 1
If [String].Compare(myAssemblies(i).GetName().Name, "MyAssembly") = 0 Then
myAssembly = myAssemblies(i)
End If
Next i ' Display the full assembly information to the console.
If Not (myAssembly Is Nothing) Then
Console.WriteLine(ControlChars.CrLf +"Displaying the full assembly name."+ ControlChars.CrLf)
Console.WriteLine(myAssembly.GetName().FullName)
Console.WriteLine(ControlChars.CrLf +"Displaying the public key." + ControlChars.CrLf)
Dim pk() As Byte
pk = myAssembly.GetName().GetPublicKey()
For i = 0 To (pk.GetLength(0)) - 1
Console.Write("{0:x}", pk(i))
Next i
Console.WriteLine()
Console.WriteLine(ControlChars.CrLf +"Displaying the public key token."+ ControlChars.CrLf)
Dim pt() As Byte
pt = myAssembly.GetName().GetPublicKeyToken()
For i = 0 To (pt.GetLength(0)) - 1
Console.Write("{0:x}", pt(i))
Next i
End If
End Sub 'Main
End Class 'AssemblyName_CodeBase
[C#]
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]);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Threading;
using namespace System::IO;
using namespace System::Globalization;
using namespace System::Reflection::Emit;
using namespace System::Configuration::Assemblies;
using namespace System::Text;
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(S"MyModule", fileName);
// Create a type in the module.
TypeBuilder* myTypeBuilder = myModuleBuilder->DefineType(S"MyType");
// Create a method called 'Main'.
MethodBuilder* myMethodBuilder = myTypeBuilder->DefineMethod(S"Main",
static_cast<MethodAttributes>( MethodAttributes::Public | MethodAttributes::HideBySig | MethodAttributes::Static ),
__typeof(void), 0);
// 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(S"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);
}
int 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(S"file:///", Directory::GetCurrentDirectory());
// Set the culture information of the assembly to 'English-American'.
myAssemblyName->CultureInfo = new CultureInfo(S"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(S"KeyPair.snk", FileMode::Open, FileAccess::Read));
myAssemblyName->Name = S"MyAssembly";
myAssemblyName->Version = new Version(S"1.0.0.2001");
MakeAssembly(myAssemblyName, S"MyAssembly.exe");
// Get the assemblies loaded in the current application domain.
Assembly* myAssemblies[] = Thread::GetDomain()->GetAssemblies();
// Get the dynamic assembly named 'MyAssembly'.
Assembly* myAssembly = 0;
for (int i = 0; i < myAssemblies->Length; i++)
if (String::Compare(myAssemblies[i]->GetName()->Name, S"MyAssembly") == 0)
myAssembly = myAssemblies[i];
// Display the full assembly information to the console.
if (myAssembly != 0) {
Console::WriteLine(S"\nDisplaying the full assembly name.\n");
Console::WriteLine(myAssembly->GetName()->FullName);
Console::WriteLine(S"\nDisplaying the public key.\n");
Byte pk[];
pk = myAssembly->GetName()->GetPublicKey();
for (int i=0;i<pk->GetLength(0);i++)
Console::Write (S" {0:x}", pk->Item[i]);
Console::WriteLine();
Console::WriteLine(S"\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->Item[i]);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
AssemblyName クラス | AssemblyName メンバ | System.Reflection 名前空間