在VS2012中打开MVC3项目

时间:2012-07-11 15:12:49

标签: asp.net-mvc asp.net-mvc-3 visual-studio-2012

我正在尝试在新安装的Visual Studio Express 2012 RC中打开MVC3解决方案。到目前为止,我遇到的问题由于某种原因VS2012不知道项目是MVC项目,所以它不会添加视图/控制器。通过将以下GUID添加到解决方案中每个项目的ProjectTypeGuids文件的.csproj节点来实现此目的:

{E53F8FEA-EAE0-44A6-8774-FFD645390401}

但是,当我打开剃刀视图时,会显示这些错误(以及其他相关错误):

Error    20    The name 'model' does not exist in the current context    c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml    2    2    EventManagement

Error    21    The name 'T' does not exist in the current context    c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml    5    14    EventManagement

Error    22    'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'LabelFor' and no extension method 'LabelFor' accepting a first argument of type 'System.Web.WebPages.Html.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)    c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml    6    11    EventManagement

Intellisense正在剃刀视图中工作,但它只为Html帮助器方法提供了有限数量的字段。例如,没有像LabelFor和TextboxFor那样的特定于模型的方法。

我安装了MVC 3和4。该解决方案在VS2010中运行良好。

更新

在VS2012中添加 MVC3项目时,它可以正常工作。这意味着它肯定与项目有关,而不是安装。

更新2: 我认为问题是视图无法访问根配置中引用的库:

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
      <add namespace="System.Web.WebPages" />
      <add namespace="System.Linq"/>
      <add namespace="System.Collections.Generic"/>
      <add namespace="Orchard.Mvc.Html"/>
    </namespaces>
  </pages>
</system.web.webPages.razor>

它在运行时运行,但是intellilsense和错误控制台不会启动它

感谢任何帮助。

由于

5 个答案:

答案 0 :(得分:3)

对我来说,通过添加以下内容解决了这个问题:

<add key="webpages:Version" value="1.0.0.0"/>

在我的根web.config的appSettings部分

e.g。

 <appSettings>
     <add key="webpages:Version" value="1.0.0.0"/>
     <add key="ClientValidationEnabled" value="true"/>
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>

答案 1 :(得分:2)

检查此链接:

http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx

确保您知道该项目是MVC3。 确保使用VS2010 SP1创建项目。

答案 2 :(得分:0)

我通过卸载MVC4 RC解决了这个问题。似乎与我的系统(或我测试的其他3个系统)兼容。只需要等待MVC4的发布版本

答案 3 :(得分:0)

您可以在同一台计算机上安装MVC3和MVC4,请在web.config中进行配置,如下所示

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="1.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="1.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

答案 4 :(得分:0)

来自MVC 4 release notes

必要的更新

  1. 在根Web.config文件中,添加一个包含密钥webPages:Version和值1.0.0.0的新条目。

  2. 在“解决方案资源管理器”中,右键单击项目名称,然后选择“卸载项目”。然后再次右键单击该名称并选择Edit ProjectName.csproj。

  3. 找到以下程序集引用: &LT;参考Include =“System.Web.WebPages”/&gt; &LT;参考Include =“System.Web.Helpers”/&gt;

  4. 用以下内容替换它们:

    <Reference Include="System.Web.WebPages, Version=1.0.0.0,
    Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
    <Reference Include="System.Web.Helpers, Version=1.0.0.0,
    Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
    

    4.列表项

    保存更改,关闭您正在编辑的项目(.csproj)文件,然后右键单击该项目并选择“重新加载”。