Ссылка на тип «CancellationToken» утверждает, что он определен в «System.Runtime» - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сгенерировать некоторый класс с помощью API Roslyn, однако я не могу успешно скомпилировать сгенерированный код из-за этой ошибки.Звучит:

error CS7069: Reference to type 'CancellationToken' claims it is defined in 'System.Runtime', but it could not be found

Я пытаюсь сделать следующее:

var objLocation = typeof(object).GetTypeInfo().Assembly.Location;
var path = new FileInfo(objLocation);
var directory = path.Directory;
Compilation = Compilation.AddReferences(MetadataReference.CreateFromFile(objLocation));
        Compilation = Compilation.AddReferences(MetadataReference.CreateFromFile(Path.Combine(directory.FullName, "System.dll")));
        Compilation = Compilation.AddReferences(MetadataReference.CreateFromFile(Path.Combine(directory.FullName, "System.Runtime.dll")));

Насколько я понимаю, System.Runtime.dll - это только заполнитель, который ссылается на разные библиотеки, поэтому я неНе понимаю, почему появляется сообщение и почему компилятор ищет этот тип здесь.

Может ли кто-нибудь указать мне что-то?

1 Ответ

0 голосов
/ 25 мая 2018

Звучит так, как будто вы компилируете для ядра .net.

CancellationToken находится в mscorlib.dll, поэтому вам также необходимо сослаться на это.

...