ASPNET核心前RC2依赖歧义

时间:2016-04-21 12:42:15

标签: asp.net-core asp.net-core-mvc dotnet-cli

我正在使用:

.NET Command Line Tools (1.0.0-rc2-002439)

Product Information:
Version:     1.0.0-rc2-002439
Commit Sha:  ef0c3b2cee

Runtime Environment:
OS Name:     Windows
OS Version:  10.0.10586
OS Platform: Windows
RID:         win10-x64

得到:

  

错误CS0121:以下方法或属性之间的调用不明确:'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action)'和'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions .Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action)'

我怀疑“dotnet restore”中包含多个OptionsModel程序集(不同版本)。

证据可能在这里:

enter image description here 第二个建议使用不同的参数名称:

enter image description here

Project.lock.json文件有一些有趣的行(“Infrastructure”是一个引用的程序集):

"Infrastructure/1.0.0": {
    "type": "project",
    "framework": ".NETFramework,Version=v4.6.1",
    "dependencies": {
      "Domain": "1.0.0",
      "Microsoft.Extensions.Caching.Abstractions": "1.0.0",
      "Microsoft.Extensions.OptionsModel": "1.0.0",
      "Newtonsoft.Json": "8.0.3",
      "WindowsAzure.Storage": "6.2.1"
    },
    "compile": {
      "net461/Infrastructure.dll": {}
    },
    "runtime": {
      "net461/Infrastructure.dll": {}
    }
  }

,而Web应用程序使用Microsoft.Extensions.OptionsModel / 1.0.0-rc2-15914

以下是基础架构程序集的配置部分:

"dependencies": {
    "Domain": "1.0.0-*",
    "Microsoft.Extensions.Caching.Abstractions": "1.0.0-*",
    "Microsoft.Extensions.OptionsModel": "1.0.0-*",
    "Newtonsoft.Json": "8.0.3",
    "WindowsAzure.Storage": "6.2.1-*"
}

问题是:为什么在执行“dotnet restore”时会选择不同的版本(1.0.0和1.0.0-rc2-15914)?

更新:我尝试将基础设施项目的project.json更改为“Microsoft.Extensions.OptionsModel”:“1.0.0-rc2-15914”但由于屏幕截图中显示的含糊不清,我仍然无法编译。是否有任何程序集缓存在我的计算机上?

1 个答案:

答案 0 :(得分:2)

解决方案是:

Microsoft.Extensions.Options 而不是Microsoft.Extensions.OptionsModel包必须在引用的项目中使用。