web-dev-qa-db-ja.com

System.web.mvcが見つかりません

先週のセキュリティ更新プログラム以降、コンパイルに失敗した、古いASP.NET MVC 3 Webアプリケーションがあります。

問題はSystem.Web.Mvc.dllへの参照が破損していることです。

セキュリティ更新プログラムが実行されていないビルドマシンでソリューションファイルを開き、[参照設定] - > [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の[参照の追加]ダイアログを使用して再度追加しようとすると、表示されません。

ウェブを徘徊することで、NuGetを使ってMVCをアップデートすることを含む提案を私にもたらしました。私たちのVS2010プロジェクトではNuGetを使っていませんでしたので、この状況ではそれほど正しくないようです。私はとにかく試してみて、そして最終的に半ダースの行方不明の参照で終わりました。

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

Devマシンのプロパティを見ると、バージョン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>

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

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

76
Jeff Dege

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

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

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

古いバージョンのNuGetをお持ちの場合は、アップグレードする必要があることを示すエラーが表示されることがあります。そうであれば、Tools-> Extension Managerを開いて最新バージョンの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>
126
3spot

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はどこにありますか?

27
kirk

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

enter image description here

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

またはNugetコマンドを使用して

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
17

私は同じ状況を持っています:Visual Studio 2010、NuGetがインストールされていない、そしてSystem.Web.Mvcバージョン3を使っているASP.NETアプリケーション。

私にとってうまくいったのは、System.Web.Mvcを使用する各C#プロジェクトをソリューションエクスプローラーのReferencesに移動し、System.Web.MvcのCopy Localをtrueに、Specific Versionをfalseに設定することでした - 最後のものはバージョンフィールドにそのマシンの現在のバージョンを表示させました。

2
Dronz

vS 2017では、ソリューションをクリーンにして再構築したところ、修正されました

1
PBMe_HikeIt

Vs2017でこの問題を抱えていた、私はすでにnuget経由でMVCを持っていました、しかしSystem.Web.Mvcは「Add Reference」の下の「Assemblies」リストに現れませんでした。

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

1
t_warsop

Vs2015で開かれたサンプルmvcmusicstore.codeplex.comはいくつかの参照を逃しました、それらのうちの1つはSystem.web.mvcです。

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

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

0
Bob Lokerse

私の場合、私は自分のプロジェクトに適切な参照をすべて持っていました。私はその解決策を構築することによってnugetパッケージが自動的に復元されることを発見しました。

0
cal5barton

念のために、誰かが彼が得たポジションと同じエラーです。私の場合は、Microsoft.AspNet.Mvcをダウングレードしてから再度アップグレードすることが役に立ちました。 Glimpseをインストールしてそれを削除した後、私はこの問題を抱えていた。 System.Web.Mvcがどういうわけか間違った参照をしていた、私の場合は解決策をきれいにしたり再構築してもうまくいかなかった。上記の答えのどれもあなたのために働かない場合それを試してみてください。

0
Mehmet Can Erim