当然我们也可以更改源代码 例如 你可以使用字符串来建立需要在应用程序中直接使用的代码 如果你需要代码具有高度灵活性 且代码本身不是很长时 这一方法的优势就非常显著 也可以从文件里建立代码 就如同VS一样 这一方法最适用于相对稳定且不需要复杂编码的需求 第三种选择是使用Documentation Object Model来创建代码并将其作为CodeDom树型结构的一个系列 该树型结构包括了CodeCormpileUnits 这就像是用DOM模式创建了一个XML文件
使用动态创建代码的最好方式是用示例来检查一下 例三展示了一个基本 Hello World 示例 该示例用源代码直接创建了代码因此你可以看到整个运行以及生成一个外部可执行文件的过程
例三 动态编码示例Private Sub btnTest _Click() Handles btnTest ClickCreate a piler Dim Comp As VBCodeProvider = New VBCodeProvider()Define the parameters for the code you want to pile Dim Parms As CompilerParameters = New CompilerParameters)We do want to create an executablerather than a DLL Parms GenerateExecutable = TrueThe piler will create an output assembly called Output Parms OutputAssembly =OutputThe piler won t treat warnings as errors Parms TreatWarningsAsErrors = FalseAdd any assembly you want to reference Parms ReferencedAssemblies Add( System Windows Forms dll )Define the code you want to runDim SampleCode As StringBuilder = New StringBuilder() SampleCode Append( Imports System Windows Forms+ vbCrLf) SampleCode Append( Module TestAssembly+ vbCrLf) SampleCode Append( Sub Main()+ vbCrLf) SampleCode Append( MessageBox Show(+ Chr( ) + _ Dynamically Created Code!+ _Chr( ) +)+ vbCrLf)SampleCode Append( End Sub+ vbCrLf)SampleCode Append( End Module+ vbCrLf)Define the code to run Dim Executable As CompilerResults = _ Comp CompileAssemblyFromSource(ParmsSampleCode ToString())Display error messages if there are any If Executable Errors HasErrors ThenFor Each Item As CompilerError In Executable ErrorsMessageBox Show(Item ErrorText)NextElseIf there aren t any error messagesstart theexecutable Process Start( Output )End IfEnd Sub
一开始你创建了一个使用VBCodeProvider的编译器Comp 旧一点的 NET版本使用的是不同的方法但是这里所讲的是微软推荐的一个新方法
为了使用编译器 你必须创建能描述应用程序的参数 这些参数类似于VS中你创建的参数 只是现在你可以对它们进行定义 该代码一开始就将GenerateExecutable设置为True 这意味着你需要的是一个EXE文件而不是DLL
Parms OutputAssembly属性包含了输出文件的名称 你只需要在想创建文件时提供这一信息即可 而不需要生成可执行内存了 如果你ixiang生成可执行文件的内存版本 可以将Parm GenerateInMemory属性设置为True
使用Parm TreatWarningsAsErrors属性来确定如何处理警告信息 默认的设置会使其为错误 这意味着你的应用程序可能无法对其进行编译 大多数程序员使用默认设置 尽管他们开发了程序 但是在开发完成的程序中却将其设置为False
大多数应用程序需要外部DLL以正常运行 当然 你不能创建任意的没有引用外部DLL的Windows表单程序 通常 你要使用Reference文件夹来完成这一任务 不过 当你动态创建代码的时候可以依赖于Parms ReferencedAssemblies属性 如下所示 只需添加你要的DLL即可
现在 你已经定义了项目 接下来需要为其创建源代码 如前文所述 你可以依赖于一个外部文件或DOM模式 然后 该示例创建了代码因此你可以看到整个过程 下面是代码的原始形式Imports System Windows Forms Module TestAssemblySub Main()MessageBox Show( Dynamically Created Code! )End SubEnd Module
推荐阅读
- 芭乐视频下载app,铜铜铜铜铜铜铜铜好大呀
- 微信公众号怎么建的,公众号怎么建立的
- 经营牙科游戏的公司,牙科经营的出路在哪里
- vb.net除法运算符 vb中的除法运算之后有小数怎么办?
- 微信怎么模糊视频号的评论,微信视频号评论怎么隐藏
- 艺术区块链,区块链艺术展
- excel怎么抽取,Excel怎么抽取数据
- c语言字符串排序所用函数 字符串排序c++实现
- slog适合什么场景拍摄,slog适合什么场景拍摄的