我在尝试评估CSharpScript时遇到问题。我在Microsoft.CodeAnalysis.CSharp 1.2.0-rc的dnx46上运行。我怀疑这个问题存在于mscorlib和CoreFx之间的冲突中。
以下是失败的代码片段之一:
private readonly IApplicationEnvironment _environment;
private readonly ILibraryExporter _exporter;
var references = _exporter.GetAllExports(_environment.ApplicationName).MetadataReferences;
var options = ScriptOptions.Default
.AddReferences(references.Select(x => ConvertMetadataReference(x)))
.AddImports("System.Collections.Generic", "System.Linq");
var result = await CSharpScript.EvaluateAsync("1+1");(我的ApplicationEnvironment和LibraryExporter是由dnx在启动时传入的,它们都不是空的)。
在尝试运行CSharpScript.EvaluateAsync时,会抛出以下异常。
Method not found: 'Void Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions..ctor
(Microsoft.CodeAnalysis.OutputKind, Boolean, System.String, System.String, System.String,
System.Collections.Generic.IEnumerable`1<System.String>,
Microsoft.CodeAnalysis.OptimizationLevel, Boolean, Boolean, System.String, System.String,
System.Collections.Immutable.ImmutableArray`1<Byte>,
System.Nullable`1<Boolean>, Microsoft.CodeAnalysis.Platform,
Microsoft.CodeAnalysis.ReportDiagnostic,
Int32, System.Collections.Generic.IEnumerable`1
<System.Collections.Generic.KeyValuePair`2
<System.String,Microsoft.CodeAnalysis.ReportDiagnostic>>, Boolean, Boolean,
Microsoft.CodeAnalysis.XmlReferenceResolver,
Microsoft.CodeAnalysis.SourceReferenceResolver,
Microsoft.CodeAnalysis.MetadataReferenceResolver,
Microsoft.CodeAnalysis.AssemblyIdentityComparer,
Microsoft.CodeAnalysis.StrongNameProvider, Boolean)'I dumped the list of references in my ScriptOptions,不确定这是否说明了什么。
虽然我真的不确定我的代码有什么问题,但我认为这是因为我在dnx46下运行这个项目,因为我必须覆盖我的project.json中的基本程序集(系统、System.Runtime等)。
发布于 2016-03-17 11:26:05
恢复到
"Microsoft.CodeAnalysis.CSharp": "1.1.1",
"Microsoft.CodeAnalysis.CSharp.Scripting": "1.1.1",
"Microsoft.Dnx.Compilation.Abstractions": "1.0.0-rc1-final",
"Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final"已解决此问题。
不确定为什么这是一个问题,但这个问题已经解决了。
https://stackoverflow.com/questions/36050667
复制相似问题