我正在使用 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
,因此如果仍然给我错误,也没有任何意义。
这是怎么了?