Dans ASP.NET MVC 4.5.2 Framework.
après avoir tapé
@Html.LabelFor()
or
@Html.EditorFor()
en vue
Je reçois une erreur: Le type 'Expression <>' est défini dans un assembly qui n'est pas référencé. Vous devez ajouter une référence à Assembly 'System.Core, version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089. '.
J'ai ajouté la référence d'assembly System.Core.dll, version 4.0.0.0, version d'exécution v4.0.30319. et aussi je l'ai fait dans web.config
J'ai couru le même problème que vous, bien que beaucoup plus tard. Le problème était que je ne pouvais pas accéder aux vues Razor (.cshtml) car un message d'erreur m'indiquait qu'il me manquait une référence d'assembly, à savoir System.Web.Mvc
, alors qu'il se trouvait dans les références de projet. Après enquête, j'ai constaté que la version de NuGet installée était la 5.2.3, alors que le projet nécessitait la version 5.2.0. La solution consiste à rétrograder la version de MVC.
Confirmez tous les dialogues et vous êtes prêt à partir.
Je ne suis pas sûr si vous avez toujours ce problème ou pas, mais j'avais le même problème aussi.
J'ai pu trouver les solutions ici
https://stackoverflow.com/questions/6496223/compilation-error-in-net-4-0-web-config-linq-not-found
<add Assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add Assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add Assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
J'espère que ça aide..
Cette erreur signifie que Visual Studio n'est pas en mesure de localiser l'assembly System.Web.Mvc pour activer ses vues intellisense for Razor. Un ou les deux des éléments suivants peuvent être nécessaires pour résoudre ce problème.
[root] /Web.config:
<system.web>
<compilation targetFramework="4.6" />
Propriétés du projet:
[dossier de vues] /web.config:
<system.web.webPages.razor>
<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Propriétés de référence d'assemblage MVC:
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 les éléments suivants:
<Reference Include="System.Core" />
Dans mon cas, ce message n'était affiché que lorsque Resharper était activé. J'ai effacé le cache Resharper, redémarré le VS, désactivé Resharper et réactivé. Le message a disparu.
Je viens d'avoir exactement le même problème et aucune des solutions ne résout le problème. Je devais ajouter ceci dans mon web.config
dans System.Web
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
Je l'avais enlevé en changeant une partie de la config
autour.
J'ai eu le même problème avec Assembly manquant et il est arrivé que la construction de VS2017 ne l'ait pas copiée correctement dans le dossier Bin. Ces étapes m'ont aidé:
- Accédez au nœud Références du projet Web
- Trouver la référence à System.Core
- Ouvrez la fenêtre de propriétés du VS
- Dans la fenêtre des propriétés, définissez Copy Local: False sur True
à partir de ce commentaire: CS0012: Le type '##### N'importe quel type #####' est défini dans un assembly non référencé
Vérifiez que l'action de génération du fichier cshtml est définie sur 'Contenu'.
J'utilise ReSharper et j'ai remarqué que, pour une raison quelconque, le fichier généré par défaut était 'Aucun' lors de l'appel du modèle.
Pour moi, il y avait une option dans le menu du projet pour "Activer C # 6.0/VB 14". La sélection de cette option a fait l'affaire. Auparavant, j'ai essayé de modifier le fichier web.config, de redémarrer Visual Studio, etc. comme suggéré dans ce message.
J'ai rencontré le même problème. Fondamentalement, le problème consiste à utiliser une version différente de System.Web.Mvc
. Donc, la meilleure chose que vous devriez ouvrir Tools > Nuget Package Manager > Manage Nuget Packages for Solution
. Vous pouvez probablement voir System.Web.Mvc
sur l'onglet Cosolidate
. La mise à niveau ou le déclassement serait la meilleure option. Si vous utilisez le dernier framework .Net, qui est actuellement .Net 4.6.1
, vous devez mettre à niveau toutes les versions System.Web.Mvc
vers 5.2.4.0
. Bonne chance!
Dans Web.config je devais changer:
<system.web>
<compilation debug="true" targetFramework="4.7">
à
<system.web>
<httpRuntime targetFramework="4.7" />
<compilation debug="true" targetFramework="4.7">
Essayez d'ajouter
using system.Linq.Expressions;
Supprimer le fichier [nomduprojet] .csproj.user du fichier du répertoire du projet m'a aidé.
Cela peut être dû au fait que votre solution contient plusieurs projets qui ne ciblent pas tous la même version du .NET Framework. Par exemple, si votre projet d'application Web cible .NET 4.5 et que vous avez une référence Assembly à un autre projet de la solution qui cible .NET 4.5.2. Pour résoudre ce problème, vous devez modifier vos projets pour qu'ils ciblent tous la même version du .NET Framework.
Si vous obtenez cela dans un ou deux fichiers CSHTML ... c'est un fichier corrompu.
Cela est arrivé avec un fichier corrompu qui contient des caractères unicode cachés . Essayez de copier tout le texte du document dans une nouvelle instance du bloc-notes . Effacez le contenu du fichier d'origine et enregistrez ... si la longueur du fichier est> 0, il y a quelque chose qui ne va pas.
Supprimez le fichier et enregistrez votre instance de bloc-notes sur l'ancienne version . Toutes les erreurs ont disparu pour moi.
Cela s'est produit plusieurs fois dans ma solution. Je ne sais pas ce qui le cause, mais je soupçonne que c'est Resharper que tout se gâche quand il commence à engloutir d'énormes morceaux de mémoire dans l'abîme.
Suis-je le seul à avoir une relation d'amour/haine avec Resharper?
Le redémarrage de Visual studio a fonctionné pour moi.
C'est arrivé avec l'un de mes points de vue - tous les autres allaient bien. J'ai fait ce qui suit:
Si absolument aucune de ces réponses n'a fonctionné pour vous (j'ai essayé toutes ces réponses ainsi que plusieurs autres messages, je veux dire probablement tous ceux de StackOverflow), ceci peut être utile.
Remarque: L'ajout de System.Core Assembly à web.config n'a pas eu d'effet, ni la mise à niveau de la version de MVC. Essayer d'ajouter System.Core manuellement en faisant un clic droit sur les références a donné une exception:
Une référence à 'System.Core' n'a pas pu être ajoutée. Ce composant est déjà automatiquement référencé par le système de compilation.
Assurez-vous de vérifier que TargetFramework dans les propriétés du projet correspond à celui de project web.config.
Presque tous mes fichiers .cshtml pour un projet de grande entreprise renvoyaient des erreurs sur les assistants @Html et sur mes grilles de Kendo. J'ai vérifié le code à fond et il n'y avait pas d'erreur. Voici ce qui a finalement résolu pour moi:
Après le nettoyage du sln, la suppression de bin, obj, la reconstruction, le redémarrage de VS, etc., j'ai sorti mon dossier bin dans mon dossier de répertoire système. J'ai ajouté manuellement le fichier System.Core.dll à la corbeille. Redémarrez et construisez le projet et cela a fonctionné.
Si aucune des réponses ne fonctionne, utilisez celle-ci. J'ai fait face au même problème! En réalité, le fichier configuration.cs du dossier de migration était manquant/supprimé. J'ai supprimé le dossier des migrations et également supprimé le tableau des migrations de la base de données. Suivant dans Package Manager Console (PM), les commandes suivantes ont été utilisées:
Enable-Migrations -Force
Add-Migration Initial
update-database
Ce processus a recréé le fichier configuration.cs et tout a fonctionné parfaitement!
Dans mon cas, la solution consistait à déplacer ConnectionString dans Web.Config. Cette déclaration devrait être après la section AppSettings.
Ajoutez ce qui suit à Web.config (en racine). J'ai essayé absolument tout des suggestions précédentes et rien n'a fonctionné jusqu'à ce que j'ai trouvé le ci-dessous. J'espère que cela fera gagner du temps à quelqu'un d'autre.
J'utilise targetFramework = "4.6.1", mais changez-le pour la version que vous utilisez si différente.
<system.web>
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" />
</system.web>
Vérifiez les propriétés de votre projet pour obtenir le framework Target. J'ai résolu ce problème dans mon projet en faisant correspondre mon cadre cible .NET Framework 4.6.1 MVC 5.2.3 était la solution apt. J'ai eu cette version MVC de NuGet.
J'ai eu ce problème aussi . Changer targetFramework="4.5.2"
en targetFramwork="4.5"
in web.config l'a résolu.