.NET Core Roslyn在程序集中找不到System.Decimal

时间:2018-11-28 07:17:25

标签: c# .net-core roslyn

我正在使用 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的实例时出现错误,该错误位于我的{{1 }}属性,即decimal。 Omnisharp告诉我:

amount

据我所知,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,因此如果仍然给我错误,也没有任何意义。

这是怎么了?

0 个答案:

没有答案