码迷,mamicode.com
首页 > 其他好文 > 详细

动态编译

时间:2016-04-30 22:09:47      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

动态编译.NET代码
分为VB和C#两种
Private Sub BuidSub(OneSource As String, OneRef As String, OneExt As String, OneSub As String, OneClass As String)
        Dim strSourceCode As String = OneSource
        Dim objCSharpCodePrivoder As New CSharpCodeProvider()
        Dim objVBCodePrivoder As New VBCodeProvider()
        Dim OnePara As New CompilerParameters()
        For Each OneStr In OneRef.Split(vbCrLf)
            If Not OneStr.Trim.Equals(String.Empty) Then
                OnePara.ReferencedAssemblies.Add(OneStr.Trim)
            End If
        Next
        OnePara.GenerateInMemory = True
        Dim cr As CompilerResults
        If OneExt.ToLower = ".cs" Then
            cr = objCSharpCodePrivoder.CompileAssemblyFromSource(OnePara, OneSource)
        Else
            cr = objVBCodePrivoder.CompileAssemblyFromSource(OnePara, OneSource)
        End If
 
        If cr.Errors.HasErrors Then
            Dim strErrorMsg As String = cr.Errors.Count.ToString() + " Errors:"
            For x As Integer = 0 To cr.Errors.Count - 1
                strErrorMsg += vbCrLf & "Line: " & cr.Errors(x).Line.ToString() & " - " & cr.Errors(x).ErrorText
            Next
            MyPage.ShowException(strErrorMsg)
        Else
            Try
                Dim objAssembly As Assembly = cr.CompiledAssembly
                Dim FullName As String = "MyERP.{0}"
                FullName = String.Format(FullName, OneClass)
                Dim objClass As Object = objAssembly.CreateInstance(FullName)
                If objClass Is Nothing Then
                    MyPage.ShowException(GetMessage("LOAD_CLASS_ERROR"MyParameter.LoginLan))
                Else
                    If ChkProperty(objClass, "Owner"Then
                        objClass.Owner = Me
                    End If
                    CallByName(objClass, OneSub, vbMethod)
                End If
            Catch ex As Exception
                MyPage.ShowException(ex)
            End Try
 
        End If
    End Sub  





动态编译

标签:

原文地址:http://www.cnblogs.com/dvmu/p/5449442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!