Я работаю над проектом. net MVC5 с Microsoft.Owin 4.1. Овин не работает так, как Я думаю, что он должен , поэтому подумал, что я могу покончить с этим с помощью отладки в источнике Овин.
Шаги были:
Клонировал aspnetkatana repo
Добавил 3 пакета, на которые ссылается мой проект, в мое решение (щелкните правой кнопкой мыши решение> добавить> существующий проект)
- Microsoft.Owin
- Microsoft.Owin.Security
- Microsoft.Owin.Security.Cookies
Наконец добавлены ссылки на мой проект (щелкните правой кнопкой мыши по моему проекту> добавить> ссылки)
Когда я пытаюсь построить решение, оно выдает следующие ошибки:
Тип 'IOwinContext' определяется в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку «Microsoft.Owin, версия = 3.0.1.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 '.
VS помечает строку app.CreatePerOwinContext
как источник ошибки.
public partial class Startup {
public void ConfigureAuth(IAppBuilder app) {
app.CreatePerOwinContext(AppUserContext.Create);
...
Другая ошибка жалуется на версию 4.1.0.0 с той же зависимостью (которая на самом деле является версией, которая у меня есть, так что эта довольно запутанная)
У меня вопрос, почему источник owin не рассматривается сборщиком как сборка v4.1.0.0, а также как преодолеть различные потребности в версиях в такой ситуации. Я имею в виду, что знаю, что если это произойдет с ссылками NuGet, я мог бы go с bindingredirect
, но не знаю, как справиться с ситуацией с включенным источником. Это также вызывает некоторую путаницу, так как не было необходимости вводить bindingredirect
, когда зависимость была включена NuGet. (см. ниже)
Sidenote: Прежде чем я начал экспериментировать с включением этих проектов в качестве источника, они были добавлены в пакеты NuGet. bindingredirect
не было введено, и сборка была выполнена без каких-либо ошибок или предупреждений. (Эта часть была явно удалена из файла csproj до того, как были представлены проекты owin)
Связанная часть в .csproj
<Reference Include="Microsoft.Owin, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.4.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Security, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Security.4.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Security.Cookies, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Security.Cookies.4.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll</HintPath>
</Reference>
Редактировать: И что я ищем ответ, как сказать (если возможно) строителю, который ищет временные зависимости в текущем решении. Уточнение: в моем решении через NuGet была введена пара Microsoft.AspNet.Identity
. Эти пакеты зависят от Microsoft.Owin
и подпакетов. Можно ли как-то сообщить сборщику, что после компиляции этих пакетов Microsoft.AspNet.Identity
может их использовать?