【发布时间】:2017-01-08 11:38:05
【问题描述】:
我正在尝试将一些 .net 代码移植到新的 Core 运行时,但我在移植一些即时编译时遇到了麻烦。
要恢复,它总是要求我提供对 System.Runtime 和 mscorlib 的引用,但不知道如何引用它们。
附带说明,我不能引用 Framework 4.6,因为该项目必须发布到具有 .net Core 的 Linux 机器上。
这是最少的代码:
string testClass = @"using System;
namespace test{
public class tes
{
public string unescape(string Text)
{
return Uri.UnescapeDataString(Text);
}
}
}";
var compilation = CSharpCompilation.Create(Guid.NewGuid().ToString() + ".dll")
.WithOptions(new CSharpCompilationOptions(Microsoft.CodeAnalysis.OutputKind.DynamicallyLinkedLibrary))
.AddReferences(
MetadataReference.CreateFromFile(typeof(Object).GetTypeInfo().Assembly.Location),
MetadataReference.CreateFromFile(typeof(Uri).GetTypeInfo().Assembly.Location)
)
.AddSyntaxTrees(CSharpSyntaxTree.ParseText(testClass));
var eResult = compilation.Emit("test.dll");
它总是抱怨需要 mscorlib(在这个例子中)和 System.Runtime(在我的真实项目中)。
我正在使用 Microsoft.CodeAnalysis.CSharp 包版本 2.0.0-beta3
关于如何使用 Roslyn 和 .net Core 即时编译有什么想法吗?
【问题讨论】: