详解VB.NET动态编码技巧

开发 后端
这里介绍VB.NET动态编码技巧,VB.NET动态编码技巧并不是万能钥匙。当你为开发问题找到了好的静态解决方案时,当然也可以使用。但是在我们所列出的情况中没有可行的静态方案,因此要选择VB.NET动态编码技巧。

VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET动态编码技巧,包括介绍Parms.OutputAssembly属性等方面。

VB.NET动态编码技巧

首先创建了一个使用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模式。然后,该示例创建了代码因此你可以看到整个过程。下面是代码的原始形式:

  1. Imports System.Windows.Forms   
  2. Module TestAssembly  
  3. Sub Main()  
  4. MessageBox.Show("Dynamically Created Code!")  
  5. End Sub  
  6. End Module  

这个简单的例子显示了一个对话框。注意vbCrLf的使用。如果你不使用这一方法,那编译器会发送给你一个错误信息。vbCrLf条目在该代码中所起的作用与在程序代码中的作用相同,只是添加的方式不一样。

从这一点老说,你***会用Comp.CompileAsseblyFromSource()方法编译代码。当使用DOM模式和文件的时候可以使用这一方法。而在所有三种情况中,编译器用参数和源代码创建了你请求的输出。该运算的输出出现在Executable中,是CompilerResults类型。

编译的失败次数多于程序员的预计。无论你是在哪里使用VB.NET动态编码技巧,你必须假设会出现失败的情况以及处理失败的方案。在本例中,代码寻找的是错误并在编译失败时将其展示在了信息框中。否则,代码会依赖于Process.Start()方法来启用可执行文件。

VB.NET动态编码技巧并不是***钥匙。当你为开发问题找到了好的静态解决方案时,当然也可以使用。但是在我们所列出的情况中没有可行的静态方案,因此要选择VB.NET动态编码技巧。大多数情况下,要用VB.NET动态编码技巧解决以下问题:
◆用户的环境会以不可预见的方式更改时;
◆无法控制用户电脑的安装;
◆用户或应用程序都添加了你要用控件执行的数据要素;
◆应用程序必须执行很早以前的安装任务,且这些任务与电脑,环境,网络或其他不确定因素联系紧密时;
◆应用程序要执行了处理级别的任务,且这些任务取决于机器连接或其他状况。

显然,还有其他一些情况能使用VB.NET动态编码技巧。最重要的是记住但凡有不可预知的情况下要考虑使用VB.NET动态编码技巧。通常在编码环境中出现了静态代码无法处理的情况时,我们就可以使用VB.NET动态编码技巧。

【编辑推荐】

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

2010-01-14 10:18:24

VB.NET List

2009-06-12 19:12:24

动态代码VB.NET

2010-01-12 18:40:22

VB.NET Form

2010-01-11 16:04:10

VB.NET使用wit

2010-01-13 17:23:36

VB.NET动态事件

2009-10-26 13:13:17

VB.NET编码规范

2010-01-21 17:34:48

VB.NET Bool

2009-10-20 17:38:54

VB.NET Comp

2010-01-12 18:35:43

VB.NET Stru

2010-01-18 18:20:49

VB.NET使用API

2009-11-10 13:08:13

VB.NET编程技巧

2011-05-19 09:20:21

VB.NETASP.NET

2009-10-14 09:27:30

VB.NET编码算法

2009-10-12 15:02:51

VB.NET动态控件

2009-10-22 11:28:35

VB.NET编码规范

2010-01-08 14:56:18

VB.NET类定义

2010-01-13 09:45:53

VB.NET Arra

2010-01-12 11:37:34

VB.NET读取图像

2010-01-13 10:15:19

VB.NET Stri

2010-01-12 18:05:38

VB.NET对象
点赞
收藏

51CTO技术栈公众号