C# 如何从执行程序集中引用库?
我有一个应用程序引用,比如说:DLL 1和DLL 2 在应用程序中,最终用户可以为一些定制功能编写一些代码 在我的应用程序中,我使用以下方法编译他的代码:C# 如何从执行程序集中引用库?,c#,.net-assembly,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 CompilerParam
// 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(以便让用户使用我的一些函数)
我尝试使用GetExecutionGassembly,但它返回主应用程序集,我找不到如何获取DLL 1和DLL 2
Assembly.GetExecutingAssembly
我不知道DLL的路径,因此以下指令不起作用:
parameters.ReferencedAssemblies.Add("C:\DLL1.dll");
有人知道如何解决这个问题吗?您可以从该程序集中定义的类型获取程序集位置。因此,在编译器参数中,您可以这样引用它们:
new CompilerParameters
{
ReferencedAssemblies =
{
typeof(MyDll1.Type1).Assembly.Location,
typeof(MyDll2.Type2).Assembly.Location
//, etc
}
//, etc
}
getExecutionGassembly().getReferenceAssembly()
然后过滤它。。。您还知道,这将是加载此程序集的“不同实例”吗?因此,如果您的函数(dll 2中的fx)正在修改程序中的某些内容,那么它显然将不起作用。您可以使用类似这样的内容从其名称AppDomain.CurrentDomain.GetAssemblys().SingleOrDefault(assembly=>assembly.GetName().name==name)获取程序集代码>