タイプまたは名前空間名「MVC」は、名前空間 'system.web'に存在しません
-
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
エレメント。