使用Roslyn

时间:2017-09-13 18:32:15

标签: .net .net-core roslyn

是否可以使用Roslyn构建.NET核心或更好的.NET标准库,可以从另一个项目中引用?

我的目标是在服务器上构建一个程序集,让人们下载它,以便他们可以在自己的Visual Studio项目中引用和使用它。

我使用Roslyn生成C#代码并进行编译。 当我"发出"这似乎工作正常。编译结果到内存流,从中加载程序集并使用反射执行代码。

using (var ms = new MemoryStream())
{
    var compilationResult = compilation.Emit(ms);
    if (compilationResult.Success)
    {
    ms.Position = 0;

    var assembly = AssemblyLoadContext.Default.LoadFromStream(ms);
..
..

也可以"保存"通过证明Emit方法的路径来进行组装。这会在磁盘上生成.dll文件。

var compilationResult2 = compilation.Emit(@"D:\testassembly.dll");

我想知道这个.dll文件的格式是什么。它似乎不是一个正常的"组装

我搜索了互联网,但无法找到任何人这样做。我误解了什么吗?

所以我的问题是:

  • Emit创建的文件格式是什么?它是完整/正常的组装吗?我在这里很困惑,因为当我打开它时 DotPeek显示:

enter image description here

我希望.net标准或.net核心程序集。此外,我无法通过从Visual Studio中的其他项目引用它来使用此程序集。

  • 是否可以使用Roslyn生成可以从单独的.net核心项目引用的程序集?

由于

0 个答案:

没有答案