5

Я занят переносом нашего API-интерфейса ASP.NET с RC1 на RC2.Services.AddOptions() неоднозначно

RC2 требует we configure the following при использовании IOptions<T>:

services.AddOptions(); 

Но я получаю следующее сообщение об ошибке компиляции:

Error CS0121 The call is ambiguous between the following methods or properties: 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.AddOptions(Microsoft.Extensions.DependencyInjection.IServiceCollection)' and 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.AddOptions(Microsoft.Extensions.DependencyInjection.IServiceCollection)' TransitApi.Api..NET Framework 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" 
    ] 
    } 
} 
+0

Пожалуйста, не помещайте ** теги ** в заголовок вопроса. Мы проводим много времени, фиксируя это весь день и у вас меньше времени для ответа на вопросы. http://stackoverflow.com/help/tagging И не используйте неправильные теги. ASP.NET для устаревшего ASP.NET 4.5, ** не ** для ASP.NET Core – Tseng

+0

Я не могу реплицировать это, работая 'dotnet restore', а затем' dotnet build' на то, что вы показали, отлично работает для меня. – svick

ответ

2

Проверьте вашу зависимость в разделе "Ссылки" в рамках проекта.

Одна из ваших зависимостей забирает старые библиотеки, я подозреваю, что это "WindowsAzure.Storage": "7.0.0", поскольку он кажется единственным кандидатом на него. Я думаю, что версия 7.0.2 preview готова для rc2-final согласно странице проекта GitHub, попробуйте это пожалуйста.

+0

Это не было точно 'WindowsAzure.Storage', но это была другая библиотека, на которую ссылается другой проект, который не был RC2-ready. Благодаря! – davenewza

+0

У меня такая же проблема, как вы узнали? Как я могу определить, какой из них является ответственным? –

+0

@ davenewza, как вы выяснили, какая ссылка была? Какая была ссылка? Сейчас я очень похож на ситуацию. –

2

Хотя это прямо не связано с вашей проблемой (я подозреваю, что @Tseng правильно определил проблему с зависимостью), вы, вероятно, можете спокойно опустить вызов на AddOptions().

WebHostBuilder класс неявно вызывает AddOptions в вызове Build(), как можно видеть в GitHub. Предполагая, что вы создаете свое веб-приложение обычным способом, AddOptions уже будет зарегистрирован в сервисе сбора

0

Дополнительную информацию см. В этом link о том, как наиболее вероятно обращение к старой версии для RC1.