我需要在运行时编译C#代码。我正在使用这样的代码:
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("MyLibrary.dll"); // File Path on Hard Drive
...
但我想使用内存中加载的库而不是文件地址。有可能吗?
答案 0 :(得分:3)
如果它是仅在内存中生成的程序集,您可以使用:
parameters.ReferencedAssemblies.Add
( typeof(ClassInAssemblyYouWantToAdd).Assembly.Location
);
或者:
parameters.ReferencedAssemblies.Add
( Assembly.Load("Full.Qualified.Assembly.Name").Location
);
Location
属性具有加载程序集的路径。
它必须有一个程序集的硬拷贝,而不仅仅是内存中的东西,所以你不能只使用生成的程序集。如果需要使用它们,可以先将内存生成的程序集保存到磁盘。