C# 将类添加到当前程序集中

C# 将类添加到当前程序集中,c#,.net-assembly,activator,roslyn,C#,.net Assembly,Activator,Roslyn,我的应用程序中有一个当前程序集,我想将外部cs文件中的类添加到此程序集中。有可能吗?我想像插件一样使用它。现在我正在尝试使用: System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 和激活剂,但没有成功。我的应用程序正在使用Roslyn,所以也许它可以做到。 任何想法都将不胜感激 编辑:它的下一个问题是:我可以使用外部文件(带有类的cs文件)从该文件获取实例,但类的构造函

我的应用程序中有一个当前程序集,我想将外部cs文件中的类添加到此程序集中。有可能吗?我想像插件一样使用它。现在我正在尝试使用:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
和激活剂,但没有成功。我的应用程序正在使用Roslyn,所以也许它可以做到。 任何想法都将不胜感激


编辑:它的下一个问题是:我可以使用外部文件(带有类的cs文件)从该文件获取实例,但类的构造函数需要从当前assembley引用sceneManager。所以,可以向Roslyn发送类似的引用并从中获取类的实例吗?

您不能修改已加载的现有程序集


相反,您可以将代码编译到新程序集(使用Roslyn、CodeDOM、Sigil或类似的库),并使用反射加载该程序集。

a.cs文件本身就是文本。如果不通过某种途径编译它,就无法使用它做任何事情。但是不能:您不能在运行时向程序集添加额外的类。您可以通过
CSharpCodeProvider
或类似工具在运行时编译代码,并加载生成的程序集。不过,这是一个很大的混乱。根据上下文的不同,如果您需要在运行时从脚本中执行很多操作,像Iron Python这样的工具可能更可取。

好的,我使用Roslyn进行运行时脚本编写,所以我尝试用它加载新程序集。当我想到它时,我发现了一个小问题。我需要从文件(在我的程序集中)创建类的实例,但构造函数需要从当前程序集中引用sceneManager。有可能吗?@wolen可能吗?当然琐碎的?不不知何故,您需要传递该实例,这可能涉及程序集引用,也可能涉及将其作为
对象传递,这让我有点害怕。但我会设法找到一些关于它的文章并解决它。