【问题标题】:Services.AddOptions() ambiguousServices.AddOptions() 不明确
【发布时间】:2016-10-20 03:18:59
【问题描述】:

我正忙着将我们的 ASP.NET Core API 从 RC1 迁移到 RC2。

RC2 在使用IOptions<T> 时要求we configure the following

services.AddOptions();

但我得到以下编译错误:

错误 CS0121 调用在以下方法之间不明确或 特性: 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.AddOptions(Microsoft.Extensions.DependencyInjection.IServiceCollection)' 和 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.AddOptions(Microsoft.Extensions.DependencyInjection.IServiceCollection)' TransitApi.Api..NET 框架 4.5.2

这些是完全相同的扩展方法!我已经尝试删除所有包并删除锁定文件,但无济于事。

project.json:

{
  "title": "MyProject.Api",
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "dependencies": {

    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Authorization": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-rc2-final",
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Http": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Http.Abstractions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
    "Newtonsoft.Json": "8.0.3",
    "WindowsAzure.Storage": "7.0.0",
    "Microsoft.AspNetCore.Mvc.Formatters.Json": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Cors": "1.0.0-rc2-final"
  },
  "frameworks": {
    "net452": { }
  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "appsettings.json",
      "web.config"
    ]
  }
}

【问题讨论】:

  • 请不要将标签放入问题标题中。我们整天花很多时间来解决这个问题,而回答问题的时间却更少。 stackoverflow.com/help/tagging 也不要使用错误的标签。 ASP.NET 适用于旧版 ASP.NET 4.5, 适用于 ASP.NET Core
  • 我无法复制这个,运行 dotnet restore 然后 dotnet build 你显示的内容对我来说很好。

标签: asp.net-core asp.net-core-mvc asp.net-core-1.0 project.json


【解决方案1】:

在项目中的“参考”下查看您的依赖项。

您的一个依赖项是获取旧库,我怀疑它是 "WindowsAzure.Storage": "7.0.0",因为它似乎是它的唯一候选者。根据 GitHub 项目页面,我认为 7.0.2 preview 版本已经为 rc2-final 准备好了,请试试这个。

【讨论】:

  • 它不完全是 WindowsAzure.Storage,但它是另一个项目中引用的另一个库,它不是 RC2 就绪的。谢谢!
  • 我也有同样的问题,你怎么知道的?我怎样才能确定谁是责任人?
  • @davenewza 您是如何确定它是哪个参考文献的?参考是什么?我现在的情况非常相似。
【解决方案2】:

虽然这不是您的问题(我怀疑@Tseng 已经正确识别了依赖问题),但您可以放心地忽略对AddOptions() 的调用。

WebHostBuilder 类在对Build() 的调用中隐式调用AddOptions,如GitHub 所示。假设您正在以通常的方式构建您的 Web 应用程序,AddOptions 将已经在服务集合中注册

【讨论】:

    【解决方案3】:

    请参阅link 以获取更多信息,了解对 RC1 旧版本的引用很可能是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多