2015-02-24 15 views
16

Oggi ho creato un nuovo progetto vNext web vuota e ha iniziato a seguire questa guida: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6Asp vNext IServiceCollection esiste in due namespace

Quando provo ad aggiungere:

using Microsoft.Framework.DependencyInjection; 

e

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

Viene visualizzato un messaggio di errore:

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' 

Ho provato diverse beta di aspnet.mvc e ho rimosso l'aspnetcore50 da project.json (in quanto ha risolto i problemi prima per me). Ho anche provato a specificare lo spazio dei nomi da usare ma non ha risolto nulla. Ora sono fuori di idee su come risolvere questo.

mio 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" : { } 
} 
} 

ha nessuno ottenuto lo stesso errore e risolto?

+0

Aggiornato lo studio visivo alla versione più recente e ora funziona per qualche motivo – user1842278

+0

Come è stato esplicitamente aggiornato VS? Penso di avere l'ultimo VS e ho ancora questo problema. – ryan1234

+0

Ho scaricato VS da http://go.microsoft.com/fwlink/?LinkId=521794 e non ho modificato nessuna impostazione durante l'installazione – user1842278

risposta

1

perché non utilizzare esplicito riferimento public void ConfigureServices(Microsoft.Framework.DependencyInjection.IServiceCollection services)

o, in alternativa, potrebbe essere necessario usare gli alias come questo

using DI = Microsoft.Framework.DependencyInjection; 

poi

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

Questo errore è generalmente causato da un conflitto di due riferimenti nel project.json che punta a due diverse versioni. A causa delle dipendenze è possibile ottenere due riferimenti a due versioni differenti della libreria DependencyInjection. Quindi potrebbe essere una mancata corrispondenza tra -beta3 e -beta4, o qualcosa del genere. Anche se le due librerie non sono la stessa cosa, può causare il problema.

0

È necessario eseguire l'aggiornamento alle versioni più recenti dei pacchetti di nuget come spiegato here. Molti di questi sono in pre-release, potrebbe essere necessario aggiungere https://www.myget.org/F/aspnetvnext/api/v2/ come parte dei pacchetti di nuget per ottenere build notturni

0

Sulle dipendenze in project.json si utilizza Microsoft.AspNet.Server.IIS beta2 e Microsoft. AspNet.Mvc beta4. Non puoi farlo. Hai ot utilizzare la stessa versione beta per tutte le tue dipendenze mvc6.

Correggere questo e quindi è necessario aggiornare Microsoft ASP.NET e strumenti Web per abbinare la beta che si sta utilizzando nel progetto (beta4).

0

il problema si è verificato dopo l'aggiornamento a Visual Studio 2015 CTP 6. Questo errore esiste solo nel mio progetto creato nella versione precedente. Ho un controllo rapido solo ora e quando cambio il seguente all'interno project.json da "Microsoft.AspNet.Server.IIS": "1.0.0-beta2" a "Microsoft.AspNet.Server.IIS": "1.0. 0-beta3 ", e ora il mio errore è andato.