AssemblyName.HashAlgorithm Property
Gets or sets the hash algorithm used by the assembly manifest.
Assembly: mscorlib (in mscorlib.dll)
Property Value
Type: System.Configuration.Assemblies.AssemblyHashAlgorithmThe hash algorithm used by the assembly manifest.
Important |
|---|
Starting with the .NET Framework version 4, the HashAlgorithm property of an AssemblyName object that is returned by the Assembly.GetReferencedAssemblies method is AssemblyHashAlgorithm.None if there is no hash algorithm for the referenced assembly, or if the hash algorithm of the referenced assembly is not identified by the System.Configuration.Assemblies.AssemblyHashAlgorithm enumeration. In previous versions of the .NET Framework, the HashAlgorithm property returned AssemblyHashAlgorithm.SHA1 in this situation. |
The following example emits a dynamic assembly and saves it to the current directory. When the assembly is created, the HashAlgorithm property is used to set the hash algorithm for the assembly manifest.
Imports System Imports Microsoft.VisualBasic Imports System.Reflection Imports System.Threading Imports System.IO Imports System.Globalization Imports System.Reflection.Emit Imports System.Configuration.Assemblies 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 = 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.Name = "MyAssembly" myAssemblyName.Version = New Version("1.0.0.2001") MakeAssembly(myAssemblyName, "MyAssembly.exe") ' Get all the assemblies currently loaded in the 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(vbCrLf & "Displaying the full assembly name" & vbCrLf) Console.WriteLine(myAssembly.GetName().FullName) End If End Sub End Class
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Important