Je viens de passer à VS 2015. J'ai une ancienne application MVC 5 qui fonctionne contre 4.52. Dans VS 2013, c'est très bien.
Dans VS 2015, je reçois des gribouillis rouges sous ma @Html.TextBoxFor()
avec une erreur indiquant:
Le type 'Expression <>' est défini dans un assembly qui n'est pas référencé. Vous devez ajouter une référence à l'assembly 'System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'.
Le projet se construit et s'exécute très bien - mais je suis préoccupé par l'erreur IntelliSense qui ne s'est jamais produite dans VS 2013. D'accord, j'essaie donc d'ajouter la référence à System.Core comme recommandé dans l'erreur ci-dessus, puis j'obtiens cette erreur:
Une référence à "System.Core" n'a pas pu être ajoutée. Ce composant est déjà référencé automatiquement par le système de build.
Encore une fois, c'est très bien dans VS 2013.
J'ai eu le même problème, mais en attendant, j'ai trouvé la réponse:
J'ai dû ajouter les références suivantes à mon web.config (ajouter à l'intérieur de la balise system.web d'ouverture):
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add Assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add Assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add Assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add Assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add Assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add Assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add Assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add Assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
J'ai également changé le cadre cible de 4.5.1 à 4.5.
p.s Fermez et rouvrez Visual Studio après l'avoir modifié.
J'ai essayé la plupart d'entre eux, ce qui a finalement fonctionné pour moi a été de décharger le projet, d'éditer le fichier csproj et d'ajouter ce qui suit:
<Reference Include="System.Core" />
Seule la suppression de la solution et l'obtention de la solution du contrôle de source ont résolu cela pour moi, en supprimant le dossier .vs et en démarrant VS2015 en tant que "devenv.exe/resetuserdata" n'a pas résolu mon problème, la suppression du cache des composants MEF n'a pas résolu selon Razor intellisense ne fonctionne pas dans VS 2015 réponses.
De la mise à jour de 4.5.2 à 4.6.1, j'ai eu ces erreurs exactes dans mes vues. La construction et l'exécution de la solution ont parfaitement fonctionné. Après avoir essayé toutes les solutions déjà publiées ici (et également vérifié l'intellisense pour le travail, la suppression des caches, la suppression des dossiers bin et obj, le chargement et le rechargement du projet), rien n'a fonctionné (system.core était déjà en cours de construction correctement et ajoutait ces références à le Web.config n'a rien fait). J'ai fait mes propres recherches et j'ai finalement découvert que dans le projet où l'erreur se produisait, le fichier Web.config contenait deux cadres cibles de débogage de compilation et un autre cadre cible httpRuntime. Ainsi:
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.6.1" />
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.1" />
...
La solution était de résoudre ce problème en supprimant le cadre cible de débogage de compilation supplémentaire et de garantir que tous les cadres cibles étaient ceux que je voulais (4.6.1)
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" />
...
Vérifiez à nouveau si rien d'autre ne fonctionne. J'espère que cela aide quelqu'un!
Si quelqu'un est confronté à ce problème avec
VS 2017, .net framework version 4.8 et MVC version 5.2.7
Then check your Microsoft.CodeDom.Providers.DotNetCompilerPlatform version, If you have 2.0.1 version installed then downgrade it to 2.0.0
Vérifiez ensuite la version MVC, vous devez la rétrograder en 5.2.4
Then downgrade Microsoft.AspNet.WebPages 3.2.7 to Microsoft.AspNet.WebPages 3.2.4
and Microsoft.AspNet.Razor 3.2.7 to Microsoft.AspNet.Razor 3.2.4
essayez d'exécuter l'application maintenant, cela fonctionnera.
Dans mon cas, cela a fonctionné après avoir changé la balise <ProjectGuid>
dans .csproj
fichier vers <ProjectGuid>{6C651A5E-8DDA-4680-804E-F9596743CBE8}</ProjectGuid>
et rouvrir la solution. Toutes les solutions affichées ci-dessus n'ont pas fonctionné pour moi.
J'ai essayé ces solutions et d'autres sur d'autres threads Stack Overflow. Aucun n'a fonctionné.
Ce qui a fonctionné était de réparer l'installation de Visual Studio qui se trouve dans le sous-menu Paramètres système, Applications et fonctionnalités (cliquez sur VS et choisissez "Réparer"). Cela a pris quelques heures, mais le problème a disparu.