Я использую 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
, поэтому не имеет никакого смысла, если все еще дает мне ошибку.
Что здесь не так?