2015-09-03 3 views
5

У меня есть проект MVC с аутентификацией OAuth, каждый раз, когда я пытаюсь отладить проект, я получаю исключение FileLoadException при настройке IAppBuilder. Я установил версию 3.0.1 из Microsoft.Owin.Security.Oauth с помощью PMC, но я предполагаю, что где-то еще лежит ссылка на старую версию пакета, потому что ...Не удалось загрузить файл или сборку Microsoft.Owin.Security.OAuth, Version = 2.0.0.0

Это исключение:

enter image description here

Это где брошено:

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

Это мой 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> 

Я попытался добавить binding redirect как таковой:

<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> 

не могу понять, почему эта работа это не распространяется, делает Visual Studio сделать разницу между 3.0.1 и 3.0.1.0?

Я попытался удалить папки obj и bin, очистить проекты и перестроить их.

Я пробовал удалить все пакеты nuget и восстановить их.

Я попытался переустановить все пакеты Owin.

I've используется агент Ransack искать весь мой исходный каталог для любого файла, содержащего Microsoft.Owin.Security.OAuth но не нашли никаких ссылок на версии 2.0.0.0 или любой другой версии, кроме правильного 3.0.1.0.

Я застрял, любые идеи?

+0

Недостаточно добавить к 'packages.config', добавили ли вы ссылку на эту DLL в файл' .cproj'? –

+0

проверьте, есть ли файл Microsoft.Owin.Security.OAuth.dll в папке bin. –

+0

Что вы подразумеваете под «добавлением в packages.config недостаточно»?Предлагаете ли вы установить его с помощью консоли диспетчера пакетов, а затем добавить ссылку вручную? В чем смысл этого? И да, версия 3.0.1 DLL находится в папке Bin. – Marcus

ответ

10

Хорошо, так что на всякий случай кто-то заканчивает эту проблему;

Проблема была в том, что упаковка Microsoft.AspNet.Identity.Owin зависит от Microsoft.Owin.Security.OAuth, и в версии есть несоответствие.

<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" /> 

По-видимому, несмотря на то, Microsoft.AspNet.Identity.Owin требуется> = v2.0 из Microsoft.Owin.Security.OAuth, имея v3 + из Microsoft.Owin.Security.OAuth нарушит совместимость (основная версия несогласованности).

После того как я обновил пакет Microsoft.AspNet.Identity.Owin и его соседние члены семьи Microsoft.AspNet.Identity.EntityFramework и Microsoft.AspNet.Identity.Core Я удалил все пакеты, папки bin и obj и восстановил решение. Вуаля!

Совет для VS2013 + Конечный пользователь должен использовать визуализатор пакета NuGet при изучении зависимостей пакетов.

+0

Можете ли вы исправить цитируемый текст: «хотя Microsoft.AspNet.Identity.Owin требует> = v2.0 Microsoft.AspNet.Identity.Owin, имея v3 + из Microsoft.AspNet.Identity.Owin" – NVM

0

Проверьте свои рекомендации. Удалите Microsoft.Owin.Security.OAuth везде, а затем восстановите все пакеты nuget.

+0

Серьезно? Вы читали мой пост? – Marcus

Смежные вопросы