2015-02-24 9 views
16

Dzisiaj stworzyłem nowy pusty projekt vnext internetową i zaczął się do tej instrukcji: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6Asp vnext IServiceCollection istnieje w dwóch przestrzeniach nazw

Gdy próbuję dodać:

using Microsoft.Framework.DependencyInjection; 

i

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

Pojawia się komunikat o błędzie:

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' 

Próbowałem różnych betas aspnet.mvc i usunąłem aspnetcore50 z project.json (jak to wcześniej rozwiązało problemy). Próbowałem również określić przestrzeń nazw, ale nie rozwiązała ona niczego. Teraz nie mam pomysłów, jak rozwiązać ten problem.

Moja project.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" : { } 
} 
} 

Czy ktoś ma ten sam błąd i go rozwiązał?

+0

Zaktualizował studio graficzne do najnowszego wydania i teraz działa z jakiegoś powodu. – user1842278

+0

W jaki sposób jawnie zaktualizowałeś VS? Myślę, że mam najnowszy VS i nadal mam ten problem. – ryan1234

+0

Pobrałem VS z http://go.microsoft.com/fwlink/?LinkId=521794 i nie zmieniłem żadnych ustawień podczas instalacji – user1842278

Odpowiedz

1

Dlaczego nie korzystać z wyraźnym odniesieniem public void ConfigureServices(Microsoft.Framework.DependencyInjection.IServiceCollection services)

lub alternatywnie może trzeba używać aliasów jak ten

using DI = Microsoft.Framework.DependencyInjection; 

następnie

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

Ten błąd jest zazwyczaj spowodowane przez konflikt dwóch referencji w project.json wskazując na dwie różne wersje. Z powodu zależności można uzyskać dwa odwołania do dwóch różnych wersji biblioteki DependencyInjection. Może to być niezgodność -beta3 i -beta4 lub coś podobnego. Nawet jeśli te dwie biblioteki to nie to samo, może to spowodować problem.

0

Należy zaktualizować do najnowszych wersji pakietów nuget zgodnie z wyjaśnieniami here. Większość z nich znajduje się w przedpremierowym wydaniu, konieczne może być dodanie https://www.myget.org/F/aspnetvnext/api/v2/ jako części pakietów nugetów, aby uzyskać nocne kompilacje.

0

Na zależnościach w projekcie project.json używasz Microsoft.AspNet.Server.IIS beta2 i Microsoft. AspNet.Mvc beta4. Nie możesz tego zrobić. Możesz używać tej samej wersji beta dla wszystkich swoich zależności mvc6.

Napraw to, a następnie musisz zaktualizować Microsoft ASP.NET i Web Tools, aby dopasować wersję beta używanego projektu (beta4).

0

problem się wydarzył po uaktualnieniu do programu Visual Studio 2015 CTP 6. Ten błąd występuje tylko w moim projekcie utworzonym w poprzedniej wersji. Mam teraz szybkie sprawdzenie i kiedy zmienię poniższe w projekcie.json z "Microsoft.AspNet.Server.IIS": "1.0.0-beta2" na "Microsoft.AspNet.Server.IIS": "1.0. 0-beta3 ", a teraz mój błąd zniknął.

Powiązane problemy