使用CSharpCodeProvider加载引用的dll失败

时间:2019-04-03 11:19:24

标签: gac csharpcodeprovider

我有一个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)

0 个答案:

没有答案