2015-09-03 12 views
5

Ho un progetto MVC con autenticazione OAuth, ogni volta che provo a eseguire il debug del progetto ottengo un FileLoadException dopo aver configurato IAppBuilder. Ho installato la versione 3.0.1 del Microsoft.Owin.Security.Oauth utilizzando il PMC, ma credo che da qualche parte si trova ancora un riferimento a una versione precedente del pacchetto perché ...Impossibile caricare il file o l'assembly Microsoft.Owin.Security.OAuth, Version = 2.0.0.0

questa è l'eccezione:

enter image description here

Questo è dove si è gettato:

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     ConfigureAuth(app); //Exception is thrown here 
    } 
} 

Questo è il mio packages.config:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Antlr" version="3.4.1.9004" targetFramework="net45" /> 
    <package id="CommonServiceLocator" version="1.3" targetFramework="net45" /> 
    <package id="EntityFramework" version="6.0.0" targetFramework="net45" /> 
    <package id="jQuery" version="1.10.2" targetFramework="net45" /> 
    <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" /> 
    <package id="log4net" version="2.0.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Core" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.EntityFramework" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Owin" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Web.Optimization" version="1.1.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Owin" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" /> 
    <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.0.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Google" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net45" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 
    <package id="Modernizr" version="2.6.2" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> 
    <package id="Owin" version="1.0" targetFramework="net45" /> 
    <package id="Unity" version="3.5.1404.0" targetFramework="net45" /> 
    <package id="WebGrease" version="1.6.0" targetFramework="net45" /> 
</packages> 

Ho provato ad aggiungere binding redirect come tale:

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Owin.Security.OAuth" PublicKeyToken="31bf3856ad364e35"/> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> 
</dependentAssembly> 

riesco a capire il motivo per cui questo lavoro Indifferente, non Visual Studio fare la differenza tra la 3.0.1 e 3.0.1.0?

Ho provato a rimuovere le cartelle obj e bin, pulire i progetti e ricostruirli.

Ho provato a eliminare tutti i pacchetti di nuget e ripristinarli.

Ho provato a reinstallare tutti i pacchetti Owin.

Ive usato Agente Ransack per cercare la mia intera directory di origine per qualsiasi file che contiene Microsoft.Owin.Security.OAuth ma non ha trovato riferimenti alla versione 2.0.0.0 o qualsiasi altra versione oltre al corretto 3.0.1.0.

Sono bloccato, qualche idea?

+0

l'aggiunta a 'packages.config' non è sufficiente, hai aggiunto un riferimento a tale dll nel tuo file' .cproj'? –

+0

controlla se c'è un Microsoft.Owin.Security.OAuth.dll nella cartella bin. –

+0

Cosa intendi con "l'aggiunta a packages.config non è sufficiente"?Proponi di installarlo utilizzando la console del gestore pacchetti e poi aggiungere il riferimento manualmente? Quale sarebbe il punto di ciò? E sì, la versione 3.0.1 della DLL si trova nella cartella Bin. – Marcus

risposta

10

Ok, quindi nel caso in cui qualcun altro finisca con questo problema;

Il problema era che il pacchetto Microsoft.AspNet.Identity.Owin dipende dallo Microsoft.Owin.Security.OAuth e c'era una mancata corrispondenza nella versione.

<package id="Microsoft.AspNet.Identity.Core" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.EntityFramework" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Owin" version="1.0.0" targetFramework="net45" /> 

Apparentemente, anche se richiede Microsoft.AspNet.Identity.Owin> = v2.0 di Microsoft.Owin.Security.OAuth, avente v3 + di Microsoft.Owin.Security.OAuth rompere la compatibilità (versione principale incoerenza).

Dopo aver aggiornato il pacchetto Microsoft.AspNet.Identity.Owin e i suoi familiari adiacenti Microsoft.AspNet.Identity.EntityFramework e Microsoft.AspNet.Identity.Core ho rimosso tutti i pacchetti, le cartelle bin e obj e la soluzione ricostruita. Ecco!

Un suggerimento per l'utente VS2013 + Ultimate è utilizzare il Visualizzatore pacchetto NuGet quando si esplorano le dipendenze del pacchetto.

+0

Puoi correggere il testo quotato: "anche se Microsoft.AspNet.Identity.Owin richiede> = v2.0 di Microsoft.AspNet.Identity.Owin, con v3 + di Microsoft.AspNet.Identity.Owin" – NVM

0

Controlla i tuoi riferimenti. Rimuovi Microsoft.Owin.Security.OAuth da qualsiasi posizione, quindi ripristina tutti i pacchetti di nuget.

+0

Seriamente? Hai letto il mio post? – Marcus

Problemi correlati