用XXXXXT(代码翻自C#) 实现动态编译
novakon2012/08/31软件综合 IP:广东
动态编译可以理解为,程序在执行过程中编译一段代码并把编译之后的结果作为程序的一部分运行。

效果:
QQ截图20120831013415.jpg
如果你对VB语法有了解,可以尝试修改代码,并观察输出的结果。
编译好的程序在RTC\bin\release 文件夹下,可以直接运行。

源代码附在zip包里。注释是英文写的,英文不好的兄弟我向您道个歉

QQ截图20120831014205.jpg
代码已经非常简洁了 。如果您没有Visual Studio 11(我用的版本),可以在VS2010 VS2008或者其他.NET环境下创建项目并复制窗体和代码。
attachment icon RTC.zip 72.85KB ZIP 16次下载
来自:计算机科学 / 软件综合
4
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
novakon 作者
12年4个月前 IP:未同步
446873
源码

REM Dynamic Compilation Demo in VB
REM translated from the C# code found on Internet.
REM by Qin Yongliang, 20120831
REM feel free to use the code for any purpose

Imports XXXXXXXXXXXXXXXXXXpiler

Imports XXXXXXXXXXXXsualBasic
Imports Microsoft.CSharp
'optional.

Imports XXXXXXXXXflection

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles XXXXXXXXXXick
        Button1.Text = "Compiling..."
        Me.Enabled = False
        XXXXXfresh()

        Dim cpara = New CompilerParameters
        XXXXXXXXXpilerOptions = Trim(TextBox2.Text)
        'options like "/optimize" or whatever
        XXXXXXXXnerateInMemory = True
        'stores the compile result in memory.
        XXXXXXXXcludeDebugInformation = False 'we are unlikely to debug it

        'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXd("mscorlib.dll")
        'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXd("system.dll")
        'add references if needed.

        Dim cdp = XXXXXXXXXXXXXXXXXXeateProvider("VisualBasic")
        'self-explaining

        Dim res = XXXXXXXpileAssemblyFromSource(cpara, TextBox1.Text) 'show results

        'MsgBox(XXXXXXrors(0).ToString)
        'check if errors occur.
        Dim asm = XXXXXXXpiledAssembly 'as XXXXXXXXXXXXXXXXXXXXsembly
        Dim newclass = XXXXXXeateInstance("newclass") 'create instance from compiled assembly
        Dim newclasstype = XXXXXXXXXXXtType

        Button1.Text = "Running..."
        Dim ret As Double = XXXXXXXXXXXXXXXtMethod("test").Invoke(newclass, Nothing)
        'assume the code returns a number; assume the code has no parameters("Nothing");
        Button1.Text = "Finished!"
        MsgBox(XXXXXXString, , "Result of test()") 'show result of the invoked method
        Button1.Text = "Compile and Run"
        Me.Enabled = True
    End Sub
End Class
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
回忆
12年4个月前 IP:未同步
446879
居然半夜三更发帖~~
-1
科创币
novakon
2012-08-31
一般来说,在茶话以外灌纯净水是不允许的。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士
12年3个月前 IP:未同步
463564
回 楼主(novakon) 的帖子
您居然用VS2012?那灰糊糊一团的东西!!!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8386
学术分
16
2008/03/29注册,2年11个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}