.NET Core Roslyn не может найти System.Decimal в сборках - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Roslyn для компиляции моего класса во время выполнения до assembly вывода.Я добавил необходимые сборки в ссылки на метаданные, как показано ниже:

string p = Path.GetDirectoryName(typeof(object).Assembly.Location);
_ref = new MetadataReference[] {
     MetadataReference.CreateFromFile(Path.Combine(p, "System.Collections.dll")),
     MetadataReference.CreateFromFile(Path.Combine(p, "System.Runtime.dll")),
     MetadataReference.CreateFromFile(Path.Combine(p, "System.Private.CoreLib.dll")),
     MetadataReference.CreateFromFile(typeof(object).Assembly.Location),          
     MetadataReference.CreateFromFile(typeof(Schema).Assembly.Location)
};

И мое синтаксическое дерево CSharp:

using System;

namespace _
{
    public sealed class Model : Record
    {
        public string name;
        public decimal amount;
        public bool granted;
        public DateTime birthdate;
    }
}

И когда я использую свой файл dll в другой проект , я получил ошибку при создании экземпляра Model, ошибка находится в моем свойстве decimal, которое amount.Omnisharp показывает мне:

The type 'Decimal' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.

Насколько я знаю, System.Private.CoreLib.dll существовал в typeof(object).Assembly.Location, поэтому не имеет никакого смысла, если все еще дает мне ошибку.

Что здесь не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...