详细分析VB.NET动态代码

开发 后端
这里介绍,.NET为我们提供了一系列VB.NET动态代码选项。例如,你可以创建一个可执行的能独立运行的程序或是可以想运行中的程序加载一个DLL然后再执行。

学习VB.NET时,经常会遇到使用VB.NET动态代码问题,这里将介绍使用VB.NET动态代码问题的解决方法,在这里拿出来和大家分享一下。

使用VB.NET动态代码

在运行时创建一个控件是在无法确定应用程序功能的时候采取的一种策略。但是动态创建控件并不适用于所有的情况。有些时候你必须建立可执行代码,虽然你的应用程序运行的目的是补偿不同极其之间的配置,不同用户的需求,不同的环境需求或是其他要求。当应用程序所运行的电脑不存在控件,那么通常是需要创建VB.NET动态代码的。

幸运的是,.NET为我们提供了一系列VB.NET动态代码选项。例如,你可以创建一个可执行的能独立运行的程序或是可以想运行中的程序加载一个DLL然后再执行。当你需要演示一个外部任务的时候可以使用选择可执行,如运行一种脚本——该DLL选项最适合扩大现有的应用程序功能。

你可以运行来自文件或内存的VB.NET动态代码。当你需要不止一次地运行代码时,可以使用文件。对代码的检查可以再次运行外部文件而不需要对其进行二次编译。当你需要多次演示任务的时候,如一个安装请求,那可以使用内存图像。

当然我们也可以更改源代码。例如,你可以使用字符串来建立需要在应用程序中直接使用的代码。如果你需要代码具有高度灵活性,且代码本身不是很长时,这一方法的优势就非常显著。也可以从文件里建立代码,就如同VS一样。这一方法最适用于相对稳定且不需要复杂编码的需求。第三种选择是使用 Documentation Object Model来创建代码并将其作为CodeDom树型结构的一个系列。该树型结构包括了CodeCormpileUnits.这就像是用DOM模式创建了一个XML文件。

使用动态创建代码的***方式是用示例来检查一下。例三展示了一个基本“Hello World”示例。该示例用源代码直接创建了代码因此你可以看到整个运行以及生成一个外部可执行文件的过程。

  1. Private Sub btnTest3_Click() Handles btnTest3.Click     
  2. ' Create a compiler.    
  3. Dim Comp As VBCodeProvider = New VBCodeProvider()    
  4. ' Define the parameters for the code you want to compile.    
  5. Dim Parms As CompilerParameters = New CompilerParameters)    
  6.    
  7. ' We do want to create an executable, rather than a DLL.    
  8. Parms.GenerateExecutable = True   
  9. ' The compiler will create an output assembly called Output.    
  10. Parms.OutputAssembly = "Output"   
  11. ' The compiler won't treat warnings as errors.    
  12. Parms.TreatWarningsAsErrors = False   
  13. ' Add any assembly you want to reference.    
  14. Parms.ReferencedAssemblies.Add("System.Windows.Forms.dll")    
  15.    
  16. ' Define the code you want to run.    
  17.    
  18. Dim SampleCode As StringBuilder = New StringBuilder()    
  19.    
  20. SampleCode.Append("Imports System.Windows.Forms" + vbCrLf)    
  21.    
  22. SampleCode.Append("Module TestAssembly" + vbCrLf)    
  23.    
  24. SampleCode.Append("Sub Main()" + vbCrLf)    
  25.    
  26. SampleCode.Append("MessageBox.Show(" + Chr(34) + _    
  27. "Dynamically Created Code!" + _Chr(34) + ")" + vbCrLf)    
  28. SampleCode.Append("End Sub" + vbCrLf)    
  29. SampleCode.Append("End Module" + vbCrLf)    
  30. ' Define the code to run.    
  31. Dim Executable As CompilerResults = _   
  32. Comp.CompileAssemblyFromSource(Parms, SampleCode.ToString())    
  33. ' Display error messages if there are any.    
  34. If Executable.Errors.HasErrors Then    
  35. For Each Item As CompilerError In Executable.Errors    
  36. MessageBox.Show(Item.ErrorText)    
  37. Next    
  38. Else    
  39. ' If there aren't any error messages, start the    
  40. ' executable.    
  41. Process.Start("Output")    
  42. End If    
  43. End Sub  

【编辑推荐】

  1. 浅谈VB.NET线程构造器
  2. 简单分析VB.NET使用线程
  3. VB.NET List(T)编写框架方法
  4. 简单介绍VB.NET线程同步
  5. VB.NET声明API详细描述
责任编辑:佚名 来源: IT168
相关推荐

2009-10-28 10:06:29

VB.NET With

2009-10-10 15:19:43

VB.NET Web

2010-01-07 17:00:38

VB.NET控件数组

2009-10-14 10:25:52

VB.NET读写文本文

2009-10-10 13:52:57

VB Update方法

2010-01-06 13:50:37

.NET Framew

2009-10-12 15:02:51

VB.NET动态控件

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基础

2009-11-16 11:18:38

PHP上传图片代码

2010-03-04 09:30:40

Linux动态库

2009-11-11 14:18:00

动态路由协议

2009-09-14 13:50:35

LINQ编程模型

2009-11-20 13:11:44

Oracle XML数

2009-09-08 15:56:50

Linq使用Group

2009-09-14 16:21:34

LINQ To XML

2009-09-09 09:48:43

Linq延迟加载

2009-06-18 14:00:51

2009-10-27 09:59:17

VB.NET动态代码

2009-10-28 09:55:29

VB.NET MyCl
点赞
收藏

51CTO技术栈公众号