2010-09-27 7 views
29

Kann jemand den Pfad zu dem Verzeichnis ermitteln, in dem sich die LINQPad-Skriptdatei (.linq) befindet?LINQPad Skriptverzeichnis?

Oder das Skript selbst für diese Angelegenheit.

Beachten Sie, dass ich nicht über den Speicherort des Ordners "Meine Abfragen" spreche, der in LINQPad angezeigt wird.

Ich kann eine .linq-Datei irgendwo auf der Festplatte speichern, und öffnen Sie es durch einen Doppelklick darauf.

Zum Beispiel, wenn ich die Datei zu C:\Temp\Test.linq speichern und das Programm ausführen, würde ich gerne C:\Temp oder C:\Temp\Test.linq haben.

Grundsätzlich möchte ich etwas ähnlich wie Environment.CurrentDirectory oder Assembly.GetEntryAssembly().Location, nur für die .LINQ-Datei.

Dinge, die ich habe versucht:

  • durch Umwelt Suchen Variablen
  • Blick durch die LINQPad Assembly, die zu meinem Skript gegeben
  • Werfen eine Ausnahme und Blick auf die stacktrace (enthält einen Link zu eine temporäre Kopie von meinem Skript irgendwo anders)
  • Environment.CommandLine.Dump(); - gibt LINQPad ausführbare
  • Environment.CurrentDirectory.Dump(); - gibt C: \ Windows \ System32
  • Assembly.GetExecutingAssembly().Location.Dump(); - gibt Tempverzeichnis
+0

Der Ausführungskontext immer der Programmplatz sein wird. Sie benötigen eine bestimmte LinqPAD-API, falls eine für den Speicherort vorhanden ist. – cjk

+1

Ja, ich fragte mich irgendwie, ob jemand weiß, was das war :) (vorausgesetzt, es gibt einen) –

Antwort

56

Ich habe soeben eine Funktion, um diese Adresse. Sie können es jetzt testen, indem Sie die 2.27.1 or 4.27.1 beta build herunterladen.

Um die aktuelle Abfrage des Ordners zu erhalten, verwenden Sie den folgenden Ausdruck:

Path.GetDirectoryName (Util.CurrentQueryPath) 
+1

Es gibt viele Gründe, warum ich LINQPad gerade liebe, und Sie scheinen kein Problem mit neuen Gründen :) Vielen Dank! –

+0

@joe, genau das, was ich gesucht habe. Ich denke auch, dass Sie [Path.GetDirectoryName] (http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname.aspx) meinen. – Joe

+3

Eigentlich Path.GetDirectoryName (Util.CurrentQueryPath) –

0

Ich nehme an, Sie bedeuten, programmatisch und nicht über die Benutzeroberfläche selbst.

Der Weg zum Linq Dateiverzeichnis wird in

% APPDATA gehalten% \ LINQPad \ querypath.txt

+0

Nein, das enthält den Pfad zum Verzeichnis "Meine Abfragen". Ich kann überall sonst leicht .linq Dateien speichern, und es ist der richtige Ort, den ich will, ich werde die Frage bearbeiten, um zu klären. Ich möchte den vollständigen Pfad zur .linq-Datei des aktuell ausgeführten Skripts. –

+0

Ah ok - die Frage ist jetzt klarer. Ich kenne die Antwort nicht, aber was möchten Sie zurückgeben, wenn Sie eine Abfrage ausführen, die noch nicht gespeichert wurde? – kjn

+0

Alles im Grunde, Temp, was auch immer. In diesem Fall wäre es wahrscheinlich logisch, dass der Pfad zu einer temporären Kopie des Skripts zurückgegeben wird. Zum Beispiel könnte ich aus irgendeinem Grund daran interessiert sein, die Quelle zu lesen, aber meine primäre Verwendung besteht darin, auf Datendateien im selben Verzeichnis wie das Skript selbst zuzugreifen, ohne den Pfad zum Speicherort des Skripts fest zu codieren. –