Dynamisch im unmittelbaren Fenster führt dazu, dass 'Microsoft.CSharp.RuntimeBinder.Binder' nicht definiert oder ein Fehler importiert wurde


68

Wenn ich dynamicim unmittelbaren Fenster von Visual Studio verwende, wird eine Fehlermeldung angezeigt

Der vordefinierte Typ 'Microsoft.CSharp.RuntimeBinder.Binder' ist nicht definiert oder importiert

Wie kann ich das beheben?


Ich weiß, dass Ihre Frage vor langer Zeit gestellt wurde, aber bitte überprüfen Sie, ob meine Antwort das Problem behebt ... und anderen zu helfen, die dieses Problem haben.
Matt

Antworten:


120

Sie sollten im ausgewählten Projekt oder im Startprojekt einen Verweis auf die Microsoft.CSharp-Bibliothek hinzufügen. Und Ihr Projekt sollte auf .NET Framework 4 oder höher verweisen.

MSDN zum unmittelbaren Fensterkontext:

Beim Einrichten des Kontexts für die Auswertung des Entwurfszeitausdrucks verweist Visual Studio im Projektmappen-Explorer auf das aktuell ausgewählte Projekt. Wenn im Projektmappen-Explorer kein Projekt ausgewählt ist, versucht Visual Studio, die Funktion anhand des Startprojekts zu bewerten. Wenn die Funktion im aktuellen Kontext nicht ausgewertet werden kann, erhalten Sie eine Fehlermeldung.


1
Wie mache ich das? Ich benutze das "unmittelbare Fenster"
Colonel Panic

Sie verwenden das Sofortfenster in der Umgebung eines Projekts. Sie sollten einen Verweis auf dieses Projekt hinzufügen.
HoberMellow

Dies gilt auch für das Debuggen von Überwachungsfenstern. Ich hatte eine Lösung mit einem Startprojekt, das nicht auf Microsoft.CSharp verwies, sondern auf ein anderes Projekt, das dies tat . Überwachungsfenster würden die Ausnahme "Ordner nicht definiert oder importiert" auslösen. Beim Startprojekt wurde ein Verweis auf Microsoft.CSharp hinzugefügt, und alles war in Ordnung.
Snixtor

5
Das Referenzieren im aktuell ausgewählten Projekt scheint nicht zu funktionieren. Ich habe das gleiche Problem mit System.Data, auf das verwiesen wird, das jedoch vom unmittelbaren Fenster nicht gefunden werden kann. Wahrscheinlich funktioniert das nur während einer Debugging-Sitzung? Ich verwende es, um eine statische Methode aufzurufen, ohne eine Debugging-Sitzung zu starten.
Louis Somers

21

Zwei Dinge sind wichtig. Überprüfe das Folgende:

  1. Dass Ihre Projekteigenschaften auf .NET Framework 4 oder höher verweisen (falls dies nicht der Fall ist, ändern Sie dies: Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie den Menüpunkt "Eigenschaften ..." und dann als Zielframework ".NET Framework 4" " (oder höher))
  2. Dass Sie die Assembly "Microsoft.CSharp" als Referenz hinzugefügt haben (beachten Sie, dass Schritt 1, in dem das Projekt erneut geladen werden muss, ausgeführt werden muss, bevor Sie dies tun können).

Danach können Sie den dynamicTyp verwenden. Die Referenz muss im ausgewählten Projekt oder im Startprojekt hinzugefügt werden, um im Bereich des unmittelbaren Fensters verfügbar zu sein.


Hinweis: Hier habe ich einen schönen Artikel über Dynamik in C # gefunden, wie es funktioniert und was Sie damit machen können.


1
Up Voted, wurde auf Unit-Test-Projekt aufgehängt, bei dem diese "Microsoft.CSharp" -Baugruppe nicht referenziert wurde
Lazy Coder

8
  1. Gehen Sie zu Projekt-> Referenz hinzufügen.
  2. Wählen Sie Baugruppen aus der Seitenleiste und dem Framework aus
  3. Überprüfen Sie Microsoft.CSharp

Viel Spaß beim Codieren!


4
Vergessen Sie nicht, auf OK zu klicken
Victor Michael Kosgei

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.