Asp vnext IServiceCollection существует в двух пространствах имен

Сегодня я создал новый пустой веб-проект vnext и начал следовать этому руководству: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6

Когда я пытаюсь добавить:

using Microsoft.Framework.DependencyInjection;

и

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

Я получаю сообщение об ошибке:

The type 'IServiceCollection' exists in both 'Microsoft.Framework.DependencyInjection.IServiceCollection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'Microsoft.Framework.DependencyInjection.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

Я пробовал разные бета-версии aspnet.mvc, и я удалил aspnetcore50 из project.json(поскольку он решил проблемы раньше для меня). Я также попытался указать пространство имен для использования, но оно ничего не решило. Теперь у меня нет идей о том, как решить эту проблему.

Мой проект .json

{
"webroot": "wwwroot",
"version": "1.0.0-*",
"exclude": [
    "wwwroot"
],
"packExclude": [
    "node_modules",
    "bower_components",
    "**.kproj",
    "**.user",
    "**.vspscc"
],
"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta2",
    "Microsoft.AspNet.Mvc": "6.0.0-beta4-12857"
},
"frameworks" : {
    "aspnet50" : { }
}
}

Кто-нибудь получил ту же ошибку и решил ее?

Ответ 1

Почему бы не использовать явную ссылку public void ConfigureServices(Microsoft.Framework.DependencyInjection.IServiceCollection services)

Или альтернативно Возможно, вам придется использовать псевдонимы вроде этого

using DI = Microsoft.Framework.DependencyInjection;

затем

public void ConfigureServices(DI.IServiceCollection services)
{
    services.AddMvc();
}

Ответ 2

Эта ошибка обычно вызвана конфликтом двух ссылок в project.json, указывающим на две разные версии. Из-за зависимостей вы можете получить две ссылки на две разные версии библиотеки DependencyInjection. Таким образом, это может быть несоответствие -beta3 и -beta4, или что-то в этом роде. Даже если две библиотеки не одно и то же, это может вызвать проблему.

Ответ 3

Вам нужно обновить до последних версий пакетов nuget, как описано здесь. Большинство из них находятся в предварительном выпуске, вам может потребоваться добавить https://www.myget.org/F/aspnetvnext/api/v2/ как часть ваших пакетов nuget для создания ночных сборок

Ответ 4

В ваших зависимостях в project.json вы используете Microsoft.AspNet.Server.IIS beta2 и Microsoft.AspNet.Mvc beta4. Вы не можете этого сделать. Вы используете одну и ту же бета-версию для всех ваших зависимостей mvc6.

Исправить это, а затем вам необходимо обновить Microsoft ASP.NET и веб-инструменты в соответствии с бета-версией, которую вы используете в своем проекте (beta4).

Ответ 5

проблема возникла после обновления до Visual Studio 2015 CTP 6. Эта ошибка существует только в моем проекте, созданном в предыдущей версии. У меня есть быстрая проверка только сейчас, и когда я изменяю следующий внутри project.json от "Microsoft.AspNet.Server.IIS": "1.0.0-beta2" до "Microsoft.AspNet.Server.IIS": "1.0.0-beta3", и теперь моя ошибка исчезла.