Я работаю над проектом ASP.NET MVC5, который полагается на Unity (IoC) для DI. На днях я начал смотреть курс Pluralsight «Практический IoC с помощью ASP.NET MVC 4», и парень, который делает этот курс, выбирает пакет Unity для MVC 4 над пакетом Unity (здесь говорят пакеты Nuget), где, очевидно, вы настраиваете все в файле называемый Bootstrapper.cs, который, как я понимаю, создан и подключен к этому пакету Nuget.Какие пакеты Nuget Unity для ASP.NET MVC 5?
Мой проект не имеет этого файла, но на самом деле ссылки Unity.Mvc4 (тот, который рекомендуется в ходе курса). Менеджер пакетов Nuget сообщает мне, что Unity.MVC4 и Unity установлены и что Unity.MVC4 зависит от Unity.
Хуже того, существует также Unity.MVC5 и Unity bootstrapper для ASP.NET MVC, доступный с nuget.org. Это только я, или это немного странно?
Может ли кто-нибудь пролить некоторый свет на то, что пакеты Unity действительно имеют смысл с MVC 5?
Bootstrapper подключен к событию запуска приложения среди других, вы также можете использовать событие Application_Start в global.asax. Имеет MVC global.asax :-) Не думайте так. В bootstrapper вы создаете контейнер Unity и делаете сопоставления. Поэтому вам нужно Unity всегда, но он устанавливается с одним из упомянутых выше пакетов, таких как Unity.MVC. Просто удалите ссылку Unity.MVC и удалите ссылки в файле пакетов и перестройте проект, затем он будет устанавливать его снова и автоматически создайте файл bootstrapper. Но если вы используете MVC5, я бы порекомендовал Unity.MVC5 – Legends
Да, MVC имеет global.asax. Оттуда я звоню в Startup.InitialiseUnityContainer, который работает отлично. Я удалил пакет MVC4 и установил MVC5 один, не могу сказать разницы, но файл Bootstrapper.cs по-прежнему отсутствует, насколько я могу видеть. Думаю, они изменили это для MVC5. –
Это полностью нормально. Bootstrapper - это просто .cs/.vb/etc. файл, где u помещает ваш загрузочный материал внутри в одном месте и который подключен к конвейеру событий с использованием WebActivatorEx. Так что называть его формой app_start в global.asax тоже отлично. – Legends