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?
la source
Réponses:
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:
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.
la source
Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstall
est 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).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é?
la source
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.
http://www.microsoft.com/web/downloads/
Ou en utilisant la commande Nuget
la source
dans VS 2017, j'ai nettoyé la solution et l'ai reconstruite et cela l'a corrigée
la source
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.
la source
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».
la source
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.
la source
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.)
la source
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.
la source
Ajoutez à nouveau la référence à partir de ./packages/Microsoft.AspNet.Mvc.[version </font>/lib/net45/System.Web.Mvc.dll
la source