无法添加MVC控制器VS2012给出"对象引用未设置为对象的实例"

Fra*_*ler 16 asp.net-mvc visual-studio-2010 asp.net-mvc-4 visual-studio-2012

我已经广泛搜索了,并且在这个星球上找不到另一个有这个问题的人...
症状是:
在Visual Studio 2012中,在从VS2010升级的MVC 4.0项目中,配置为从VS2012和VS2010进行双版本编辑.当我右键单击控制器文件夹并从上下文菜单中选择添加 - >控制器...时,我从Visual Studio得到"未将对象引用设置为对象实例"错误.

项目中的现有代码运行正常,如果我使用Add-> New Item选项,并从对话框中选择Controller,那么我可以添加一个空白控制器.我只是无法使用上面的方法添加一个类型化的控制器.

但是,如果我创建一个新的MVC4项目,那么我可以使用相同的菜单再次添加类型控制器,因此Visual Studio的安装中不存在该问题,它必须存在于项目文件中.
我还检查了我的项目和新的MVC项目之间的引用,所有新的项目引用都包含在我的项目中.
有没有人经历类似的事情?

我该如何解决?

Fra*_*ler 20

该问题似乎是由于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
Run Code Online (Sandbox Code Playgroud)

当我从包管理器控制台检查注册的脚手架时,我得到了:

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 
Run Code Online (Sandbox Code Playgroud)

很明显,脚手架配置为使用MvcScaffolding包,但包有注册错误.

快速搜索错误提供了此链接http://mvcscaffolding.codeplex.com/discussions/437692,其中提到了建议安装PowerShell 3的https://visioautomation.codeplex.com/discussions/397034,这实际上是Windows Management Framework 3.0,可从http://www.microsoft.com/en-us/download/details.aspx?id=34595获得.我在提示时选择了Windows6.1-KB2506143-x64.msu文件,因为我正在运行Win 7-64位.

安装后重新启动PC,重新打开Visual Studio和项目,然后查看软件包管理器控制台.如果错误消失,那么控制器问题也是如此.