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?

Oberst Panik
quelle
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.

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

Matt
quelle
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!

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

Namespace: Microsoft.CSharp.RuntimeBinder

Assembly: Microsoft.CSharp (in Microsoft.CSharp.dll)

Beispiel
http://stepbystepdotnet.wordpress.com/2012/08/06/predefined-type-microsoft-csharp-runtimebinder-binder-is-not-defined-or-importedtestproject1/

http://msdn.microsoft.com/en-us/library/microsoft.csharp.runtimebinder.binder%28v=vs.110%29.aspx

http://msdn.microsoft.com/en-us/library/microsoft.csharp.runtimebinder%28v=vs.110%29.aspx

Ahmed Galal
quelle