it-swarm.com.de

Klasse oder Member, die 'dynamic' verwenden, können nicht definiert werden, da der Compiler den Typ 'System.Runtime.CompilerServices.DynamicAttribute' benötigt.

Ich versuche, eine .NET MVC-Anwendung auf meinem lokalen Computer auszuführen, die ich von GitHub erhalten habe.

Wenn ich auf Ausführen in Visual Studio klicke, stimmt alles überein und ein neues Browserfenster wird mit dem Fehler angezeigt:

CS1980: Eine Klasse oder ein Member, die "dynamic" verwenden, kann nicht definiert werden, da der Compiler den Typ "System.Runtime.CompilerServices.DynamicAttribute" benötigt.

Der Compiler-Abschnitt in demselben Fenster zeigt den folgenden Fehler:

 enter image description here

Ich habe bei Google nachgesehen und das scheint der gleiche Fehler zu sein.

Dieser Typ hat selbst einen dynamischen Typ verwendet, andererseits verwende ich keinen dynamischen Typ. Dieser wird vom .NET-Compiler automatisch generiert, und ich verwende .net 4.5, das Unterstützung für Dynamik bietet.

Ich habe versucht, dieselbe Lösung anzuwenden (Ändern aller System.Core-Verweise auf 4.0) Die Sache ist jedoch, dass alle bereits Version 4.0 sind.

Hast du eine Idee, wie ich das lösen könnte?

29

Ich hatte einen ähnlichen Fehler bei einem Projekt, das ich migrieren wollte. Versuchen Sie, das Framework des Projekts für ein oder zwei Versionen neu auszurichten, und sobald Sie eine Zielversion gefunden haben, bei der der Fehler nicht angezeigt wird, kehren Sie zur ursprünglichen Version zurück, mit der Sie ursprünglich Probleme hatten.

Ich habe den gleichen Fehler in einem Website-Projekt für 4.6.2 erhalten, das auf ältere Bibliotheken verwies, es wieder auf 4.5.1 ausrichtete und den Fehler behoben hat. Ich habe sofort wieder auf 4.6.2 umgestiegen und habe den Fehler nicht mehr festgestellt.

17
Granicus

Ich habe diesen Fehler ein paar Tage nach der Aktualisierung auf VS2015.3 mit der "traditionellen" MVC-App (keine neue .NET Core/vNext-App) plötzlich erhalten.

Es stellt sich heraus, dass dieser Fehler ein vollständiger Hering sein kann.

Stelle sicher:

  • Sie haben überhaupt keine anderen Fehler
  • Sie haben im Ausgabefenster nach Fehlern gesucht, die nicht im Ausgabefenster angezeigt werden.
  • Stellen Sie sicher, dass Sie keine in Konflikt stehenden Referenzen haben

In meinem Fall hatte ich einen TypeScript-Fehler, der einen Fehler verursachte und aus irgendeinem Grund auch diesen komischen "roten Hering" -Dynamikfehler auslöste.

 enter image description here

Mein Fix bestand darin, in die Datei .csproj zu gehen und die Version der TypeScript-Tools auf 1.8 zu aktualisieren (das Projekt muss manuell entladen und bearbeitet werden). Wie gesagt, das hat nichts mit dem Fehler zu tun, aber ich erwähne die Besonderheiten, weil jemand anderes mit dem gleichen Problem enden kann.

Ich glaube, dass 1.7 'None' für das TypeScript-Modulsystem nicht akzeptiert hat, wohingegen 1.8 dies tut, daher der Fehler.

8
Simon_Weaver

Ich hatte das gleiche Problem, aber keine der Antworten löste es, richtete mich aber in die richtige Richtung. Ich glaube, ich habe die .NET-Version auf meinem Computer nicht auf die neuere aktualisiert. Nach der Installation habe ich das anvisierte Framework zurückgesetzt (wie vorgeschlagen), das neuere Framework neu ausgerichtet und ein paar zusätzliche Dinge getan: 

  1. Installieren Sie ALLE Pakete erneut, indem Sie dies im Paketmanager ausführen:

    update-package -reinstall

Ich verglich mein Projekt auch mit einem Projekt, das für 4.5 arbeitete, und tat dies:

  1. Ich habe meine Projektdatei geöffnet und alle "BCL" -bezogenen Elemente entfernt.
  2. Deinstallierte alle "BCL" -Pakete im NuGet-Paketmanager für das Projekt (es wird wahrscheinlich nicht mehr nach 4.5 + ...?
  3. Eine alte Paketversion von System.Net.Http wurde entfernt, die aus irgendeinem Grund nicht aktualisiert wurde (siehe web.config - Versionen sollten oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" anzeigen).
  4. Muss VS neu starten.
  5. Lösung neu erstellen.
  6. Fehler ist jetzt weg. ;)

Eine andere Sache, die ich zur Behebung einiger anderer Fehler unternommen habe, war das Löschen des Komponenten-Caches, indem alle Dateien hier gelöscht wurden:

C:\Users\{USERNAME}\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache\

[schimpfen] Hat einen ganzen Tag mit all dem verschwendet. Danke an MS für den Diebstahl eines weiteren Tages meines Lebens, um sinnlose Probleme zu beheben, die niemals sein sollten. Jedes Mal, wenn ich ein Upgrade durchführe, bekomme ich immer eine wunderbare Überraschung und ein schönes Spiel, um den roten Hering zu reparieren. Würde es nicht schaden, diese Konflikte bei der Aufrüstung alter Projekte zu erkennen? Vielleicht bessere Fehlerspuren, wenn etwas schief geht? Ich bezweifle, dass es so schwierig sein würde. Vielleicht sogar etwas wie AsmSpy, aber fortgeschrittener, in VS eingebaut? [/ rant]

6
James Wilkins

Das Hinzufügen eines Verweises auf System.Dynamic.Runtime hat es für mich getan.

5
Fredrik Hall

Ich hatte den gleichen Fehler, es waren nur 2 unbenutzte Tabellen meines Datenbanksatzes, die ich löschen musste. Ich wundere mich, warum es funktionierte, wenn ich etw manuell in einer automatisch generierten Code-Arbeit ändere, aber nach dem Löschen funktionierte es.

Beachten Sie, dass solche Inkonsistenzen auch diesen Fehler verursachen können.

1

Meine Lösung bestand darin, die Version von MVC in web.config im Ordner Views zu korrigieren. Z.B. Das Projekt verwies auf MVC Assembly Version 5.2.2.0, aber in der Datei Views/web.config befand sich Version 5.2.4.0 (siehe Abbildung).

Bild

0
Geafer