Asp.net-Mvc

無法添加 MVC 控制器 VS2012 給出“對象引用未設置為對象的實例”

  • May 7, 2020

我進行了廣泛的搜尋,但在這個星球上找不到另一個人有這個問題……

症狀是:
在 Visual Studio 2012 中,在從 VS2010 升級並配置為從 VS2012 和 VS2010 進行雙版本編輯的 MVC 4.0 項目上。當我右鍵點擊控制器文件夾並從上下文菜單中選擇添加->控制器…時,我從 Visual Studio 收到“對象引用未設置為對象的實例”錯誤。

項目中的現有程式碼執行良好,如果我改用 Add->New Item 選項,並從對話框中選擇 Controller,那麼我可以添加一個空白控制器。我只是無法使用上述方法添加類型控制器。

但是,如果我創建一個新的 MVC4 項目,那麼我可以使用相同的菜單再次添加類型控制器,因此 Visual Studio 的安裝中不存在問題,它必須存在於項目文件中。
我還檢查了我的項目和新 MVC 項目之間的引用,並且所有新項目引用都包含在我的項目中。
有沒有人經歷過類似的事情?

我該如何解決?

該問題似乎是由 MvcScaffolder 包的安裝/註冊不完整引起的。以下過程為我解決了我的問題。

啟動 Visual Studio 並打開項目。打開包管理器控制台。(這是導致解決方案的“技巧”或缺失的資訊……)

在這裡,我看到了由用於註冊的 PowerShell 腳本引起的以下錯誤:

New-Object : Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
At <ProjectPath...>\packages\MvcScaffolding.1.0.9\tools\registerWithMvcTooling.ps1:163 char:27
+     $newProvider = New-Object <<<<  $powerShellScaffolderProviderType($mvcScaffoldingProvider)
   + CategoryInfo          : NotSpecified: (:) [New-Object], FileNotFoundException
   + FullyQualifiedErrorId : System.IO.FileNotFoundException, Microsoft.PowerShell.Commands.NewObjectCommand

當我從包管理器控制台檢查註冊的腳手架時,我得到:

PM> get-defaultscaffolder

DefaultName          ScaffolderName
Action               MvcScaffolding.Action
Controller           MvcScaffolding.Controller
CustomScaffolder     T4Scaffolding.CustomScaffolder
CustomTemplate       T4Scaffolding.CustomTemplate
DbContext            T4Scaffolding.EFDbContext
Mailer               Mailer.Razor
Repository           T4Scaffolding.EFRepository
UnitTest             MvcScaffolding.ActionUnitTest
View                 MvcScaffolding.RazorView
Views                MvcScaffolding.Views 

很明顯,腳手架配置為使用 MvcScaffolding 包,但該包有註冊錯誤。

快速搜尋錯誤提供了此連結<http://mvcscaffolding.codeplex.com/discussions/437692>,它指的是<https://visioautomation.codeplex.com/discussions/397034>,它建議安裝 PowerShell 3,這實際上是Windows Management Framework 3.0,可從<http://www.microsoft.com/en-us/download/details.aspx?id=34595>獲得。當出現提示時,我選擇了 Windows6.1-KB2506143-x64.msu 文件,因為我執行的是 Win 7-64 位。

安裝後重啟電腦,重新打開 Visual Studio 和項目,查看包管理器控制台。如果錯誤消失了,那麼控制器問題也消失了。

引用自:https://stackoverflow.com/questions/16148914