我有一个C#代码,可以动态创建类并运行它们,在生成的代码中,我添加了对当前dll(正在创建它们的那个)的引用。
由于缺少dll,创建的类无法编译
var provider = new Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
cp.TreatWarningsAsErrors = false;
cp.ReferencedAssemblies.Add(Assembly.GetAssembly(typeof(Enumerable)).Location);
cp.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);
CompilerResults cr = provider.CompileAssemblyFromFile(cp, scripts.ToArray());
变量cr包含以下错误:
(0,0)无法打开元数据文件'我的dll'-无法加载文件或程序集'System.Collections.Immutable,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中之一它的依赖性。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040) (0,0)无法打开元数据文件'C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Core \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Core.dll'-无法加载文件或程序集'System.Collections.Immutable,版本= 1..2.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040) (0,0)无法打开元数据文件'C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Runtime \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Runtime.dll'-无法加载文件或程序集'System.Collections.Immutable,版本= 1..2.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040) (0,0)无法打开元数据文件'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib.dll'-无法加载文件或程序集'System.Collections.Immutable,Version = 1.2。 0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)