用CodeDom编译VB代码

时间:2015-08-21 08:00:06

标签: vb.net codedom

阅读它,无法找到对我有用的任何东西。 基本上,我的资源中有一个名为SourceCode.vb的文件。 我试图使用:

Dim objCodeCompiler As System.CodeDom.Compiler.ICodeCompiler = New VBCodeProvider().CreateCompiler
Dim objCompilerParameters As New System.CodeDom.Compiler.CompilerParameters()
objCompilerParameters.ReferencedAssemblies.Add("System.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
objCompilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Drawing.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Data.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Deployment.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Xml.dll")
objCompilerParameters.GenerateExecutable = True
objCompilerParameters.GenerateInMemory = False
objCompilerParameters.CompilerOptions = "/target:winexe"
objCompilerParameters.OutputAssembly = "C:\"
Dim strCode As String = My.Resources.SourceCode.ToString
Dim objCompileResults As System.CodeDom.Compiler.CompilerResults = objCodeCompiler.CompileAssemblyFromSource(objCompilerParameters, strCode)
If objCompileResults.Errors.HasErrors Then
    MsgBox("Error: Line>" & objCompileResults.Errors(0).Line.ToString & ", " & objCompileResults.Errors(0).ErrorText)
    Exit Sub
End If

我需要它来编译代码并生成文件并将其放在C:\中 - 由于某种原因它无法正常工作。错误是:

  

错误:行> 0,未指定输入源

有什么想法吗?提前谢谢。

编辑:问题是我需要在输出后为文件添加实际名称。感谢Hans的帮助。

1 个答案:

答案 0 :(得分:2)

实际上,因为您在将OutputAssembly设置为需要程序集名称的位置时。它应该是:

objCompilerParameters.OutputAssembly = "AssemblyName.exe"

如果要设置输出程序集的位置,请将其添加到编译器选项中。

objCompilerParameters.CompilerOptions = "/target:winexe /out:C:\\AssemblyName.exe"

虽然,我相信如果您想写入C:驱动器,您需要以管理员身份运行程序。