CSharpCodeProvider:引用引用程序集的不同版本

时间:2014-11-22 15:45:10

标签: c# compilation appdomain csharpcodeprovider

假设项目Main引用了项目Ref。在Main中,我定义了一个CSharpCodeProvider并使用它在运行时编译代码。

var provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v4.0" } });
var parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
// Rest of the referenced assemblies.

在运行时编译的代码可能需要较新版本的Project Ref才能正常运行。所以我尝试在相对子文件夹(Ref.Dll)中添加新的plugins

    parameters.ReferencedAssemblies.Add(@"d:\project-output-path\plugins\Ref.dll");  

我还添加了以下内容:

AppDomain.CurrentDomain.AppendPrivatePath("plugins");  

问题是当我尝试动态编译脚本时,正在使用主文件夹中的Ref.dll并导致错误。

那么,仅为我的脚本引用新Ref项目的最佳方法是什么? 附:我真的不想创建另一个AppDomain,因为动态执行的代码与当前AppDomain中加载的代码耦合在一起并且无法分开。

0 个答案:

没有答案