Как получить путь к исполняемому скрипту.csx?

При выполнении сценария C# (.csx) с C:\Program Files (x86)\MSBuild\14.0\Bin\amd64\csi.exeКак я могу получить путь к сценарию выполняется?

Линия

Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory); 

выводит путь к интерпретатору (csi.exe), а не сценарий.

Сценарий должен знать о своем пути на некотором уровне, так как вы можете загружать сборки с относительным путем, например так:

#r "..\\bla\\asdf.dll"

0 ответов

Только с помощью вспомогательного метода я мог программно получить полный путь к исходному скрипту.CSX. Метод использует атрибут CallerFilePath. Это работает из интерактивной оболочки Rosalyn C#, а также из командной строки.

using System.Runtime.CompilerServices;
// Work-around helper method to get the source file location.
private static string GetSourceFile([CallerFilePath] string file = "") => file;
Console.WriteLine($"Full path to .csx source file => {GetSourceFile()}");
Другие вопросы по тегам