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模式。然后,该示例创建了代码因此你可以看到整个过程。下面是代码的原始形式:
- Imports System.Windows.Forms
- Module TestAssembly
- Sub Main()
- MessageBox.Show("Dynamically Created Code!")
- End Sub
- 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动态编码技巧。
【编辑推荐】