假设项目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中加载的代码耦合在一起并且无法分开。