2014-10-02 7 views
0

Так пару часов назад, я задал этот вопрос на SO: Strange Microsoft.Owin DLL issue and Nugetне может ссылаться на версию net45 из Microsoft.Owin NuGet пакета

Я очистил удалил некоторые библиотеки DLL, которые были в папке бин моего сайта ASP.NET и проверено в контроле источника. После этого, я получаю сообщение об ошибке запуска моего сайта Localhost:

could not load type 'Microsoft.Owin.Security.AuthenticationDescription' from assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

Я понял, что мой проект теперь ссылается на версию 4.0 Microsoft.Owin, если я копирую версию Microsoft.Owin 4.5 в бункер каталог моего проекта ASP.NET MVC, исправлена ​​ошибка.

Так мне нужна ссылка на Microsoft.Owin в

\packages\Microsoft.Owin.2.1.0\lib\net45 

В настоящее время мой справочный проект не является:

\packages\Microsoft.Owin.2.1.0\lib\net40 

Независимо от того, сколько раз я удалить ссылку на net40 Microsoft.Owin .dll, закройте проект, откройте его, очистите, а затем попробуйте добавить новую ссылку и просмотреть в \ packages \ Microsoft.Owin.2.1.0 \ lib \ net45, я все равно получаю ссылку на версию net40.

Я проверил packages.config:

<package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" /> 

Файл csproj:

<Reference Include="Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll</HintPath> 
</Reference> 

В моей web.config:

<compilation debug="true" targetFramework="4.5"> 

Целевая основа для проекта проектные свойства - 4,5

Я удалил и переустановил пакет Microsoft.Owin 2.1.0 Nuget.

Я даже попытался скопировать net45 Microsoft.Owin.dll в папку net40 для пакета, который привел к ошибке:

Could not load file or assembly 'Microsoft.Owin' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Я использую Visual Studio 2012 с помощью инструментов для Visual Studio 2013 установлен, когда Я открываю консоль управления пакетами, я считаю, что это версия Nuget, которая у меня: Package Manager Console Host Version 2.8.50313.31

Если я копирую версию net45 в ящик моего проекта ASP.NET MVC, моя ошибка фиксируется

Где ссылка на Microsoft.Owin net40 в моих пакетах.config, Web.config или csproj, его нет там, все указывает на net45 libs для моих пакетов, но Microsoft.Owin указывает на \ packages \ Microsoft.Owin.2.1 .0 \ lib \ net40 независимо от того, что я делаю.

ответ

0

Глупый вопрос, но вы проверили, что целевая структура проекта соответствует загруженным вами пакетам?

+0

Целевая структура проекта ASP.NET MVC - это версия 4.5, пакет всегда загружает net40 и net45 dlls. –

+0

И Nuget решает, какую DLL использовать на основе целевого проекта. –

+0

Да, но со мной случилось то, что обновил целевой тип проекта (по какой бы то ни было причине это было, понижение или обновление) и nuget пакеты должны быть удалены и установлены снова (а не просто удалить DLL), чтобы менеджер зависимостей знал, какая версия фрейма права. – dariogriffo

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