如何从执行程序集引用库?

时间:2019-01-28 11:35:16

标签: c# .net-assembly

我有一个应用程序引用:DLL 1和DLL 2。

在应用程序中,最终用户可以为一些自定义功能编写一些代码。

在我的应用程序中,我使用

编译他的代码
// User's code
string code = @" ** User's code ** ";

// Create the provider
CSharpCodeProvider provider = new CSharpCodeProvider();

// Create the parameters
CompilerParameters parameters = new CompilerParameters();

// Compile the user's code 
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);

在编译之前,我想添加一些已经与我的应用程序一起使用的引用,它们是DLL 1和DLL 2(以便让用户使用我的某些功能)。

我尝试使用GetExecutingAssembly,但它返回了主应用程序程序集,而我找不到如何获取DLL 1和DLL 2的方法。

Assembly.GetExecutingAssembly

我不知道DLL的路径,因此以下指令将不起作用:

parameters.ReferencedAssemblies.Add("C:\DLL1.dll");

有人知道如何解决吗?

1 个答案:

答案 0 :(得分:1)

您可以从该程序集中定义的类型获取程序位置。因此,在您的CompilerParameters中,您可以像这样引用它们:

new CompilerParameters
{
    ReferencedAssemblies =
    {
        typeof(MyDll1.Type1).Assembly.Location,
        typeof(MyDll2.Type2).Assembly.Location
        //, etc
    }
    //, etc
}