2015-04-18 41 views
0

我正在研究一個依賴Unity(IoC)進行DI的ASP.NET MVC5項目。有一天,我開始觀看Pluralsight課程「ASP.NET MVC 4的實用IoC」,而那個課程的人選擇Unity包中的Unity for MVC 4包(這裏說的是Nuget包),顯然你在文件中設置了所有內容稱爲Bootstrapper.cs,據我瞭解,它是由Nuget包創建和連接的。哪個適用於ASP.NET MVC 5的Nuget Unity軟件包?

我的項目沒有這個文件,但實際上引用了Unity.Mvc4(在課程中推薦的那個)。 Nuget軟件包管理器告訴我Unity.MVC4和Unity都安裝好了,Unity.MVC4依賴於Unity。

更糟糕的是,還有可從nuget.org獲得的用於ASP.NET MVC的Unity.MVC5和Unity引導程序。這只是我,還是有點混亂?

任何人都可以談談哪些Unity包與MVC 5實際合理嗎?

+1

引導程序掛接到應用程序啓動事件等等中,還可以使用global.asax中的Application_Start事件。讓MVC成爲global.asax :-)不要這麼想。在引導程序中,您將創建Unity容器並執行映射。所以你總是需要Unity,但是它會被安裝上面提到的一個軟件包,比如Unity.MVC.Just刪除Unity.MVC引用,刪除軟件包文件中的引用並重建項目,然後再安裝它,自動創建四個引導程序文件。但是如果你使用MVC5,我會推薦Unity.MVC5 – Legends

+0

是的,MVC有一個global.asax。從那裏我打電話到Startup.InitialiseUnityContainer,它工作得很好。我刪除了MVC4軟件包,並安裝了MVC5軟件包,無法區分它們,但仍然沒有看到Bootstrapper.cs文件。猜猜他們改變了MVC5。 –

+0

這完全沒問題。 Bootstrapper只是一個.cs/.vb/etc。文件在哪裏你把你的啓動東西放在一個地方,哪些是使用WebActivatorEx掛鉤到事件管道。所以在global.asax中調用它形成app_start也很好。 – Legends

回答

1

現在ASP.NET MVC 5有自己的DI實現,我們來看一看:http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-injection-in-asp-net-vnext.aspx

相信本機的功能會比端實現這種模式的更好。

+0

從文章中不太清楚,哪個版本的ASP.NET MVC將支持這種開箱即用的方式(它們只能引用ASP.NET vNext)。此外,我更喜歡選擇我已經熟悉的容器,並且沒有使用ASP.NET MVC中已有的擴展點的問題。 –

+2

本文引用ASP.Net vNext,它被稱爲ASP.Net 5,它與MVC 5不同。 –

相關問題