【问题标题】:relative path using c#使用c#的相对路径
【发布时间】:2011-08-24 01:30:18
【问题描述】:

我正在使用 c#。在我的项目中,我有一个 xml 文件夹,其中有一个 xml 文件说“file.xml”.. 我想在我的项目中使用该文件。我想从当前项目本身中获取该文件,因为我将路径设置为:

  xmlDoc.Load(@"..\xml\file.xml");

但它没有获取文件。 它显示了一些“C:”路径.. 如何从项目本身中检索此文件。

【问题讨论】:

    标签: c# path relative-path


    【解决方案1】:

    您应该在解决方案资源管理器中为文件设置Copy to Output Directory 属性,以便将文件转到包含您的 EXE 的文件夹中。

    然后你就可以写了

    xmlDoc.Load(Path.Combine(typeof(MyClass).Assembly, "file.xml"));
    

    这使用 EXE 文件的实际位置,并且无论当前目录如何都可以工作。

    编辑:在 ASP.Net 中,您应该将文件放在 App_Data 文件夹中(不可公开访问),然后写入

    xmlDoc.Load(Server.MapPath("~/App_Data/file.xml"));
    

    【讨论】:

    • 就我而言,这种方法不起作用,因为包含该文件的 Visual Studio 项目是 SQL 数据库项目。
    【解决方案2】:

    您应该将Copy to Output Directory 设置为“如果较新则复制”,然后您可以使用:

    Path.Combine(Application.StartupPath, "file.xml");
    

    【讨论】:

    • 它不工作..它给出异常“找不到文件”并显示一些“C:programfiles.....”路径。
    • 是 windows 应用还是 ASP.NET 应用?
    • 尝试使用'Server.MapPath("~/file.xml");'路径必须是相对的。
    【解决方案3】:
    Path.Combine(typeof(MyClass).Assembly.Location.ToString(), "file.xml")
    

    【讨论】:

    • 不起作用,因为Location.ToString() 包含 MyClass.exe
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 2015-03-26
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多