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

时间:2009-10-27 13:46:10

标签: c# command-line file-io

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

    XDocument doc = XDocument.Load("SearchSources.xml");

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

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

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

4 个答案:

答案 0 :(得分:7)

使用:

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

这将根据可执行文件的目录创建文件的路径。

或使用Path.Combine,如建议:

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

答案 1 :(得分:1)

尝试这样做:

var myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var file = Path.GetDirectoryName(myAssembly.Location) + "\\SearchSources.xml";

这将获取当前可执行文件的位置,然后从可执行文件夹和您所追踪文件的名称构建路径。

答案 2 :(得分:0)

听起来你需要一个包含xml文件路径的配置文件。在安装时,您可以根据需要修改路径。

答案 3 :(得分:0)

在Visual Studio中创建设置文件(右键单击项目,添加 - >新项目 - >设置文件)。在那里,您可以创建一个包含文件路径名的字符串。在代码中,您可以像这样访问它:

Properties.Settings.Default.MyString

这将创建一个xml文件(app.config)。然后我会在那里存储路径,并在我的应用程序中使用它。这样,当您部署它时,您只需在任何文本编辑器中打开XML文件并编辑路径。