在F#中,预定义标识符__SOURCE_DIRECTORY__
相当容易
https://stackoverflow.com/a/4861029/2583080
但是,此标识符在C#脚本(csx文件或C#Interactive)中不起作用。
> __SOURCE_DIRECTORY __
(1,1):错误CS0103:当前上下文中不存在名称“__SOURCE_DIRECTORY__”
以更传统的方式获取当前目录也不起作用。
Directory.GetCurrentDirectory()
返回:C:\Users\$USER_NAME$\
new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath;
返回:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\InteractiveComponents\
答案 0 :(得分:3)
在C#中,您可以利用caller information属性(自C#5 / VS2012以来可用)。只需声明一个这样的方法:
string GetCurrentFileName([System.Runtime.CompilerServices.CallerFilePath] string fileName = null)
{
return fileName;
}
并在不指定可选参数的情况下调用它:
string scriptPath = GetCurrentFileName(); // /path/to/your/script.csx