运行动态编译的C#代码时出错

问题描述 投票:0回答:1

我在.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));

我该如何解决这个问题?

c# .net-core roslyn roslyn-code-analysis
1个回答
0
投票

您需要引用netstandard库,从技术上讲它没有定义任何类型,以匹配您的typeof(object)

    var netstandard = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "netstandard").Single()
© www.soinside.com 2019 - 2024. All rights reserved.