Подтвердить что ты не робот

LINQPad script?

Кто-нибудь знает, как получить путь к каталогу, в котором находится файл LINQPad script (.linq)?

Или самому script.

Обратите внимание, что я не говорю о расположении папки "Мои запросы", той, что показана внутри LINQPad.

Я могу сохранить файл .linq в любом месте на диске и открыть его, дважды щелкнув по нему.

Например, если я сохраню файл в C:\Temp\Test.linq и запустил программу, я хотел бы иметь либо C:\Temp, либо C:\Temp\Test.linq.

В принципе, мне бы хотелось что-то вроде Environment.CurrentDirectory или Assembly.GetEntryAssembly().Location, только для файла .linq.

Вещи, которые я пробовал:

  • Просмотр переменных среды
  • Просмотр сборки LINQPad, которая предоставляется моему script
  • Выбрасывание исключения и просмотр stacktrace (содержит ссылку на временную копию моего script где-то еще)
  • Environment.CommandLine.Dump(); - предоставляет исполняемый файл LINQPad
  • Environment.CurrentDirectory.Dump(); - дает C:\windows\system32
  • Assembly.GetExecutingAssembly().Location.Dump(); - предоставляет каталог temp
4b9b3361

Ответ 1

Я только что добавил функцию для решения этой проблемы. Вы можете протестировать его сейчас, загрузив 2.27.1 или 4.27.1 beta build.

Чтобы получить текущую папку запроса, используйте следующее выражение:

Path.GetDirectoryName (Util.CurrentQueryPath)

Ответ 2

Я предполагаю, что вы имеете в виду программно, а не через пользовательский интерфейс.

Путь к файлу каталога linq хранится в

% APPDATA%\LINQPad\querypath.txt

Ответ 3

Принятый ответ больше не работает в Util.CurrentQueryPath поскольку Util.CurrentQueryPath имеет значение null вместе со всеми ссылками в Util.CurrentQuery относительно пути к файлу и имени. Чтобы получить путь к папке, в которой есть все запросы:

Работает: Util.MyQueriesFolder

Кроме того, я попробовал это, поскольку думал, что это будет работать, но это не так:

Util.GetMyQueries().FirstOrDefault(x => x.Name== Util.CurrentQuery.Name).FilePath;  // Doesn't work because Util.CurrentQuery.Name is null too