Bu sayfa faydalı mıydı?
Bu içerik hakkındaki geri bildiriminiz önemli. Ne düşündüğünüzü bilmemize izin verin.
İlave geri bildirim?
1500 karakter kaldı
SetPublicKeyToken Yöntem
Bu makale makine tarafından çevrilmiştir. Orijinal metni görmek için imlecinizi makaledeki cümlelerin üzerine getirin. Daha Fazla Bilgi.
Çeviri
Original

AssemblyName.SetPublicKeyToken Yöntem

Derleme veya uygulama altında imzalandığı ortak anahtarın SHA-1 karması son 8 baytını olan ortak anahtar belirteci ayarlar.

Ad alanı:  System.Reflection
Derleme:  mscorlib (mscorlib.dll içinde)

public void SetPublicKeyToken(
	byte[] publicKeyToken
)

Parametreler

publicKeyToken
Tür: System.Byte[]
Derlemenin ortak anahtar belirteci içeren bir bayt dizisi.

Çağırarak ortak anahtarı ayarlandığında SetPublicKey yöntemini kullanmanız gerekir SetPublicKeyToken bir ortak anahtar belirteci sağlamak için yöntem. Aksi halde, bir SecurityException ne zaman atılır GetPublicKey yöntemi çağrılır.

Aşağıdaki örnek, bir dinamik derleme yayar ve geçerli dizine kaydeder. Derleme oluşturulurken, SetPublicKeyToken yöntemi derlemenin ortak anahtar belirteci ayarlamak için kullanılır. GetPublicKeyToken Yöntemi konsolda görüntülenen ortak anahtar belirteci almak için sonra kullanılır.


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;
      // Get the whole contents of the 'PublicKey.snk' into a byte array.
      FileStream publicKeyStream = File.Open("PublicKey.snk", FileMode.Open);
      byte[] publicKey = new byte[publicKeyStream.Length];
      publicKeyStream.Read(publicKey, 0, (int)publicKeyStream.Length);
      // Provide the assembly with a public key.
      myAssemblyName.SetPublicKey(publicKey);
      // Get the whole contents of the 'PublicKeyToken.snk' into a byte array.
      FileStream publicKeyTokenStream = File.Open("PublicKeyToken.snk", FileMode.Open);
      byte[] publicKeyToken = new Byte[publicKeyTokenStream.Length];
      publicKeyTokenStream.Read(publicKeyToken, 0, (int)publicKeyToken.Length);
      // Provide the assembly with a public key token.
      myAssemblyName.SetPublicKeyToken(publicKeyToken);
      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");
         string assemblyName = myAssembly.GetName().FullName;
         Console.WriteLine(assemblyName);
         Console.WriteLine("\nDisplaying the public key for the assembly\n");
         byte[] publicKeyBytes = myAssembly.GetName().GetPublicKey();
         Console.WriteLine(Encoding.ASCII.GetString(publicKeyBytes));
         Console.WriteLine("\nDisplaying the public key token for the assembly\n");
         byte[] publicKeyTokenBytes = myAssembly.GetName().GetPublicKeyToken();
         Console.WriteLine(Encoding.ASCII.GetString(publicKeyTokenBytes));
      }
   }
}


.NET Framework

Destekleyen: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework İstemci Profili

Destekleyen: 4, 3.5 SP1

Taşınabilir Sınıf Kitaplığı

Destekleyen: Taşınabilir Sınıf Kitaplığı

Windows Mağazası uygulamaları için .NET

Destekleyen: Windows 8

Windows Phone uygulamaları için .NET

Destekleyen: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Sunucu Çekirdeği Rolü desteklenmez), Windows Server 2008 R2 (Sunucu Çekirdeği Rolü, SP1 veya sonraki sürümlerle desteklenir; Itanium'da desteklenmez)

.NET Framework her platformun tüm sürümlerini desteklemez. Desteklenen sürümlerin listesi için bkz. .NET Framework Sistem Gereksinimleri.

Topluluk İçeriği

Ekle
Show:
© 2015 Microsoft