C#-在运行时编译代码并使用加载到内存中的程序集

我需要在运行时编译C#代码.我正在使用这样的代码:CSharpCodeProvider provider = new CSharpCodeProvider();CompilerParameters parameters = new CompilerParameters();parameters.ReferencedAssemblies.Add(My...

我需要在运行时编译C#代码.我正在使用这样的代码:

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("MyLibrary.dll");    // File Path on Hard Drive
...

但是我想使用加载到内存中的库而不是它们的文件地址.可能吗?

解决方法:

如果它不是仅在内存中生成的程序集,则可以使用:

parameters.ReferencedAssemblies.Add
( typeof(ClassInAssemblyYouWantToAdd).Assembly.Location
);

要么:

parameters.ReferencedAssemblies.Add
( Assembly.Load("Full.Qualified.Assembly.Name").Location
);

Location属性具有加载的程序集的路径.

它必须具有程序集的硬拷贝,而不仅仅是内存中的内容,因此您不能仅为此而使用生成的程序集.如果需要使用内存生成的程序集,可以先将其保存到磁盘.

本文标题为:C#-在运行时编译代码并使用加载到内存中的程序集

基础教程推荐