其他运行时编译的程序集中的Rreference运行时编译程序集

时间:2016-10-11 13:50:01

标签: c# .net .net-assembly codedom csharpcodeprovider

我正在尝试在运行时编译代码,该代码也是在C#.NET 4.6中运行时编译的对象。

我正在使用CSharpCodeProvider在内存中生成CompilerResult。生成的程序集在编译的第二个代码片段中引用。在编译第二篇文章之前是否可以将AssemblyReference添加到CompilerParameters(否则我会得到一个缺少的汇编编译器错误)。

目前我看到两个选项:

  1. 在光盘上创建第一个程序集并使用CompilerParameters.ReferencedAssemblies.Add(但我不喜欢不必要的光盘操作)
  2. 根本不生成第一块,而是将代码粘贴到第二块(但我不想多次粘贴相同的代码)
  3. 所以我的问题:是否有内存方式在另一个运行时生成的程序集中引用运行时生成的程序集?

1 个答案:

答案 0 :(得分:1)

无论如何

CSharpCodeProvider在磁盘上工作 - 即使你只在内存中生成程序集“,它也会在磁盘上编译程序集并将其加载到内存中(它必须,它的一切 - 所有它都是致电csc.exe)。唯一的区别是汇编文件是某个临时DLL,而不是您指定的文件。

如果您想要真正的内存编译C#代码,请使用Roslyn编译器。