我在我的应用程序中使用单声道作为嵌入式脚本环境。对于脚本的编译,我使用 Microsoft.CSharp.CSharpCodeProvider。现在我需要一些 4.0 或 4.5 功能,例如 System.Numerics。但是,在编译器选项中引用 System.Numerics.dll 只会让我出错
(0,0):错误 CS0006:找不到元数据文件“System.Numerics.dll”
由于提供程序的装配位置指向 2.0.0.0 gac,因此看到此失败我并不感到惊讶。但是,有了 mono-2.11.4 以及 v4.0 和 v4.5 配置文件,我想知道为什么提供者没有找到所需的程序集,或者它是否甚至按要求提供了 v4.0。
var provider_options = new Dictionary<string,string>();
provider_options.Add("CompilerVersion", "v4.0");
CodeDomProvider provider = new CSharpCodeProvider(provider_options);
CompilerParameters cparams = new CompilerParameters ();
cparams.GenerateExecutable = true;
cparams.OutputAssembly = Path.ChangeExtension(rFileNames[0],".exe");
cparams.ReferencedAssemblies.Add( "System.dll" );
cparams.ReferencedAssemblies.Add( "System.Windows.Forms.dll" );
cparams.ReferencedAssemblies.Add( "System.Drawing.dll" );
cparams.ReferencedAssemblies.Add( "Mono.Debugger.Soft.dll" );
cparams.ReferencedAssemblies.Add( "System.Numerics.dll" );