【发布时间】:2015-08-21 23:34:41
【问题描述】:
阅读它,找不到任何对我有用的东西。 基本上,我的资源中有一个名为 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,未指定输入源
有什么想法吗?提前致谢。
编辑:问题是我需要在输出后为文件添加一个实际名称。感谢汉斯的帮助。
【问题讨论】:
-
您确定您的源代码实际上包含在 strCode 中吗? msdn.microsoft.com/en-us/library/a0kc0z48(v=vs.90).aspx
-
我 100% 确定,刚刚检查过。
-
嗯,这不是一个很棒的错误消息。它实际上在抱怨你的 OutputAssembly 分配。您必须指定文件名,而不是目录名。像“c:\test.exe”。您也不应该使用它,您不能写入 c: 驱动器的根目录。如果你完全省略它会更好,你会在 TEMP 目录中得到一个程序集。
-
谢谢汉斯,效果很好!