我可以在运行时从一个简单的代码字符串编译DLL而不会出现任何问题。在IL Spy中打开它可以准确地显示它应该是什么。但是如果我在代码中放入任何扩展方法,它会输出以下错误:
error CS1644: Feature `extension methods' cannot be used because it is not part of the C# 2.0 language specification
我能找到的唯一帮助就是我应该能够设置" CompilerVersion"到" v3.5"通过向代码提供者提供选项字典,但它根本没有帮助。
这是我的代码:
var options = new System.Collections.Generic.Dictionary<string, string> { { "CompilerVersion", "v3.5" } };
var codeProvider = new Microsoft.CSharp.CSharpCodeProvider(options);
var provider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
var parameters = new System.CodeDom.Compiler.CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "AutoGen.dll";
var results = provider.CompileAssemblyFromSource(parameters, code);
Debug.Log(results.Errors.DeepToString());