web-dev-qa-db-fra.com

Le type 'Expression <>' est défini dans un assembly non référencé.

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

62
mansoor

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.

  1. Allez dans Projet-> Gestionnaire de paquets NuGet.
  2. Rechercher MVC; ça va être le premier résultat.
  3. La prochaine étape consiste à sélectionner un déclassement à partir de la liste déroulante dans les détails du package NuGet et à le soumettre.

Confirmez tous les dialogues et vous êtes prêt à partir.

30
Prashant2008

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..

40
ctm1988

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.

  1. Assurez-vous que la version du framework .NET pour la compilationpropriété dans le fichier web.config principal (celle située à la racine du site Web) est identique à celle spécifiée dans les propriétés du projet.

[root] /Web.config:

<system.web>
    <compilation targetFramework="4.6" />

Propriétés du projet:

 Project Properties

  1. Assurez-vous que la version de l'assembly MVC spécifiée dans les vues Web.config (celle du dossier des vues) est identique à l'assembly MVC .__ que vous utilisez dans votre 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:

 MVC version

31
Tom Bowers
  • Fermez le fichier cshtml
  • Reconstruire la solution
  • Ouvrir le fichier cshtml
  • Encore des erreurs? Redémarrer Visual Studio
  • Encore des erreurs? Utilisez la réponse de ctm1988
14
CularBytes

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" />

https://stackoverflow.com/a/38371981/2335660

10
leyla azari

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.

3
Neshta

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.

3
jsanman

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é

2
Angel D

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.

2
Kevin R.

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.

1
Aggromonster

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!

1
Mehmet Taha Meral

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">
1
juFo

Essayez d'ajouter 

using system.Linq.Expressions;

0
user1223339

Supprimer le fichier [nomduprojet] .csproj.user du fichier du répertoire du projet m'a aidé.

0
Robo Burned

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.

0
Chris Pietschmann

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?

0
user910531

Le redémarrage de Visual studio a fonctionné pour moi.

0
Mangesh Kadam

C'est arrivé avec l'un de mes points de vue - tous les autres allaient bien. J'ai fait ce qui suit:

  • Créer une nouvelle vue
  • Copiez et collez le contenu de l'ancienne vue dans la nouvelle.
  • Supprimé l'ancien
  • Renommé le nouveau à l'ancien
0
Liam
  • Fermer le fichier
  • Nettoyer la solution
  • Construire la solution
  • Rouvrir le fichier
0
Jeph

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é.

Capture d'écran du dossier bin

0
KucasG

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!

0
Shah Aadil

Dans mon cas, la solution consistait à déplacer ConnectionString dans Web.Config. Cette déclaration devrait être après la section AppSettings.

0
Rogerio Picilli

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>
0
Njål Eide

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.

0
Sukesh Mullassery

J'ai eu ce problème aussi . Changer targetFramework="4.5.2" en targetFramwork="4.5"in web.config l'a résolu.

0
maryam b