繁体   English   中英

.Object类型是在.Net Core项目未引用的程序集中定义的

[英]The type 'Object' is defined in an assembly that is not referenced with .Net Core project

完整的错误是:

“对象”类型在未引用的程序集中定义。 您必须添加对程序集'mscorlib,version = 4.0.0.0,...'的引用

我尝试实例化仍在.Net 4.5程序集中的MongoClient,如下所示:

var client = new MongoDB.Driver.MongoClient(@"mongodb://localhost:27017/");
if (client == null)
{
    return;
}

生成错误在client == null行上。

我的project.json如下:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "MongoDB.Driver": "2.2.4",
    "MongoDB.Driver.Core": "2.2.4",
    "MongoDB.Bson": "2.2.4"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "net46"
    }
  }
}

我的VM具有Win10作为操作系统,因此我仅安装了.Net 46x。

我删除了dnxcore50的导入,并用完整的net46导入替换了它。 难道我做错了什么?

我通过删除netstandard1.6框架解决了该问题,并将其替换为“ net46”。 我的印象是,使用netstandard1.6,我可以导入.Net 4.6框架并删除dnxcore50导入,然后它应与完整的库一起运行,如下所述: https : //github.com/dotnet/corefx /blob/master/Documentation/architecture/net-platform-standard.md#mapping-the-net-platform-standard-to-platforms

目前,我已将项目更改为仅针对完整的.Net框架。 .Net Core Mongo驱动程序可用后,我可以将其定位为netcoreapp。

我的project.json现在是:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "MongoDB.Driver": "2.2.4",
    "MongoDB.Driver.Core": "2.2.4",
    "MongoDB.Bson": "2.2.4"
  },

  "frameworks": {
    "net46": { }
  }
}

感谢@Nick Acosta向我指出: .NET Core和.Net 4.5.2都使用的通用类库

更新资料

我在CoreFX Repo上收到了Eric Mellino的回复: https : //github.com/dotnet/corefx/issues/9885#issuecomment-231194545

您的第一个版本:

“ frameworks”:{“ netstandard1.6”:{“ imports”:“ net46”}}

的基本意思是:“为我建立一个面向netstandard1.6的库,即使不兼容,我也可以参考为net46构建的内容。” 事实证明程序集不兼容,因此您无法编译。 问题在于MongoClient引用了驻留在mscorlib.dll中的System.Object类型。 NETStandard.App面向netstandard1.6时,将引入System.Runtime.dll,该System.Runtime.dll引用驻留在System.Runtime.dll中的System.Object类型。 没有mscorlib外观可以弥补这种差异,因此会出现编译错误。

如果要为.NET Framework进行构建,请使用第二种方法,即

“ frameworks”:{“ net46”:{},}。

如果要为.NET Core进行构建,则需要一个与netstandard兼容的MongoClient版本。 然后可以从.NET Framework应用程序中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM