我正在使用CSharpCodeProvider
将C#编译成一个动态程序集,其中包含由外部软件调用的方法。
让我们采用我正在动态编译的以下代码字符串:
public static class Foo
{
public static object Bar(a, b) {
return NameSpace.Type.Method(a, b); // Need to call original/compiling assembly
}
}
调用NameSpace.Type.Method
时,我真正想做的是在程序集中调用最初编译C#代码的方法(即使用CSharpCodeProvider
的方法)。
也就是说,我不能使用ReferencedAssemblies.Add
将其传递到CSharpCodeProvider
中。这是因为我的程序集(DLL)以动态加载的方式进行包装-即,文件系统上不存在该程序集。
还有其他方法可以在编译程序集上调用方法吗?
referenced question使用ReferencedAssemblies.Add
,如上所述,由于调用程序集实际上不存在于文件系统上而是仅存在于内存中,因此我无法使用。 >
此外,所引用的问题涉及从另一个调用一个动态编译的程序集的情况。我的情况有所不同,因为我需要调用原始的(编译)程序集-并且它不以DLL的形式存在于系统上,因为它是由第三方应用程序从打包模块中加载的。