|
|
发表于 2006-3-20 17:37:00
|
显示全部楼层
Re:建议大家把VB增加运行速度的方法汇集一下
动态编译vb或者c#代码,并且使用其中方法,让c#当vb.net的苦力,哈哈~
Console.WriteLine("系统信息:开始初始化脚本文件……")
m_params.GenerateInMemory = True
m_params.GenerateExecutable = False
m_params.CompilerOptions = "/target:library /optimize"
m_params.WarningLevel = 4
m_params.ReferencedAssemblies.Add("System.dll")
m_params.ReferencedAssemblies.Add("System.Data.dll")
m_params.ReferencedAssemblies.Add("MyWoW.Common.dll")
files = IO.Directory.GetFiles("scripts\Player\")
If files Is Nothing Then
Console.WriteLine("错误:缺少Player脚本!")
Me.Finalize()
Exit Sub
End If
If files(0).Substring(files(0).Length - 1, 1).ToLower = "b" Then vbp = New Microsoft.VisualBasic.VBCodeProvider Else vbp = New Microsoft.CSharp.CSharpCodeProvider
Dim res As CodeDom.Compiler.CompilerResults = com.CompileAssemblyFromFileBatch(m_params, files)
If Not res.Errors Is Nothing Then
Dim i As Int16
For i = 1 To res.Errors.Count
Console.WriteLine("读取脚本文件出错:" & res.Errors(i - 1).FileName & "的第" & res.Errors(i - 1).Line _
& "行 错误描述:" & res.Errors(i - 1).ErrorText)
Next i
Me.Finalize()
Exit Sub
End If
'AsmPlayer =
Player = New Player(GetClass("MyWoW.Scripts.Player.PlayerClass", res.CompiledAssembly))
Public Sub New(ByVal [Type] As Type)
Dim bb As Reflection.MethodInfo
bb = [Type].GetMethod("InitRace", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static)
sInitRace = System.Delegate.CreateDelegate(GetType(InitRace), bb)
bb = [Type].GetMethod("InitClass", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static)
sInitClass = System.Delegate.CreateDelegate(GetType(InitClass), bb)
End Sub |
|