Asp.net-Mvc-2

命名空間“System.Web”中不存在類型或命名空間名稱“Mvc”

  • October 23, 2014

將 Hybrid ASP.NET MVC1 應用程序轉換為 MVC2 後,當我嘗試執行應用程序時出現以下錯誤:

命名空間“System.Web”中不存在類型或命名空間名稱“Mvc”(您是否缺少程序集引用?)

web.config 文件中的罪魁禍首是 System.Web.Mvc:

<namespaces>
   <add namespace="System.Web.Mvc"/>
   <add namespace="System.Web.Mvc.Ajax"/>
   <add namespace="System.Web.Mvc.Html"/>

到目前為止,我的調查似乎使我相信 System.Web.Mvc 的第 2 版沒有安裝或沒有被拾取。

我已經嘗試創建一個基於 MVC 2 的文件 > 新項目,這就是 MVC 的新 (v2) 版本。我還轉換了一些其他項目(不是混合項目),並且它們已經毫無問題地轉換為 MVC2。

我還解除安裝了 MVC1 以嘗試從 GAC 中刪除對它的引用。然而,這些都沒有奏效。

有任何想法嗎?

確保您的 Web.config 中有綁定重定向:

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

即使機器上有 MVC 1,這也會強制 MVC 2。

另外:MVC 1 確實有一個System.Web.Mvc命名空間,所以請確保你也有:

 <assemblies>
   <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

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