Aujourd'hui, après avoir déployé des modifications sur un site C # MVC que j'exécute, je suis retourné pour apporter d'autres modifications et suis tombé sur cette erreur:
Membre requis du compilateur System.Runtime.CompilerServices.ExtensionAttribute..ctor manquant
L'erreur est un peu vague (à part sa description, évidemment) car elle ne me donne pas de fichier, de ligne ou de colonne pour référencer, seulement le projet. En outre, il renvoie l'erreur un total de 20 fois. Je n'ai apporté que trois changements au code entre le moment où j'ai déployé (il était complètement fonctionnel à ce moment-là) et maintenant. J'ai annulé mes modifications et cela lance toujours la même erreur qui n'a aucun sens pour moi.
Je n'ai pas trouvé beaucoup d'informations sur cette erreur sur SO ou Google, à part cette solution de gars et quelques références à des erreurs de projet Mono (je n'utilise pas Mono). La solution que le gars ci-dessus donne nécessite l'ajout d'une définition de classe qui permettra au compilateur de résoudre la référence. Je ne veux pas particulièrement faire cela parce que je n'ai pas eu besoin de le faire jusqu'à présent et cela ne fera que brouiller mon code.
Je suis juste curieux de savoir si quelqu'un a déjà rencontré cela auparavant. Merci d'avance!
la source
Réponses:
Cette erreur signifie généralement que votre projet est en cours de compilation avec .NET 2.0 ou que vous ne référencez pas la version correcte de System.Core.dll
Pour une question presque en double, voir Erreur lors de l'utilisation de méthodes d'extension en C #
la source
Dans mon cas, c'était parce que le projet ne faisait pas référence
Microsoft.CSharp
. Une fois que j'ai ajouté une référence à cet assemblage, il s'est compilé très bien.la source
Je ne sais pas si quelqu'un d'autre a connu cela, mais je me plonge soudainement dans cette erreur après avoir ajouté du code utilisant des
dynamic
types et incorporé WebAPI dans un projet qui a été créé en tant qu'application TypeScript dans VS2013. Le simple fait d'ajouter une référence à Microsoft.CSharp a résolu mon problème.J'espère que ceci aide quelqu'un d'autre.
la source
J'ai également rencontré cette situation aujourd'hui. Dans mon cas, je faisais référence à la dll Newton.Json.Net v3.5 dans mon application .NET 4.0. J'ai réalisé que je n'utilisais même pas cette bibliothèque, donc une fois que je l'ai supprimée de mes références, cela ne m'a plus donné l'erreur du compilateur.
Problème résolu!!!
la source
L'erreur réelle vient du fait que votre assembly 2.0 qui provoque l'erreur contient ce code:
Le code ci-dessus permet à l'assembly .NET 2.0 d'utiliser des méthodes d'extension (voir Utilisation de méthodes d'extension dans .NET 2.0? ). Alors qu'il confond le compilateur si vous ciblez .NET 4.0 et référencez un Assembly 2.0 (contenant le code ci-dessus) car le mscorlib.dll (4.0) contient la même classe dans le même espace de noms.
J'ai corrigé ça
la source
L'écriture de ce code quelque part dans votre projet peut résoudre votre problème. Ça marche pour moi
la source
NLog.dll 2.0 référencé à partir d'un projet .NET 4.0 peut également provoquer ce problème.
la source
Vous utilisez probablement le
dynamic
mot clé dans le projet de bibliothèque de classes .NetStandard. Si tel est le cas, vous devez ajouter une référence à laMicrosoft.CSharp
bibliothèque dans le projet. J'espère que cela résoudra votre problème.la source
Je n'ai pas de solution correcte, mais j'ajouterai mon point de données:
Dans mon cas, l'erreur est causée par le référencement de GoogleSearchAPINet20
Voici ce qui se passe:
Je ne référence pas du tout System.Core.dll dans ma solution et mon framework cible est .NET 4.
Je suis un peu ennuyé à ce stade ...
la source
Vous avez cette erreur en essayant d'utiliser des tâches asynchrones avec .NET 4.0. La mise à jour de Target Framework vers 4.5.2 a résolu le problème.
la source
J'ai frappé le même ensemble d'exceptions après avoir ajouté des méthodes asynchrones à un projet winforms. J'avais besoin de faire passer ma version .NET de 4 à 4.5
la source
Pour moi, le problème se produit lorsque j'ajoute une méthode asynchrone avec async Task Wait dans mon projet .net4.0!
Avec les versions précédentes de .NET-Framework 4.5, vous devez installer ce package:
ou
plus d'informations sur Nuget ou Nuget
la source