【问题标题】:dnx build - type or namespace not found. Missing reference?dnx build - 未找到类型或命名空间。缺少参考?
【发布时间】:2015-11-05 22:41:50
【问题描述】:

我用新的 dnu/dnx/vscode 实用程序组合制作了一个空的 asp.net Web 应用程序。

在我尝试添加 3.party 库之前它工作正常。

我已尝试使用以下 cmd 添加 MongoDB:

 dnu install MongoDb.Driver
 dnu restore

这会将 mongodb 依赖项添加到我的 project.json 文件中:

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-beta4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
    "Kestrel": "1.0.0-beta4",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
    "MongoDb.Driver": "2.0.0"
  },
  ...

但是当我尝试实际引用 mongo 时,事情失败了:

using MongoDB.Bson;

VSCode 为我提供了智能感知来添加此命名空间,但它在 MongoDB 下添加了一个红色曲线,在 Bson 下添加了一个绿色曲线。

当我尝试构建项目时

dnu build

消息失败

C:\source\.....cs(2,7): error CS0246: The type or namespace name 'MongoDB' could not be found (are you missing a using directive or an assembly reference?)

我错过了什么?

我的project.json 文件完全没有受到影响——除了添加的 mongo 依赖项:

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-beta4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
    "Kestrel": "1.0.0-beta4",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
    "MongoDb.Driver": "2.0.0"
  },
  "commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5001"
  },
  "frameworks": {
    "dnx451": {},
    "dnxcore50": {}
  },
  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ]
}

【问题讨论】:

    标签: mongodb visual-studio-code dnx


    【解决方案1】:

    检查您的project.json 文件中列出了哪些框架,以及您是否需要coreclr-ish 框架的额外或不同依赖项。

    【讨论】:

    • 我已添加完整的 project.json 文件以供参考。我不确定如何知道我是否需要 coreclr-ish 框架的额外或不同依赖项。我真的不知道coreclr-ish 框架是什么...
    【解决方案2】:

    在添加新依赖项时,您可能还需要重新加载编辑器。命令面板 -> 重新加载窗口

    Answer on twitter regarding this issue

    编辑:可能对你没有帮助,但这个线程可能是相关的。似乎 MongoDB 驱动程序包很难与 ASP.NET 的 som 版本一起运行。

    【讨论】:

    • 我已经尝试了所有可能的重启方式,从命令面板到电源开关,但没有用。 :-) 它可能是 MongoDb nuget 包的特定内容吗?
    • 可能对您没有帮助,但this thread 可能与此有关。似乎 MongoDB 驱动程序包很难与 ASP.NET 的 som 版本一起运行。
    • 可能确实如此! second answer 似乎可以解决问题!谢谢!
    • Slowmove,我认为您应该修改您的答案以包含您的评论,因为我无法接受评论作为答案......
    【解决方案3】:

    那是因为 MongoDb c# 驱动还不支持 CoreCLR。见this discussion。只需删除 project.json 中的 "dnxcore50": {} 即可。

    以前(Beta5)我得到同样的错误并没有给出含义。现在我意识到现在在 ASP.NET 5 Beta8 中产生了有意义的错误:

    项目中依赖MongoDB.Driver.Core 2.1.0不支持框架DNXCore,Version=v5.0。

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2015-06-09
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多