Ошибка при запуске динамически скомпилированного кода C# - PullRequest
0 голосов
/ 24 января 2020

Я скомпилировал код c# динамически в проекте .Net Core 3.1. Я сохранил результат в виде файла .dll и пытался использовать его в другом проекте. В целевом проекте, когда я добавляю его в качестве ссылки и пытаюсь использовать, я получаю эту ошибку

the type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Private.CoreLib, Version=4.0.0.0.

Я пытался скомпилировать код как netstandard 2.1. Также есть ссылка на System.Private.CoreLib во время компиляции в _references, но версия новее, чем 4.0.0.0.

_references = new List<MetadataReference>();
_references.Add(MetadataReference.CreateFromFile(typeof(object).Assembly.Location));
_references.Add(MetadataReference.CreateFromFile(Assembly.Load("netstandard, Version=2.1").Location));
 _references.Add(MetadataReference.CreateFromFile(typeof(Newtonsoft.Json.JsonConvert).GetTypeInfo().Assembly.Location));

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 24 января 2020

Вам нужна ссылка на библиотеку netstandard, которая технически не определяет какие-либо типы, чтобы соответствовать вашему typeof(object).

    var netstandard = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "netstandard").Single()
...