【问题标题】:Rreference run-time compiled assembly in other run-time compiled assembly在其他运行时编译的程序集中引用运行时编译程序集
【发布时间】:2016-10-11 13:50:00
【问题描述】:

我正在尝试在运行时编译由 C# .NET 4.6 中也在运行时编译的对象引用的代码。

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

目前我看到两个选项:

  1. 在光盘上创建第一个程序集并使用 CompilerParameters.ReferencedAssemblies.Add(但我不喜欢不必要的光盘操作)
  2. 根本不生成第一块,而是将代码粘贴到第二块中(但我不喜欢多次粘贴相同的代码)

所以我的问题是:是否有一种内存方式可以在另一个运行时生成的程序集中引用运行时生成的程序集?

【问题讨论】:

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


【解决方案1】:

CSharpCodeProvider 无论如何都可以在磁盘上工作——即使你只在“内存中”生成程序集,它也会在磁盘上编译程序集并将其加载到内存中(它必须,有点——它所做的只是调用 @ 987654322@)。唯一的区别是程序集文件是某个地方的临时 DLL,而不是您指定的文件。

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

【讨论】:

  • 被接受为答案,在光盘上创建 DLL 的好提示,这解释了很多。 Roslyn 编译器也有很好的提示。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2021-12-31
  • 2014-04-11
相关资源
最近更新 更多