System.web.mvc manquant

89

Nous avons une ancienne application Web ASP.NET MVC 3, construite dans VS2010, qui ne parvient pas à se compiler, depuis la mise à jour de sécurité de la semaine dernière.

Le problème est que la référence à System.Web.Mvc.dll est rompue.

Lorsque j'ouvre le fichier de solution sur notre machine de construction, où la mise à jour de sécurité n'a pas été exécutée, et que j'ouvre la boîte de dialogue des propriétés pour References-> System.Web.MVC, ça a l'air très bien.

Le chemin est C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll La version est 3.0.0.0

Mais lorsque j'ouvre le fichier de solution sur une machine de développement sur laquelle la mise à jour de sécurité a été exécutée, References-> System.Web.MVC est signalé comme manquant. Si je le supprime et que j'essaie de le rajouter à l'aide de la boîte de dialogue Ajouter une référence de VS2010, il ne s'affiche pas.

Me balader sur le Web m'a conduit à des suggestions concernant la mise à jour de MVC à l'aide de NuGet. Nous n'avons pas utilisé NuGet, dans nos projets VS2010, donc cela ne semble pas tout à fait correct, pour cette situation. Je l'ai essayé quand même, et je me suis retrouvé avec une demi-douzaine de références manquantes.

Lorsque je regarde les propriétés de "C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" dans l'Explorateur Windows, sur la machine de construction, je vois la version 3.0.0.0.

Quand je regarde les propriétés sur la machine de développement, je vois la version 3.0.50813.1.

Ce dont j'ai besoin, c'est d'un moyen de changer la façon dont je construis et exécute afin que je puisse créer et exécuter indépendamment de laquelle de ces deux DLL est installée dans le framework .NET 3.0.

Des idées?

Ce que j'ai essayé n'a pas fonctionné

Première tentative - si l'assemblage est manquant, ajoutez-le. J'ai supprimé l'ancienne référence manquante. Ensuite, j'ai copié la DLL du dossier "ASP.NET MVC3 \ Assemblies", dans un dossier de mon projet. Définissez-le comme "Copier toujours" et ajoutez-le comme référence.

Avec cela, le projet se compilerait dans VS2010, mais lorsque j'essayais de précompiler les pages avec aspnet_compiler, j'avais des avertissements:

(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

Jusqu'à présent, j'ai réussi à éviter de comprendre les politiques d'exécution, mais j'ai essayé d'ajouter ceci, dans le 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>

Je l'ai réessayé et j'ai reçu les mêmes avertissements.

Ma question est la suivante: ai-je toujours un problème? Ou vais-je le résoudre, malgré les avertissements?

Jeff Dege
la source
Avez-vous essayé de mettre à jour tous les packages nuget vers leur dernière version (si possible bien sûr)?
Silvermind
1
Je me demande si vous rencontrez le bogue de mise à jour MS14-059 ...
Steven V
1
L'application Web ne contient aucun package nuget. Et oui, c'est le bogue MS14-059.
Jeff Dege
J'ai ce qui ressemble au même problème, bien que j'utilise le package nuget et la version 4 à la place. Il se compile bien et tout fonctionne, mais il y a plus de 20 avertissements de compilation dont je voudrais me débarrasser.
Farinha

Réponses:

141

Obtenez la dernière version de MVC3 via NuGet. Ouvrez votre projet dans Dev Studio. Ouvrez l'onglet Console du gestionnaire de packages en bas de Dev Studio. Ensuite, utilisez cette commande:

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

Si vous cliquez sur la touche de tabulation après "-Version", vous obtiendrez une liste de toutes les versions disponibles.

Si vous avez une ancienne version de NuGet, vous pouvez obtenir une erreur indiquant que vous devez la mettre à niveau. Si tel est le cas, ouvrez Outils-> Extension Manager pour installer la dernière version de NuGet. Notez que vous devrez exécuter Dev Studio en tant qu'administrateur avant de pouvoir installer NuGet.

L'installation de MVC3 doit mettre à jour Web.config dans votre projet.

<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>
3 points
la source
1
Bada bing!!!! passé des heures là-dessus ... assez simple pour installer la version dans Nuget pm .... merci beaucoup !!!
Squ1rr3lz
Oui, Nuget fonctionne avec Visual Studio 2010. Il vous suffit de l'installer via Extension Manager. Sous le menu Outils.
3spot
2
Install-Package Microsoft.AspNet.Mvc résoudrait le problème. Nous n'avons pas vraiment besoin de mentionner le numéro de version
sujay kodamala
2
@sujaykodamala La définition du numéro de version est importante si vous souhaitez installer le dernier MVC3 et non MVC5 (dernière version du package).
3spot
Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstallest un plus explicite, installe la version que vous avez pour ce projet et l'empêche de toucher d'autres projets (si vous le souhaitez).
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

Où puis-je trouver la dll System.Web.MVC dans un système sur lequel MVC 3 est installé?

église
la source
Merci, cela m'a aidé à ouvrir le projet ciblé pour VS2010 en 2018 :)
Aamol
23

Le moyen le plus simple de résoudre ce problème consiste à installer ASP.NET MVC 3 à partir du programme d'installation de Web Platforms.

entrez la description de l'image ici

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

Ou en utilisant la commande Nuget

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1
Md. Alim Ul Karim
la source
1
Cela a résolu mon problème qui est survenu après que je suis passé à un nouveau PC et que j'ai eu un projet avec des références aux dll ASP.NET MVC 4 que je n'avais pas encore installé sur la nouvelle machine.
clovola
3

dans VS 2017, j'ai nettoyé la solution et l'ai reconstruite et cela l'a corrigée

PBMe_HikeIt
la source
2

J'ai la même situation: Visual Studio 2010, aucun NuGet installé et une application ASP.NET utilisant System.Web.Mvc version 3.

Ce qui a fonctionné pour moi, était de définir chaque projet C # qui utilise System.Web.Mvc, d'accéder aux références dans l'Explorateur de solutions et de définir les propriétés sur System.Web.Mvc, avec Copy Local sur true et Specific Version sur false - le dernier a amené le champ Version à afficher la version actuelle sur cette machine.

Dronz
la source
1

Eu ce problème dans vs2017, j'ai déjà eu MVC via nuget mais System.Web.Mvc n'apparaissait pas dans la liste "Assemblies" sous "Ajouter une référence".

La solution consistait à sélectionner «Extensions» sous «Assemblies» dans la boîte de dialogue «Ajouter une référence».

t_warsop
la source
0

Dans mon cas, j'avais toutes les références appropriées dans mon projet. J'ai trouvé qu'en créant la solution, les paquets nuget étaient automatiquement restaurés.

cal5barton
la source
0

L'exemple mvcmusicstore.codeplex.com ouvert en vs2015 a manqué certaines références, dont l'une System.web.mvc.

Le correctif pour cela était de le supprimer des références et d'ajouter une référence: choisissez Extentions sous Assemblies, vous pouvez y trouver et ajouter System.Web.Mvc.

(Les autres assemblys que j'ai ajoutés avec les packages nuget.)

Bob Lokerse
la source
0

Juste au cas où quelqu'un serait dans une position où il aurait la même erreur. Dans mon cas, la rétrogradation de Microsoft.AspNet.Mvc, puis sa mise à niveau à nouveau aidé. J'ai eu ce problème après avoir installé Glimpse et l'avoir supprimé. System.Web.Mvc avait des références erronées d'une manière ou d'une autre, nettoyer la solution ou la reconstruire n'a pas fonctionné dans mon cas. Essayez simplement si aucune des réponses ci-dessus ne vous convient.

Mehmet peut Erim
la source
0

Ajoutez à nouveau la référence à partir de ./packages/Microsoft.AspNet.Mvc.[version </font>/lib/net45/System.Web.Mvc.dll

Sajithd
la source