我正在尝试在运行时编译代码,该代码也是在C#.NET 4.6中运行时编译的对象。
我正在使用CSharpCodeProvider在内存中生成CompilerResult。生成的程序集在编译的第二个代码片段中引用。在编译第二篇文章之前是否可以将AssemblyReference添加到CompilerParameters(否则我会得到一个缺少的汇编编译器错误)。
目前我看到两个选项:
所以我的问题:是否有内存方式在另一个运行时生成的程序集中引用运行时生成的程序集?
答案 0 :(得分:1)
CSharpCodeProvider
在磁盘上工作 - 即使你只在内存中生成程序集“,它也会在磁盘上编译程序集并将其加载到内存中(它必须,它的一切 - 所有它都是致电csc.exe
)。唯一的区别是汇编文件是某个临时DLL,而不是您指定的文件。
如果您想要真正的内存编译C#代码,请使用Roslyn编译器。