在C#中从文件读取命令行应用程序

Mat*_*ner 1 c# file-io command-line

我正在为我自己的日常任务编写一个小的命令行工具,并且从我用于配置的XML文件中读取时遇到问题.根据示例,我使用此代码加载Linq-to-XML的XML文件.

    XDocument doc = XDocument.Load("SearchSources.xml");
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我将我的应用程序和XML"部署"到c:\ windows\system32以便于访问时,当我尝试从RUN提示符启动文件时它将无法工作(例如,运行=>工具-commands)因为它正在寻找相对于我启动应用程序的地方的XML.

我显然可以将路径更改为完整路径,例如代码中的c:\ windows\system32\SearchSources.xml,但这会阻止我在Visual Studio中通过F5运行它.

编辑:我试图在代码中执行此操作,而不是在将应用程序部署到其他位置时修改配置文件.

Kaz*_*zar 7

使用:

String filePath = System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetExecutingAssembly().Location
) + @"\SearchSources.xml";
Run Code Online (Sandbox Code Playgroud)

这将基于可执行文件的目录创建文件的路径.

或者使用Path.Combine,如建议的那样:

String filePath = System.IO.Path.Combine(
    System.IO.Path.GetDirectoryName(
         System.Reflection.Assembly.GetExecutingAssembly().Location
    ),
    "SearchSources.xml"
);
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,使用Path.Combine避免反斜杠心痛 - System.IO.Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location,"SearchSources.xml"); (5认同)