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
Ответы
Ответ 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