タイプまたは名前空間名「MVC」は、名前空間 'system.web'に存在しません

StackOverflow https://stackoverflow.com/questions/2692007

  •  01-10-2019
  •  | 
  •  

質問

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

何か案は?

役に立ちましたか?

解決

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にはaがあります System.Web.Mvc 名前空間なので、次のことを確認してください。

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

他のヒント

私は似たような何かに出会いました、そして解決策はMicrosoft.web.MVCへの参照を変更することでした。

同じエラーがあり、ページの詳細なコンピレーションエラーリンクをクリックすると問題が示されました System.Web.Helpers, .Http,.WebPages.

システムをバックアップした後、私は実行しました update-package -reinstall'すべてのパッケージのアンインストール/再インストールを強制しました。これにより、web.configファイルが正しく再構築され、 dependentAssembly セクションが正しく構築されました。

ソリューションを再構築した後、初めて実行されました。

注意してください、それは次の悪いものを追加しました providers web.configのセクション。

<contexts>
  <context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</contexts>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

これはビルド警告を生成するだけですが、私はそれを削除しましたが、それを削除しました contexts エレメント。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top