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

C# CSharpCodeProvider:引用引用的程序集的不同版本,c#,compilation,appdomain,csharpcodeprovider,C#,Compilation,Appdomain,Csharpcodeprovider,假设projectmain有一个对projectref的引用。在Main中,我定义了一个CSharpCodeProvider,并使用它在运行时编译代码 var provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v4.0" } }); var parameters = new CompilerParameters(); parameters.Reference

假设projectmain有一个对projectref的引用。在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.
我还补充了以下内容:

AppDomain.CurrentDomain.AppendPrivatePath("plugins");  
问题是,当我尝试动态编译脚本时,主文件夹中的Ref.dll正在使用,并导致错误

那么,在我的脚本中引用新Ref项目的最佳方式是什么?
另外,我真的不希望创建另一个AppDomain,因为动态执行的代码与当前AppDomain中加载的代码耦合在一起,不能分离

这没有什么意义,当您运行代码时肯定会遇到问题。问题是,当我在运行时编译新代码时,我希望将新的Ref项目作为引用,它比projectmain中引用的项目新。旧的Ref引用将用于在运行时编译我的脚本,这会导致错误。我的问题是找到一种方法来隔离CodeProvider参数中的引用,并使用新的Ref项目。更清楚的是,运行时编译的代码可能会有所不同,因此需要在运行时引用的Ref项目版本也会有所不同。基本上,我想添加一个位于子文件夹中的引用程序集的新版本,作为运行时对我的CodeProvider的引用程序集的引用。
AppDomain.CurrentDomain.AppendPrivatePath("plugins");