有一个问题,在编译动态代码时,我无法提供框架的版本。
这是编译代码:
using Microsoft.CodeDom.Providers.DotNetCompilerPlatform;
using System.CodeDom.Compiler;
private static readonly Dictionary<string, string> ProviderOptions = new Dictionary<string, string>
{
{ "CompilerVersion", "v4.0" }
};
using (var provider = new CSharpCodeProvider())
{
.. setting compile
CompilerResults ResultLog = provider.CompileAssemblyFromSource(Params, SourceCode);
}
我尝试添加如下内容:
using (var provider = new CSharpCodeProvider(ProviderOptions))
或
using (var provider = new CSharpCodeProvider((ICompilerSettings)ProviderOptions))
但是我得到了错误:
System.InvalidCastException:无法将对象类型“ System.Collections.Generic.Dictionary`2 [System.String,System.String]”带给类型“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.ICompilerSettings”。
>
不同于CodeDom
,由于某种原因它不可能放在Roslyn
中,因此该版本如何解决?