2017-10-21 7 views
0

とコンソールに書き込まれているものをつかむん:は、どのように私はランタイムでのC#をコンパイルするには、以下の使用CSharpCodeProvider

CompilerParameters parameters = new CompilerParameters 
     { 
      GenerateInMemory = true, 
      GenerateExecutable = true, 
      IncludeDebugInformation = true 
     }; 


     // True - memory generation, false - external file generation 
     // True - exe file generation, false - dll file generation 

     var res = pro.CompileAssemblyFromSource(parameters, 
      code); 

     Assembly assembly = res.CompiledAssembly; 
     Type program = assembly.GetType("First.Program"); 
     MethodInfo main = program.GetMethod("Main"); 
     var invoke = main?.Invoke(null, null); 

res.Outputは空のリストで、コードはConsole.WriteLine()を持っている場合、それは、メインアプリケーションのコンソールに書き込まれます、 しかしながら;私は何が書かれているのか把握したい。

答えて

0

res.Errorsもチェックしてください。エラーがある場合、代わりにエラーが発生します。 ErrorsOutputの両方が空白の場合、出力なしで正常にコンパイルされた可能性があります。チェック:cr.NativeCompilerReturnValue.ToString()

+0

エラーはなく、親アプリケーションのデバッグに書き込みますが、代わりにフェッチします。 –

+0

@TalhaTalipAçıkgözそれは何が原因かわかりません。デバッグリスナーを使用することができます:https://msdn.microsoft.com/en-us/library/system.diagnostics.debug.listeners(v=vs.110).aspx – AaronLS

+0

私は見ていきますが、私はそこにいると思いますより良い方法でなければなりません。 –

関連する問題