System.web.mvcがありません


89

先週のセキュリティアップデート以降、コンパイルに失敗したVS2010で構築された古いASP.NET MVC 3 Webアプリケーションがあります。

問題は、System.Web.Mvc.dllへの参照が壊れていることです。

セキュリティ更新プログラムが実行されていないビルドマシンでソリューションファイルを開き、References-> System.Web.MVCのプロパティダイアログを開くと、問題はありません。

パスはC:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dllバージョンは3.0.0.0です

しかし、セキュリティ更新プログラムが実行されている開発マシンでソリューションファイルを開くと、References-> System.Web.MVCが見つからないというフラグが立てられます。それを削除し、VS2010の[参照の追加]ダイアログを使用して再度追加しようとしても、表示されません。

Webをさまよい歩き、NuGetを使用してMVCを更新することを提案しました。VS2010プロジェクトでは、NuGetを使用しなかったため、この状況では正しくないようです。とにかくそれを試してみたところ、6ダースの参照が不足していました。

Windowsエクスプローラーで「C:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll」のプロパティを見ると、ビルドマシンにバージョン3.0.0.0が表示されています。

開発マシンのプロパティを見ると、バージョン3.0.50813.1が表示されています。

必要なのは、.NET 3.0フレームワークにインストールされているこれらの2つのDLLに関係なくビルドおよび実行できるように、ビルドおよび実行の方法を変更する方法です。

アイデア?

私が試したことはうまくいきませんでした

最初の試み-アセンブリがない場合は追加します。古い欠落している参照を削除しました。次に、「ASP.NET MVC3 \ Assemblies」フォルダーから自分のプロジェクトのフォルダーにDLLをコピーしました。「常にコピー」に設定し、参照として追加しました。

これで、プロジェクトはVS2010でコンパイルされますが、aspnet_compilerを使用してページをプリコンパイルしようとすると、警告が表示されました。

(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy

これまでのところ、ランタイムポリシーの理解を回避することができましたが、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-3.0.0.0" newVersion="3.0.0.1" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

もう一度試して、同じ警告を受けました。

私の質問は-まだ問題がありますか?または警告にもかかわらず、私はそれを解決しますか?


すべてのnugetパッケージを最新バージョンに更新してみましたか(もちろん可能な場合)?
Silvermind 2014年

1
MS14-059アップデートバグが発生いるのでしょうか...
Steven V

1
Webアプリにはnugetパッケージがありません。そして、はい、それはMS14-059のバグです。
Jeff Dege 2014年

同じ問題のように見えますが、代わりにnugetパッケージとバージョン4を使用しています。それはうまくコンパイルし、それはすべて動作しますが、私が取り除きたいこれらの20以上のコンパイル警告があります。
Farinha 2014年

回答:


141

NuGetを介してMVC3の最新バージョンを入手してください。Dev Studioでプロジェクトを開きます。Dev Studioの下部にある[パッケージマネージャーコンソール]タブを開きます。次に、次のコマンドを使用します。

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

「-Version」の後にタブキーをクリックすると、使用可能なすべてのバージョンのリストが表示されます。

古いバージョンのNuGetを使用している場合は、アップグレードする必要があることを示すエラーが表示されることがあります。その場合は、[ツール]→[拡張機能マネージャー]を開いて、最新バージョンのNuGetをインストールしてください。NuGetをインストールする前に、管理者としてDev Studioを実行する必要があることに注意してください。

MVC3をインストールすると、プロジェクトのWeb.configが更新されます。

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

1
Badabing !!!! これに何時間も費やしました... Nuget pmにバージョンをインストールするのに十分シンプルです...たくさんありがとうございました!!!
Squ1rr3lz 2015

はい、NugetはVisual Studio 2010で動作します。ExtensionManager経由でインストールするだけです。[ツール]メニューの下。
スポット2015年

2
Install-Package Microsoft.AspNet.Mvcが問題を修正します。バージョン番号について言及する必要はありません
sujay kodamala '17

2
@sujaykodamala MVC5(パッケージの最新バージョン)ではなく最新のMVC3をインストールする場合は、バージョン番号の設定が重要です。
スポット

Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstallより明示的で、そのプロジェクトのバージョンをインストールし、それが他のプロジェクトに(必要に応じて)触れないようにします。
Mike E

30

MVC 5

C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET Web Stack 5 \ Packages \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll

MVC 4

C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll

MVC 3

C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll

MVC 2

C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll

MVC 3がインストールされているシステムでSystem.Web.MVC dllはどこにありますか?


このおかげで、2018年にVS2010を対象としたプロジェクトを開くことができました:)
Aamol

23

この問題を解決する最も簡単な方法は、WebプラットフォームインストーラーからASP.NET MVC 3をインストールすることです。

ここに画像の説明を入力してください

http://www.microsoft.com/web/downloads/

またはNugetコマンドを使用する

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

1
これにより、新しいPCに切り替えて、新しいマシンにまだインストールしていないASP.NET MVC 4 dllを参照するプロジェクトがあった後に発生した問題が解決しました。
クロボラ

3

VS 2017では、ソリューションをクリーンアップして再構築し、それを修正しました


2

同じ状況があります。VisualStudio 2010、NuGetがインストールされていない、System.Web.Mvcバージョン3を使用するASP.NETアプリケーションです。

私にとってうまくいったのは、System.Web.Mvcを使用する各C#プロジェクトを設定し、ソリューションエクスプローラーの[参照]に移動し、System.Web.Mvcのプロパティを設定します。最後のバージョンでは、[バージョン]フィールドにそのマシンの現在のバージョンが表示されていました。


1

vs2017でこの問題が発生したため、nugetを介してMVCを取得しましたが、System.Web.Mvcが[参照の追加]の[アセンブリ]リストに表示されませんでした。

解決策は、[参照の追加]ダイアログの[アセンブリ]で[拡張機能]を選択することでした。


0

私の場合、プロジェクトには適切な参照がすべて含まれていました。ソリューションをビルドすると、nugetパッケージが自動的に復元されることがわかりました。


0

vs2015で開いたサンプルmvcmusicstore.codeplex.comは、一部の参照を欠落しており、そのうちの1つはSystem.web.mvcです。

これに対する修正は、それを参照から削除し、参照を追加することでした。Extensionsを選択します。アセンブリの下のをと、System.Web.Mvcを見つけて追加できます。

(nugetパッケージで追加した他のアセンブリ)


0

誰かが同じエラーを起こすような場合に備えて。私の場合、Microsoft.AspNet.Mvcをダウングレードしてから再度アップグレードすると役に立ちました。Glimpseをインストールして削除した後、この問題が発生しました。System.Web.Mvcが何らかの方法で誤った参照を使用していたため、ソリューションをクリーンアップまたは再構築しても、私の場合は機能しませんでした。上記の答えのいずれもうまくいかない場合は、試してみてください。


0

./packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dllから参照を再度追加します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.