2010-09-27 22 views
29

¿Alguien sabe cómo hacerse con la ruta al directorio donde reside el archivo de script LINQPad (.linq)?Directorio de scripts LINQPad?

O al script en sí.

Tenga en cuenta que no estoy hablando de la ubicación de la carpeta "Mis consultas", la que se muestra dentro de LINQPad.

Puedo guardar un archivo .linq en cualquier lugar del disco y abrirlo haciendo doble clic en él. Por ejemplo, si guardo el archivo en C:\Temp\Test.linq y ejecuto el programa, me gustaría tener C:\Temp o C:\Temp\Test.linq.

Básicamente me gustaría algo similar a Environment.CurrentDirectory o Assembly.GetEntryAssembly().Location, solo para el archivo .linq.

cosas I han intentado:

  • Mirando a través de las variables de entorno
  • Mirando a través del conjunto LINQPad que se da a mi guión
  • lanzar una excepción y mirando a la StackTrace (contiene un enlace a una copia temporal de mi guión en otro lugar)
  • Environment.CommandLine.Dump(); - da LINQPad ejecutable
  • Environment.CurrentDirectory.Dump(); - da C: \ windows \ system32
  • Assembly.GetExecutingAssembly().Location.Dump(); - da directorio temporal
+0

El contexto de ejecución siempre va a ser la ubicación del programa. Necesita una API de LinqPAD específica, si existe para la ubicación del archivo. – cjk

+1

Sí, estaba preguntándome si alguien sabía qué era :) (suponiendo que haya uno) –

Respuesta

56

Acabo de añadir una función para abordar esta cuestión. Puede probarlo ahora descargando el 2.27.1 or 4.27.1 beta build.

Para obtener la carpeta de la consulta actual, utilice la siguiente expresión:

Path.GetDirectoryName (Util.CurrentQueryPath) 
+1

Hay muchas razones por las que me encanta LINQPad, y pareces no tener problemas para encontrar nuevas razones :) ¡Muchas gracias! –

+0

@joe, justo lo que estaba buscando. también creo que te refieres a [Path.GetDirectoryName] (http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname.aspx). – Joe

+3

Actualmente Path.GetDirectoryName (Util.CurrentQueryPath) –

0

supongo que quiere decir mediante programación y no a través de la misma interfaz de usuario.

La ruta de acceso al directorio de archivos LINQ se mantiene en

% APPDATA% \ LINQPad \ querypath.txt

+0

No, eso contiene la ruta al directorio "Mis consultas". Puedo guardar fácilmente archivos .linq en cualquier otro lugar, y es la ubicación real que quiero, voy a editar la pregunta para aclarar. Quiero la ruta completa al archivo .linq del script actualmente en ejecución. –

+0

Ah ok - la pregunta es más clara ahora. No sé la respuesta, pero ¿qué le gustaría que volviera cuando ejecuta una consulta que aún no se ha guardado? – kjn

+0

Cualquier cosa básicamente, temperatura, lo que sea. En ese caso, probablemente sea lógico que devuelva la ruta a una copia temporal del script. Por ejemplo, por alguna razón, podría estar interesado en leer la fuente, pero mi uso principal es acceder a los archivos de datos en el mismo directorio que la propia secuencia de comandos, sin tener que codificar la ruta donde vive la secuencia de comandos. –

Cuestiones relacionadas