本文整理汇总了C#中System.Reflection.AssemblyName.KeyPair属性的典型用法代码示例。如果您正苦于以下问题:C# AssemblyName.KeyPair属性的具体用法?C# AssemblyName.KeyPair怎么用?C# AssemblyName.KeyPair使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类System.Reflection.AssemblyName
的用法示例。
在下文中一共展示了AssemblyName.KeyPair属性的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MakeAssembly
//引入命名空间
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 = 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:x2}", 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:x2}", pt[i]);
}
}
}