2013-09-26 20 views
0

我尝试使用代码DOM来构建应用程序,问题是,编译器将警告视为错误,我试图指定它的参数,但没有运气如何:CodeDOM的无视警告,在vb.net

Dim Parameters As New CompilerParameters() 
Parameters.WarningLevel = 0 
Parameters.TreatWarningsAsErrors = False 

编译器在没有警告时工作,但我不知道该怎么办?! 什么都可以做?

这里的错误之一,这 一个约

Thread.CurrentThread.Sleep(5000) 

代码:

Dim text123 As String = "" 
     While True 
      Thread.CurrentThread.Sleep(5000) 
Dim s = go() 
      If s <> text123 Then 
       text123 = s 
       functiontext("#" , s) 
      End If 
     End While 

和有关职能其他错误不返回值

+0

你能告诉你在哪里处理错误的代码? –

+0

我将它们添加到主要问题 – user2618553

+0

导致编译失败的'Sleep'行的警告是什么?我的第一条评论意思是,你可以在CodeDom中使用更多的代码。具体来说,我对CodeDom编译方法返回的代码的处理区域感兴趣。 –

回答

1

你确定它不工作?

objCompileResults.Errors.HasErrors将返回true,即使只有警告。

Is objCompileResults.CompiledAssembly = null?

下面是一些代码我用来打印出任何错误和警告编译结果:

CompilerResults objCompileResults = objCodeCompiler.CompileAssemblyFromFile(objCompilerParameters, files.ToArray()); 

// Check for compiler errors. 
// TODO: order by erros first (rather than warnings) 
if (objCompileResults.Errors.HasErrors) 
{ 
    string errortext = ""; 
    string warningtext = ""; 
    foreach (CompilerError mistake in objCompileResults.Errors) 
    { 
     if (mistake.IsWarning == false) 
     { 
      string errorString = string.Format("{0} Line: {1} Error: {2}", mistake.FileName, mistake.Line, mistake.ErrorText); 
      errortext = errortext + errorString + Environment.NewLine; 
     } 
     else 
     { 
      string warningString = string.Format("{0} Line: {1} Warning: {2}", mistake.FileName, mistake.Line, mistake.ErrorText); 
      warningtext = warningtext + warningString + Environment.NewLine; 
     } 
    } 
+0

对,这就是为什么我很好奇看到OP代码的那部分。好答案。很难说这是否是解决方案,但可能是这样。 –