9

ハイブリッド ASP.NET MVC1 アプリを MVC2 に変換した後、アプリケーションを実行しようとすると、次のエラーが発生します。

型または名前空間名 'Mvc' が名前空間 'System.Web' に存在しません (アセンブリ参照がありませんか?)

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 からの参照を削除しようとしました。ただし、これはどれも機能していません。

何か案は?

4

3 に答える 3

9

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"/>
于 2010-04-22T15:16:54.787 に答える
2

私は似たようなものに遭遇し、解決策は Microsoft.Web.Mvc への参照を変更して、Copy Local を True に設定することでした。

于 2013-05-17T07:31:17.273 に答える