我们可以使用 CSharpCompilation.Create() 修改现有程序集 (dll) 吗?如果不行怎么办?

Can we modify the existing assembly(dll) by using CSharpCompilation.Create()? If not how to do?

我正在使用 CSharpCompilation.Create 从头开始​​创建程序集。我知道的是,这总是会创建一个新程序集。无论如何 add/modify Roslyn 中现有的 DLL?这是因为我正在构建一个工具,用户可以在 richtextbox 中键入 C# 代码并编译它以将其添加到现有程序集中。有没有可能,如果不是我做错了什么,正确的方法是什么?

P.S.,

我也试过 CSharpCodeProvider 编译代码,但它也只用我在 richtextbox 中输入的代码生成程序集。输出程序集里面没有其他的类。

是的,正如 Klauss Gutter 在评论中提到的,您必须单独构建程序集并稍后使用 ILMerge. I know ILMerge is out of support and is deprecated. You can use ILRepack 合并它来执行此操作。它提供与 ILMerge 相同的功能。

您可以先使用 NuGet Package 安装 ILRepack,然后将对 ILRepack.exe 的引用添加到您的项目中,以使用其方法将多个程序集打包成一个程序集。

Roslyn 或 CSharpProvider 不会帮助您合并程序集。这些的主要格言是编译和创建程序集而不是合并。