我已经搜索广泛,找不到这个问题的地球上的另一个人…
症状是:在Visual Studio 2012中,从VS2010升级的MVC 4.0项目,并配置为从VS2012和VS2010进行双版本编辑.当我右键单击控制器文件夹并从上下文菜单中选择Add-> Controller …时,我从Visual Studio获取“对象引用未设置为对象的实例”错误.
项目中的现有代码运行正常,如果我使用Add-> New Item选项,并从对话框中选择Controller,那么我可以添加一个空白控制器.我只是不能使用上面的方法添加一个类型的控制器.
如果我创建一个新的MVC4项目,那么我可以使用相同的菜单再次添加类型的控制器,所以在Visual Studio的安装中不存在问题,它必须存在于项目文件中.我还检查了我的项目和一个新的MVC项目之间的引用,所有的新项目引用都包含在我的项目中.有谁经历过类似的事情吗?我如何解决这个问题?
症状是:在Visual Studio 2012中,从VS2010升级的MVC 4.0项目,并配置为从VS2012和VS2010进行双版本编辑.当我右键单击控制器文件夹并从上下文菜单中选择Add-> Controller …时,我从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,建议安装实际上是Windows Management Framework 3.0的一部分的PowerShell 3,可从http://www.microsoft.com/en-us/download/details.aspx?id=34595开始.在提示时选择了Windows6.1-KB2506143-x64.msu文件因为我运行Win 7-64位.
安装后重新启动PC,重新打开Visual Studio和项目,并查看包管理器控制台.如果错误消失,那么控制器的问题也是如此.