【问题标题】:Missing assembly references and/or directives "The type or namespace name could not be found"缺少程序集引用和/或指令“找不到类型或命名空间名称”
【发布时间】:2019-03-24 19:25:25
【问题描述】:

参考此 Azure Cosmos Db 教程 (https://docs.microsoft.com/en-us/azure/cosmos-db/create-mongodb-dotnet),三个月前发布,显然已经过时。

我按照说明操作:克隆示例应用程序文件,更新我的连接字符串,通过 Nuget 包管理器安装 MongoDB.Driver 并运行应用程序。由于 2 个应用程序文件中存在多个 CS0246 和 CS0234 错误,构建(在 Visual Studio 2017 中)失败。看截图

我不是 C# 开发人员。我怀疑 MongoDB API 已更改或 MongoDB.Driver 已过时。该错误意味着缺少指令或程序集引用。

无论哪种方式,这都是由 Microsoft 而不是我编写的底层应用程序文件中的一个问题。请参阅此处的屏幕截图。有人对我如何解决这些错误并成功运行该应用程序有任何建议吗?也许我需要安装旧版本的 MongoDB.Driver?

【问题讨论】:

  • 您是否禁用了 NuGet 包的自动下载和更新?
  • 不,我没有。我一步一步按照教程进行操作,并没有更改 Visual Studio 2017 中的任何自动更新策略。您建议禁用吗?
  • 不,如果您查看解决方案资源管理器中的参考节点,您是否注意到缺少一些参考?未从 NuGet 存储库正确下载某些内容。您可以检查 TOOLS->NuGet Package Manager->Manage NuGet package for Solution 并尝试更新任何丢失的包
  • 我已经安装并更新了 MongoDB.Driver 到最新版本。我现在正在查看 NuGet 包及其已安装和完全更新。
  • 你能显示你项目中安装的所有 nuget 包吗?尝试安装 nuget.org/packages/mongodb.bson 至少第一个参考问题应该消失。

标签: c# mongodb visual-studio-2017 azure-cosmosdb azure-cosmosdb-mongoapi


【解决方案1】:

我从https://github.com/Azure-Samples/azure-cosmos-db-mongodb-dotnet-getting-started/archive/master.zip 下载了示例应用程序,它当前确实处于不一致状态,应该由 MS 修复。

问题

项目引用了找不到的dll:

原因是要求 Nuget 下载 MongoDB.BSon 2.6.1,但项目引用正在搜索 2.3.0 文件夹。

    <Reference Include="MongoDB.Driver, Version=2.3.0.157, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\MongoDB.Driver.2.3.0\lib\net45\MongoDB.Driver.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="MongoDB.Driver.Core, Version=2.3.0.157, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\MongoDB.Driver.Core.2.3.0\lib\net45\MongoDB.Driver.Core.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="MongoDB.Driver.Legacy, Version=2.3.0.157, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\mongocsharpdriver.2.3.0\lib\net45\MongoDB.Driver.Legacy.dll</HintPath>
      <Private>True</Private>
    </Reference>

我已将此问题报告给 MS,您可以在此处跟踪:https://github.com/MicrosoftDocs/azure-docs/issues/28204

修复

您可以等待 MS 修复它 - 或者 - 自己修复损坏的引用:

  1. 删除无效的 MongoDB.* 程序集引用。
  2. 从 nuget 下载的文件夹中读取了引用:
    • ..\packages\MongoDB.Bson.2.6.1\lib\net45\MongoDB.Bson.dll
    • ..\packages\MongoDB.Driver.2.6.1\lib\net45\MongoDB.Driver.dll
    • ..\packages\MongoDB.Driver.Core.2.6.1\lib\net45\MongoDB.Driver.Core.dll
  3. 编译验证

您还可以通过打开 MyTaskListApp.csproj 文件并在那里进行编辑来简化上述过程:

<Reference Include="MongoDB.Bson">
  <HintPath>..\packages\MongoDB.Bson.2.6.1\lib\net45\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver">
  <HintPath>..\packages\MongoDB.Driver.2.6.1\lib\net45\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver.Core">
  <HintPath>..\packages\MongoDB.Driver.Core.2.6.1\lib\net45\MongoDB.Driver.Core.dll</HintPath>
</Reference>

【讨论】:

    【解决方案2】:

    感谢您的反馈。这是 csproj 文件中的一个问题。已经提出了拉取请求。 您可以参考拉取请求以检查此修复的 ETA。

    https://github.com/Azure-Samples/azure-cosmos-db-mongodb-dotnet-getting-started/pull/8

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2012-05-01
      • 2020-11-28
      • 2015-06-12
      相关资源
      最近更新 更多