La mise à jour de Windows a causé L'arrêt du fonctionnement de MVC3 et MVC4

suis-je le seul à avoir installé une mise à jour de Windows (8.1) le 15 octobre, et MVC a soudainement cessé de fonctionner à cause de cet avertissement?

Avertissement 1 Impossible de résoudre cette référence. Impossible de localiser le système d'assemblage.Web.Mvc, Version=4.0.0.0, Culture=neutre, PublicKeyToken=31bf3856ad364e35, processorArchitecture = MSIL". Vérifiez que l'assemblage existe sur le disque. Si cette référence est requise par votre code, vous pourriez avoir des erreurs de compilation.

il semble que cette mise à jour de windows installe une nouvelle version de MVC avec le numéro de version 4.0.0.1, et supprime l'ancienne version du répertoire de fichiers de programmes.

Quelqu'un sait réparer ça sans ramper pour chaque projet?

124
demandé sur abatishchev 2014-10-16 02:25:03

9 réponses

la meilleure solution est de mettre à jour DLL vers la version 4.0.0.1. Essayez d'utiliser nuget:

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

cela mettra automatiquement à jour

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

vous avez juste à éditer le système de version.Web.Mvc manuellement dans:

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

105
répondu Krzysztof Kalinowski 2014-10-17 06:56:14

nous avons dû toucher manuellement chaque .csproj pour mettre à jour la version de 4.0.0.0 à 4.0.0.1 pour faire démarrer nos constructions. Assez de la douleur.

les nouvelles références doivent ressembler à:

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
25
répondu Zach La Lond 2014-10-30 06:15:15

avait le même problème après mise à jour:

mise à jour de sécurité pour Microsoft ASP.NET MVC 4.0 (KB2993928)

http://support.microsoft.com/kb/2993928

, Mais seulement pour un projet avec une référence au Système.Web.Mvc, non installé par paquet.



Mon collègue, qui N'avait pas installé Microsoft ASP.NET MVC 4.0 Runtime and didn't reçu la mise à jour, n'a eu aucun problème et avait toujours la référence à 4.0.0.0, pas à 4.0.0.1



J'ai changé manuellement la référence à 4.0.0. 1 , après l'enregistrement, mon collègue pouvait encore construire avec une référence à 4.0.0. 0 .

(Travaillant tous les deux sur Win7 Pro SP1, VS2013 Pro Update 3)

23
répondu Jaws 2014-10-16 09:19:10

s'il vous Plaît voir ce blog, il est recommandé de mettre à jour correspondante de package NuGet:

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

, Pour citer:

le problème peut être résolu par mis en œuvre l'un des suivants solutions:

  1. (De Préférence) Installer Microsoft.AspNet.Mvc de la galerie NuGet (cela installera une redirection de reliure dans votre web.config). Vous pouvez le faire cela provient du Gestionnaire de paquets NuGet ou de la console NuGet à L'intérieur de Visual Studio:

    Install-Package Microsoft.AspNet.Mvc-Version-projet Nom du projet

    MVC 4 version: 4.0.40804.0

    MVC 3 version: 3.0.50813.1

  2. mettre à jour manuellement la référence au système.Web.MVC.dll (ne pas utiliser celui du GAC).

    essayez la boîte de dialogue Ajouter une référence -> assemblages -> Extensions.

21
répondu Miguel Lacouture 2014-10-17 19:27:24

voir ceci: Microsoft Asp.Net MVC Security Update MS14-059 broke my build! MS a blogué à ce sujet car il a évidemment apporté beaucoup de confusion

8
répondu e4rthdog 2014-10-17 05:17:14

pour un projet web, vous devrez peut-être mettre à jour la configuration dans le web.config ainsi:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
  </dependentAssembly>
3
répondu THN 2014-10-16 18:45:39

OK,

pour moi, c'était deux simples étapes:

J'ai d'abord changé toutes les références au système.Web.Mvc de 4.0.0.0 à 4.0.0.1,

puis j'ai dû aller aux propriétés du système.Web.Mvc (peut-être parce que je l'avais supprimé et re-ajouté) et changer la copie locale à true.

J'espère que c'est utile pour quelqu'un.

1
répondu edencorbin 2014-10-17 07:18:04

vous devez changer toutes les références au système.Web.Mvc dans votre solution. Il suffit de les supprimer et d'ajouter la nouvelle version 4.0.0.1.

aussi dans les propriétés changer copy local à true.

et sur le web.config ajouter la liaison assambly pour pointer vers la nouvelle version de 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>
1
répondu Robert Benyi 2014-12-08 12:01:26

si vous obtenez toujours la même erreur après avoir essayé @Krzysztof solution ou l'une des autres réponses ci-dessus, un travail qui pourrait fonctionner pour vous est de désinstaller MVC Runtime 4.0

0
répondu Ricardo Sanchez 2014-12-02 15:09:46