【发布时间】:2019-03-15 15:29:23
【问题描述】:
我举个例子, 假设我有以下代码。
fullcommand = @"public class oldTest
{
public static void oldTestMethod(){
Console.WriteLine(""oldTest Class"");
}
}"
var syntaxTree = CSharpSyntaxTree.ParseText(fullCommand);
var compilation = CSharpCompilation.Create(
assemblyName,
new[] {syntaxTree},
references,
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,allowUnsafe:true));
var ms = new MemoryStream();
var result = compilation.Emit(ms);
我将在内存中使用 Roslyn 编译上述代码。 接下来我想在内存中编译另一个代码来使用上面编译的类,让我们说下面。
new_fullcommand = @"public class newTest
{
public static void newTest(){
oldTest.oldTestMethod();
}
}"
var syntaxTree = CSharpSyntaxTree.ParseText(new_fullcommand);
var compilation = CSharpCompilation.Create(
assemblyName,
new[] {syntaxTree},
references,
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,allowUnsafe:true));
var ms = new MemoryStream();
var result = compilation.Emit(ms);
如何使第二个代码使用第一个代码作为参考?还是使用它?
【问题讨论】:
标签: c# roslyn in-memory runtime-compilation