我在.Net Core 3.1
项目中动态编译了c#代码。我将结果另存为.dll
文件,并试图在另一个项目中使用它。在目标项目中,当我将其添加为参考并尝试使用时,出现此错误
the type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Private.CoreLib, Version=4.0.0.0
。
我试图将代码编译为netstandard 2.1
。并且在System.Private.CoreLib
中的编译过程中还引用了_references
,但版本比4.0.0.0
更新。
_references = new List<MetadataReference>();
_references.Add(MetadataReference.CreateFromFile(typeof(object).Assembly.Location));
_references.Add(MetadataReference.CreateFromFile(Assembly.Load("netstandard, Version=2.1").Location));
_references.Add(MetadataReference.CreateFromFile(typeof(Newtonsoft.Json.JsonConvert).GetTypeInfo().Assembly.Location));
我该如何解决这个问题?
您需要引用netstandard库,从技术上讲它没有定义任何类型,以匹配您的typeof(object)
。
var netstandard = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "netstandard").Single()