2016-10-11 341 views
0

我试图在运行时编译代码,该代码在运行时也在C#.NET 4.6中编译的对象引用。在其他运行时编译程序集Rreference运行时编译程序集

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

目前我看到两个选项:

  1. 创建光盘上的第一个组装和使用CompilerParameters.ReferencedAssemblies.Add(但我不喜欢不必要盘操作)
  2. 不产生在第1片所有,但粘贴到第二张的代码(但是我不喜欢多次粘贴相同的代码)

所以我的问题:是否有内存的方式来引用生成的程序集运行时在另一个运行时产生部件?在磁盘上

+0

也许相关:http://stackoverflow.com/questions/2830160/c-sharp-referencing-a-type-in​​-a-dynamically-generated-assembly – YSharp

回答

1

CSharpCodeProvider作品无论如何 - 即使你只生成“内存”的组件,它编译于磁盘,并将其加载到内存中的组件(它有,那种 - 它是所有调用csc.exe )。唯一的区别是程序集文件是某处的临时DLL,而不是您指定的文件。

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

+0

被接受为答案,在磁盘上创建DLL的好提示,这解释了很多。 Roslyn编译器也是很好的提示。 – anhoppe