Использование CSharpCodeProvider завершается неудачно при загрузке ссылочной библиотеки DLL - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть код 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) Файл метаданных «my dll» не может быть открыт - Не удалось загрузить файлили сборка 'System.Collections.Immutable, Version = 1.2.0.0, Culture = нейтральная, 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, Version = 1.2.0.0, Culture = нейтральный, 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, Version = 1.2.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a' или одну из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку(Исключение из HRESULT: 0x80131040) (0, 0) Файл метаданных 'C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib.dll' не может быть открыт - Не удалось загрузить файл или сборку 'System.Collections.Imutable, версия = 1.2.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку(Исключение из HRESULT: 0x80131040)

...