web-dev-qa-db-ja.com

Windows Update後にSystem.Web.Mvcが期待どおりに機能しない

昨日のWindows Updateの後、プロジェクトの構築に問題があるようです。

Related Windows Updates could be:
ASP.NET MVC 2.0: KB2993939
ASP.NET MVC 3.0: KB2993937
ASP.NET MVC 4.0: KB2993928
ASP.NET MVC 5.0: KB2992080
ASP.NET MVC 5.1: KB2994397

System.Web.Mvc-related errors

これらのエラーはすべて、System.Web.Mvcチェックしたネームスペース。 Referencesの下のプロジェクトにまだ関連付けられています。 Windows Update中にMVCプロジェクトで何が問題になった可能性があり、それを修正するにはどうすればよいですか?

以下は、今日管理されている更新を示すログです。

16/10/2014's Windows Update

53
matt

最近の更新でバージョン番号が増加しました

3.0.0.0-> 3.0.0.1および4.0.0.0-> 4.0.0.1

参照を削除して再追加する必要がありました(System.Web.Mvcはアセンブリにあります>拡張機能は[参照の追加]ダイアログにあります)

34
mth

今日、Windowsの更新後も同じ問題が発生します。私の解決策があります。

Install-Package Microsoft.AspNet.Mvc -Version 5.2.0.0 -Project PROJECTNAME

また、これらのコードを使用してみることもできます。

Uninstall-Package Microsoft.AspNet.Mvc -Force

幸運を。

10

これを修正するには2つの方法があります。

オプション1:NuGetを使用してMicrosoft.AspNet.Mvcを追加

NuGetを使用して、依存しているMVCバージョンの最新リビジョンをプロジェクトに追加します。 Microsftはこのアプローチを推奨しています。

オプション2:アセンブリ参照を更新する

プロジェクトに新しいアセンブリ参照を追加すると、System.Web.Mvcアセンブリのバージョンがx.0.0.1になっていることがわかります。


ソース: http://blogs.msdn.com/b/webdev/archive/2014/10/16/Microsoft-asp-net-mvc-security-update-broke-my-build.aspx

MVCの再インストールを率直に試みることをお勧めします。最終的にはうまくいきましたが、MVCインストーラーにバンドルされているNuGetで問題が発生します。

NuGetがまだ存在しているとMVCインストーラーがインストールを拒否または失敗するため、MVCを再インストールする前にNuGetをアンインストールする必要があります。

さらに、MVCを再インストールしても、MVCを再インストールした後にWindows Updateが更新プログラムを再度適用できなくなる理由はわかりません。

5
Christ A

パッチが増加すると、バージョン番号が上がります(MVC4の場合は4.0.0.0から4.0.0.1に上がりました)。プロジェクトファイルの参照パスを以下から変更する必要があります。

<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

必要に応じて明らかにヒントパスを調整し、MVCの他のバージョンに対して同様の変更を行います。

1
JonAlb

この問題は私にとって存在していました。ただし、修正は、nugetを使用してweb.configを修正または更新するよりもはるかに簡単でした。 {ProjectName} .csprojのテキストを手動で更新することで問題が解決しました

参照Include = "System.Web.Mvc、Version = .0.0.1、Culture = neutral、PublicKeyToken = 31bf3856ad364e35、processorArchitecture = MSIL"

Include = "System.Web.Mvc、Version = .0.0.、Culture = neutral、PublicKeyToken = 31bf3856ad364e35、processorArchitecture = MSIL"を参照し、変更をチェックインし、ビルドエージェントでビルドを実行します私にとってはTeamCityでした。

これによりローカルでビルドエラーが発生しましたが、ソース管理/チームシティのビルドエラーは解決しました。

これにより、csprojファイルを変更せずにローカルでビルドすることはできません。ただし、上記のように変更をチェックインした後(3.0.0.1から3.0.0.0に変更)、プロジェクトをローカルで更新して新しいバージョン(3.0.0.1)を使用し、csprojの変更をチェックインしないでください。 。誰かが同様のシナリオを持っているかもしれないと思います。

0
joey

最近同じ問題がありました。

Windows Update後-Visual Studioのプロジェクトに突然500以上のエラーが発生しました-すべてsystem.web.mvcに関連しています

そのため、参照を削除して再追加しました-C:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET MVC 3\Assembliesにあります

すばらしい-プロジェクトがコンパイルされます。

サイトに配置-「要求されたタイプの1つ以上をロードできません。詳細についてはLoaderExceptionsプロパティを取得してください」を取得

いじくり回した後、私はサイトに行き、そこからそのバージョンをダウンロードしました-それを参照しました-それは私のラップトップとサイトで動作しました

ふう!!!!!!!

0
user2967049

here から入手可能なMSIパッケージの最新バージョンを使用して、ASP.NET MVCをインストール/修復してみてください。

web.configbindingRedirectを使用する場合、セクションの更新も必要になる可能性があります(私のプロジェクトでは必要ありませんでした)。 答え を参照してください。プロジェクト内のotherweb.configファイル(~/Views/web.configなど)を調べることをお勧めしますが、それでもまだ役に立ちません。

0
Oleg

mh28 のソリューションを試しましたが、次の提案がありました。

最近の更新でバージョン番号が増加しました

3.0.0.0-> 3.0.0.1および4.0.0.0-> 4.0.0.1

参照を削除して再追加する必要がありました(System.Web.Mvcはアセンブリにあります>拡張機能は[参照の追加]ダイアログにあります)

さらに、関心のある範囲全体でFind and Replaceを実行することも提案されました。私はそれを試しましたが、失敗しました。 Find and Replaceは.csprojファイルには適用されないようです。

次に行ったのは、テキスト置換ツールを見つけて( Ecobyte Replace Text を参照)、次の設定を使用してプログラムを実行することでした。

Ecobyte Replace Text settings

私のすべてのプロジェクトはその後正常にビルドされ、副作用は見られません(web.configファイルに変更を加えていないにもかかわらず)。これが最善の解決策であるかどうかはわかりません(そして考えていません)。これは、セキュリティ関連のWindows Update for .NETの影響を受けるSystem.Web.Mvcのすべての問題に対する特効薬ではないと思います。しかし、再参照するプロジェクトが非常に多い特定の場合に役立つと思います。

0
matt

MVCアセンブリを再インストールする

ダウンロードリンク: http://www.Microsoft.com/en-US/download/details.aspx?id=3068

0
TeYoU

同じ問題があります。
Microsoftはバージョンを3.0.0.0から3.0.0.1に変更しました
通常の設定は「特定のバージョンを使用する-true」であるため、これがVisual Studioが参照を見つけることができない理由だと思います。
私の場合、同じマシンでMvc4を使用しており、自動的にバージョン4 dllを使用するため、設定をfalseに変更できません。

解決策は、System.Web.Mvc.dllのプロジェクト参照を削除して、再度追加することです。次に、VSはリファレンスとしてVersion-3.0.0.1-DLLを使用します。

0
professor.nat