Nachdem ich heute einige Änderungen an einer von mir ausgeführten C # MVC-Site bereitgestellt habe, habe ich einige weitere Änderungen vorgenommen und bin auf diesen Fehler gestoßen:
Fehlender Compiler erforderlich Mitglied System.Runtime.CompilerServices.ExtensionAttribute..ctor
Der Fehler ist etwas vage (abgesehen von der Beschreibung natürlich), da ich keine Datei, Zeile oder Spalte als Referenz habe, sondern nur das Projekt. Außerdem wird der Fehler insgesamt 20 Mal ausgelöst. Ich habe zwischen der Bereitstellung (zu diesem Zeitpunkt war er vollständig funktionsfähig) und jetzt nur drei Änderungen am Code vorgenommen. Ich habe meine Änderungen rückgängig gemacht und es wird immer noch derselbe Fehler ausgegeben, der für mich keinen Sinn ergibt.
Ich habe nicht viele Informationen zu diesem Fehler in SO oder Google gefunden, außer dieser Lösung und ein paar Verweisen auf einige Mono-Projektfehler (ich verwende Mono nicht). Die Lösung, die der oben genannte Typ gibt, erfordert das Hinzufügen einer Klassendefinition, mit der der Compiler die Referenz auflösen kann. Ich möchte dies nicht besonders tun, da ich es bis zu diesem Zeitpunkt nicht tun musste und es meinen Code nur trüben wird.
Nur neugierig, ob jemand schon einmal darauf gestoßen ist. Danke im Voraus!
quelle
Antworten:
Dieser Fehler bedeutet normalerweise, dass entweder Ihr Projekt gegen .NET 2.0 kompiliert wird oder Sie nicht auf die richtige Version von System.Core.dll verweisen
Eine nahezu doppelte Frage finden Sie unter Fehler bei der Verwendung von Erweiterungsmethoden in C #
quelle
In meinem Fall lag es daran, dass das Projekt nicht referenzierte
Microsoft.CSharp
. Nachdem ich einen Verweis auf diese Assembly hinzugefügt hatte, wurde sie problemlos kompiliert.quelle
Ich weiß nicht, ob dies jemand anderes erlebt hat, aber ich gerate plötzlich in diesen Fehler, nachdem ich Code unter Verwendung von
dynamic
Typen hinzugefügt und WebAPI in ein Projekt integriert habe, das als TypeScript-Anwendung in VS2013 entstanden ist. Durch einfaches Hinzufügen eines Verweises auf Microsoft.CSharp wurde mein Problem behoben.Hoffe das hilft jemand anderem.
quelle
Ich bin heute auch in diese Situation geraten. In meinem Fall habe ich in meiner .NET 4.0-Anwendung auf die Newton.Json.Net-DLL v3.5 verwiesen. Mir wurde klar, dass ich diese Bibliothek nicht einmal benutzte. Nachdem ich sie aus meinen Referenzen entfernt hatte, gab es mir keinen Compilerfehler mehr.
Problem gelöst!!!
quelle
Der eigentliche Fehler beruht auf der Tatsache, dass Ihre 2.0-Assembly, die den Fehler verursacht, diesen Code enthält:
Mit dem obigen Code kann die .NET 2.0-Assembly Erweiterungsmethoden verwenden (siehe Verwenden von Erweiterungsmethoden in .NET 2.0? ). Während es den Compiler verwirrt, wenn Sie auf .NET 4.0 abzielen und auf eine 2.0-Assembly (die den obigen Code enthält) verweisen, enthält die mscorlib.dll (4.0) dieselbe Klasse im selben Namespace.
Ich habe das behoben
quelle
Das Schreiben dieses Codes irgendwo in Ihrem Projekt kann Ihr Problem lösen. Für mich geht das
quelle
NLog.dll 2.0, auf das aus einem .NET 4.0-Projekt verwiesen wird, kann dies ebenfalls verursachen.
quelle
Wahrscheinlich verwenden Sie das
dynamic
Schlüsselwort In .NetStandard Class Library Project. In diesem Fall müssen SieMicrosoft.CSharp
im Projekt einen Verweis auf die Bibliothek hinzufügen . Hoffe, es wird Ihr Problem lösen.quelle
Ich habe keine korrekte Lösung, aber ich werde meinen Datenpunkt hinzufügen:
In meinem Fall wird der Fehler durch Verweisen auf GoogleSearchAPINet20 verursacht
Folgendes passiert:
Ich verweise in meiner Lösung überhaupt nicht auf System.Core.dll und mein Zielframework ist .NET 4.
Ich bin an dieser Stelle etwas verärgert ...
quelle
Beim Versuch, asynchrone Aufgaben für .NET 4.0 zu verwenden, ist dieser Fehler aufgetreten. Das Aktualisieren von Target Framework auf 4.5.2 hat das Problem behoben.
quelle
Ich habe die gleichen Ausnahmen getroffen, nachdem ich einem Winforms-Projekt einige asynchrone Methoden hinzugefügt habe. Ich musste meine .NET-Version von 4 auf 4.5 erhöhen
quelle
Bei mir tritt das Problem auf, wenn ich in meinem .net4.0-Projekt eine asynchrone Methode mit asynchroner Task-Wartezeit hinzufüge!
Bei früheren Versionen von .NET-Framework 4.5 müssen Sie dieses Paket installieren:
oder
Weitere Infos zu Nuget oder Nuget
quelle