|
分類:[VB.NET]
分類:[VB.NET]
動的なコードのコンパイラの定義で疑問があります。
System.CodeDom.Compilerをつかって動的にCompilerを使用しています。 食べさせるソースが
dim x as string ="" x= x + "Public Class TEST" + vbnewline x= x + " Private dct As New Dictionary(Of String, Int32)" + vbnewline x= x + "End Class" + vbnewline
で, CodeDomの使用設定が
Dim params As New CompilerParameters params.GenerateExecutable = False params.GenerateInMemory = True params.IncludeDebugInformation = True params.TempFiles.KeepFiles = True params.GenerateInMemory = False params.OutputAssembly = ".\rc.dll"
params.ReferencedAssemblies.Add("System.Dll") params.ReferencedAssemblies.Add("mscorlib.dll")
Dim provider As New VBCodeProvider Dim compRes As CompilerResults = provider.CompileAssemblyFromSource(params, sb.ToString) If compRes.Errors.Count > 0 Then ' Gather all error messages, display them, and exit. Dim msg As String = "" For Each compErr As CompilerError In compRes.Errors msg &= compErr.ToString & ControlChars.CrLf Next MessageBox.Show(msg, "Compilation Failed", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If の時の Errorが
C:\Documents and Settings\ognac\Local Settings\Temp\pprmtmc4.0.vb(2,0) : error BC30002: 型 'Dictionary' が定義されていません。 C:\Documents and Settings\ognac\Local Settings\Temp\pprmtmc4.0.vb(2,0) : error BC30002: 型 'Int32' が定義されていません。
になります。
Dictionary/ Int32 は共に mscorlibの systemでカバーできると認識しているのですが,compilerが認識してくれません。 NameTableの引き当てもしくは,参照のLibraryに誤りが在るのでしょうか? なにか。ご存知であれば、宜しくお願いいたします。
|