VB.Net Tutorial/Development/Assembly
Содержание
Get Assembly: Code base, Full name, Entry point, Assembly Cache, Location
<source lang="vbnet">Imports System.Reflection Module Module1
Sub Main() Dim thisAssembly As [Assembly] = [Assembly].GetExecutingAssembly() Console.WriteLine("Code base: " & thisAssembly.CodeBase) Console.WriteLine("Full name: " & thisAssembly.FullName) Console.WriteLine("Entry point: " & thisAssembly.EntryPoint.ToString()) Console.WriteLine("From Global Assembly Cache: " & thisAssembly.GlobalAssemblyCache) Console.WriteLine("Location: " & thisAssembly.Location) End Sub
End Module</source>
Code base: file:///C:/Java_Dev/WEB/dev/VB/main.exe Full name: main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Entry point: Void Main() From Global Assembly Cache: False Location: C:\Java_Dev\WEB\dev\VB\main.exe
Get Referenced Assemblies
<source lang="vbnet">Imports System.Reflection Module Module1
Sub Main() Dim thisAssembly As [Assembly] = [Assembly].GetExecutingAssembly() Console.WriteLine("Referenced Assemblies: ") Dim RefAssembly As AssemblyName For Each RefAssembly In thisAssembly.GetReferencedAssemblies() Console.WriteLine(RefAssembly.FullName) Next End Sub
End Module</source>
Referenced Assemblies: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Get types from Assembly
<source lang="vbnet">Imports System.Reflection Module Module1
Sub Main() Dim thisAssembly As [Assembly] = [Assembly].GetExecutingAssembly() Console.Write("Types: ") Dim TypeObj As Type For Each TypeObj In thisAssembly.GetTypes() Console.Write(TypeObj.Name & " ") Next End Sub
End Module</source>
Types: MyApplication MyComputer MyProject MyWebServices ThreadSafeObjectProvider`1 Module1 "
Given an assembly, display details from its manifest
<source lang="vbnet">Imports System.Text Imports System.Security.Cryptography Public Class Tester
Public Shared Sub Main Dim useAssembly As System.Reflection.Assembly Try useAssembly = Reflection.Assembly.LoadFile("YourAssemblyLocation") Catch ex As System.Exception Console.WriteLine(ex.Message) Return End Try
Console.WriteLine("Full Name: " & useAssembly.FullName) Console.WriteLine("Resources") For Each oneName As String In useAssembly.GetManifestResourceNames() Console.WriteLine(" - " & oneName) Next oneName Console.WriteLine("Exported Types") For Each oneType As System.Type In useAssembly.GetExportedTypes() Console.WriteLine(" - " & oneType.Name) Next oneType Console.WriteLine("Modules") For Each oneModule As Reflection.Module In useAssembly.GetLoadedModules() Console.WriteLine(" - " & oneModule.Name) For Each oneType As System.Type In oneModule.GetTypes() Console.WriteLine(" Type: " & oneType.Name) For Each oneField As Reflection.FieldInfo In oneType.GetFields() Console.WriteLine(" Field: " & oneField.ToString()) Next oneField For Each oneMethod As Reflection.MethodInfo In oneType.GetMethods() Console.WriteLine(" Method: " & oneMethod.ToString()) Next oneMethod Next oneType Next oneModule End Sub
End Class</source>
Absolute path information is required.
Load Assembly from a url
<source lang="vbnet">imports System.Reflection " necessary for instantiating assemblies Imports System.Windows.Forms Public Class Tester
Public Shared Sub Main try dim strUrl as String = "http" & "://localhost/MultiFileAssyVB/vbDeploy.exe"
" dim strUrl as String = "http" & "://localhost/MultiFileAssy/csDeploy.exe"
dim a as [Assembly] = [Assembly].LoadFrom(strUrl) dim t as Type = a.GetType("Form1")
" dim t as Type = a.GetType("csDeploy.Form1")
dim o as Object = Activator.CreateInstance(t) dim frm as Form = CType(o, Form) frm.Show() catch ex as Exception Console.WriteLine(ex.ToString) End Try End Sub
End Class</source>
Load Assembly from DLL
<source lang="vbnet">Option Strict On Imports System.IO Imports System.Reflection Public Module Reflection
Public Sub Main Const path As String = "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" If File.Exists(path) Then Dim ass As Assembly = Assembly.LoadFrom(path) Dim typ As Type = ass.GetType("System.Array") Dim members As MemberInfo() = typ.GetMembers(BindingFlags.Instance _ Or BindingFlags.Public) Console.WriteLine(members.Length) End If End Sub
End Module</source>
43