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?