Windowsの更新によりMVC3およびMVC4が機能しなくなった


126

10月15日にWindows Update(8.1)をインストールしたのは私だけですか?この警告のためにMVCが突然停止しますか?

警告1この参照を解決できませんでした。アセンブリ "System.Web.Mvc、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35、processorArchitecture = MSIL"が見つかりませんでした。アセンブリがディスク上に存在することを確認してください。コードでこの参照が必要な場合、コンパイルエラーが発生する可能性があります。

このWindows Updateは、バージョン番号4.0.0.1の新しいバージョンのMVCをインストールし、プログラムファイルフォルダーから古いバージョンを削除するようです。

誰かが各プロジェクトをクロールせずにこれを修正する方法を知っていますか?


参照元はどこですか?GAC?参照アセンブリまたはnuget?
blowdart 2014年

1
この件に関するマイクロソフトのブログを読んでください。(これにリンクしてくれたe4rthdogに感謝します。より多くの可視性を得るためにコメントするだけです)
Hanna



1
本番環境でもweb.configを編集する必要があることに注意してください。
ケンパチ船長、2014年

回答:


107

最善の解決策は、DLLをバージョン4.0.0.1に更新することです。nugetを使ってみてください:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

これは自動的に更新されます

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

次の場所でバージョンSystem.Web.Mvcを手動で編集する必要があります。

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />


1
はい、GAC参照をNuGet参照に置き換えます。私たちのために働いた。
abatishchev 2014年

7
この件に関するマイクロソフトのブログを読んでください。(これにリンクしてくれたe4rthdogに感謝します。コメントを追加して、より多くの可視性を得るために)
Hanna

10
上記を実行した後、「ASPNETCOMPILER:警告CS1702:アセンブリ参照 'System.Web.Mvc、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'が ' System.Web.Mvc、Version = 4.0.0.1、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 '、ランタイムポリシーの指定が必要になる場合があります "
Farinha 2014年

1
@Farinha、私は同じ警告があります。逃げられない。これらの警告は、ビルドのパフォーマンスを低下させます。これを修正する方法を見つけましたか?
StefanHa 2014年

3
いいえ、@ StefanHaはまだ修正を見つけていません。アプリケーション全体でViewsフォルダー内のWeb.configファイルに4.0.0.0への参照がたくさんあることに気づきましたが、手動でこれらをすべて変更した後でも、警告は残ります。
Farinha 2014年

26

ビルドを実行するには、バージョンを4.0.0.0から4.0.0.1に更新するために、各.csprojを手動で操作する必要がありました。かなり痛い。

新しい参照は次のようになります。

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

3
MVC 3.0にも同じ変更が必要であることに注意してください。再び機能させるには、参照を「3.0.0.1」にする必要があります。
アンディ

私の場合、これは必須であり、「特定のバージョン」が「真」であることを示す必要もありました
pimbrouwers

24

アップデート後に同じ問題が発生しました:

Microsoft ASP.NET MVC 4.0のセキュリティ更新(KB2993928)
http://support.microsoft.com/kb/2993928

ただし、System.Web.Mvcへの参照を持つプロジェクトの場合のみで、パッケージではインストールされません。

Microsoft ASP.NET MVC 4.0ランタイムをインストールしておらず、更新プログラムを受け取っていない私の同僚は問題なく、4.0.0.1ではなく4.0.0.0への参照をまだ持っていました。

手動で4.0.0に変更しました。1、チェックイン後も、私の同僚は4.0.0への参照を使用してビルドできました。0
(Win7 Pro SP1、VS2013 Pro Update 3の両方で機能)


22

このブログを参照してください。推奨される方法は、対応するNuGetパッケージを更新することです。

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

引用するには:

この問題は、次の解決策のいずれかを実装することで解決できます。

  1. (推奨)NuGetギャラリーからMicrosoft.AspNet.Mvcをインストールします(これにより、web.configにバインディングリダイレクトがインストールされます)。これは、Visual Studio内のNuGetパッケージマネージャーまたはNuGetコンソールから実行できます。

    インストールパッケージMicrosoft.AspNet.Mvc -Version -Project PROJECTNAME

    MVC 4バージョン:4.0.40804.0

    MVC 3バージョン:3.0.50813.1

  2. System.Web.MVC.dllへの参照を手動で更新します(GACの参照を使用しないでください)。

    [参照の追加]-> [アセンブリ]-> [拡張機能]ダイアログボックスを試します。



4

Webプロジェクトの場合は、web.configの構成も更新する必要がある場合があります。

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
  </dependentAssembly>

2

ソリューション内のSystem.Web.Mvcへのすべての参照を変更する必要があります。それらを削除し、新しい4.0.0.1バージョンを追加するだけです。

また、プロパティcopy localがtrueに変更されます。

そして、web.configにassamblyバインディングを追加して、新しいバージョンのmvcを指すようにします。

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

設定CopyLocal=trueは私たちを助けませんでした。参照:MS14-059以降System.Web.MVCbinフォルダにコピーされない
Danny Tuppeny 2014年

1

はい、

私にとっては、2つの簡単な手順でした。

まず、System.Web.Mvcへのすべての参照を4.0.0.0から4.0.0.1に変更しました。

次に、System.Web.Mvcのプロパティに移動し(おそらく削除して再追加したため)、ローカルのコピーをtrueに変更しました。

これが誰かのために役立つことを願っています。


0

@Krzysztofソリューションまたは上記の他の回答を試しても同じエラーが発生する場合は、MVCランタイム4.0アンインストール することで回避できる可能性があります。

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