C#CSharpCodeProvider:在“编译程序集”中执行方法而无需添加引用

时间:2018-09-14 13:35:54

标签: c# reflection ipc csharpcodeprovider

我正在使用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的形式存在于系统上,因为它是由第三方应用程序从打包模块中加载的。

0 个答案:

没有答案