【问题标题】:Use external xml file after publishing the c# desktop application发布c#桌面应用程序后使用外部xml文件
【发布时间】:2013-10-02 06:12:29
【问题描述】:

我开发了一个 c# 桌面应用程序,它需要托管在服务器上,并且会根据存储在 XML 文件中的查询安排来获取数据。在开发过程中,我使用以下代码读取 XML 文件:

var query = new XPathDocument(@"C:\\Documents and Settings\\XYZ\\Desktop\\productplanningquery.xml");

如您所见,我已将 XML 文件方便地放在桌面上,并且在开发过程中运行良好。我现在想做的是提供一个路径,这样无论我在哪里托管应用程序和 XML 文件,它都不会引发异常。我认为的一种方法可能是在将安装应用程序的目录中有一个文件夹,但为此我必须动态找出当前目录的路径(我无法弄清楚)。

请帮忙。

【问题讨论】:

    标签: c# asp.net desktop-application


    【解决方案1】:

    您可以使用 args 传递 XML 的位置,这样您的代码将如下所示:

    var query = new XPathDocument(args[0])

    您也可以使用相对路径。确保在部署代码时将文件的位置保持在相同的相对位置。例如,如果您将 XML 放在与应用程序相同的目录中

    var query = new XPathDocument("productplanningquery.xml")
    

    【讨论】:

    • 我尝试了您的相对位置,但是,在调试它并查看 XML 的 bin/debug/ 时,一旦我发布应用程序,它的相对路径会是什么?
    • 它将与您的.exe 位于同一目录。如果您查看bin/debug/ 内部,您将看到您的应用程序的exe 在那里创建,因此路径是相对于它的。只需将您的xmlexe 放在同一目录中即可。
    【解决方案2】:

    我不确定您是否想使用 winform 应用程序读取 xml 并执行一些操作,然后将其传递给 Web 应用程序或其他东西。但这是我的理解:

    案例 1:如果您需要在 IIS 之外创建 XML,并且该 XML 将被 ASP.Net 应用程序使用,那么:

    要在 IIS 服务器上使用桌面应用程序,您需要对 Live Machine 拥有完全的管理权限。如果不是,那么您应该考虑构建 Windows 服务来操作 XML 文件或任何将在幕后运行的任务,以减少 asp.net 应用程序的负载。

    在这种情况下,如果您没有服务器,那么您需要一些虚拟专用主机或类似类型的主机,您几乎拥有访问系统的所有特权。然后部署 Windows 服务,设置输出路径,使其也可以被 asp.net 应用程序访问。随心所欲。

    案例 2:如果你想在 ASP.Net 中单独读取 XML,那么

    在这种情况下,您可以使用 XDocument 轻松阅读它。但请注意,XML 应该在同一应用程序目录中或在 ASP.Net 应用程序的范围内

    MSDN Article for Web-Windows Services with ASP.Net

    【讨论】:

    • 它是基于 c# 构建的基于桌面的应用程序。此外,我无法嵌入它,因为它很可能会在未来发生变化。其中一个 XML 也包含配置。
    【解决方案3】:

    你可以这样使用:

    var path = string.Format("{0}\\{1}", Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "productplanningquery.xml");
    var pathForCurrentApp = string.Format("{0}\\{1}", Environment.CurrentDirectory, "productplanningquery.xml");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 2020-12-31
      • 1970-01-01
      • 2013-02-25
      • 2012-10-16
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多