2013-09-26 18 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代碼的那部分。好答案。很難說這是否是解決方案,但可能是這樣。 –