C#脚本(csx)脚本文件的位置

时间:2017-10-13 11:26:31

标签: c# roslyn

在F#中,预定义标识符__SOURCE_DIRECTORY__相当容易 https://stackoverflow.com/a/4861029/2583080

但是,此标识符在C#脚本(csx文件或C#Interactive)中不起作用。

  

> __SOURCE_DIRECTORY __

     

(1,1):错误CS0103:当前上下文中不存在名称“__SOURCE_DIRECTORY__”

以更传统的方式获取当前目录也不起作用。

  1. Directory.GetCurrentDirectory()

    返回:C:\Users\$USER_NAME$\

  2. new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath;

    返回:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\InteractiveComponents\

1 个答案:

答案 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