使用 CodeDom 编译 VB 代码
Compiling VB Code With 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:\ - 出于某种原因,它无法正常工作。错误是:
error: line>0, no input sources specified
有什么想法吗?提前致谢。
编辑:问题是我需要在输出后为文件添加一个实际名称。感谢汉斯的帮助。
这实际上是因为您将 OutputAssembly 设置到需要程序集名称的位置。应该是:
objCompilerParameters.OutputAssembly = "AssemblyName.exe"
如果要设置输出程序集的位置,请将其添加到编译器选项中。
objCompilerParameters.CompilerOptions = "/target:winexe /out:C:\AssemblyName.exe"
不过,我相信如果你想写入 C: 驱动器,你将需要 运行 你的程序作为管理员。
仔细阅读,找不到对我有用的东西。 基本上,我的资源中有一个名为 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:\ - 出于某种原因,它无法正常工作。错误是:
error: line>0, no input sources specified
有什么想法吗?提前致谢。
编辑:问题是我需要在输出后为文件添加一个实际名称。感谢汉斯的帮助。
这实际上是因为您将 OutputAssembly 设置到需要程序集名称的位置。应该是:
objCompilerParameters.OutputAssembly = "AssemblyName.exe"
如果要设置输出程序集的位置,请将其添加到编译器选项中。
objCompilerParameters.CompilerOptions = "/target:winexe /out:C:\AssemblyName.exe"
不过,我相信如果你想写入 C: 驱动器,你将需要 运行 你的程序作为管理员。