C# 在WPF中解析本地XML文档(在调试中工作,发布后失败)

C# 在WPF中解析本地XML文档(在调试中工作,发布后失败),c#,wpf,xml,C#,Wpf,Xml,我正在构建一个WPF应用程序。在该应用程序中,我使用XmlReader类解析几个本地XML文件。我编写的代码在调试过程中工作得很好,但在发布并安装应用程序后失败 我将XML文档作为构建操作中的内容,并将其设置为“始终复制”。我可以确认XML文档已部署到我的构建中,并且在安装后仍在应用程序文件夹中 更让我困惑的是,在这个应用程序中,我使用相同的XmlReader代码来解析来自外部网站的RSS提要,没有任何问题。它只在本地XML文档上失败 有人知道为什么我的XmlReader在应用程序发布后无法解析

我正在构建一个WPF应用程序。在该应用程序中,我使用XmlReader类解析几个本地XML文件。我编写的代码在调试过程中工作得很好,但在发布并安装应用程序后失败

我将XML文档作为构建操作中的内容,并将其设置为“始终复制”。我可以确认XML文档已部署到我的构建中,并且在安装后仍在应用程序文件夹中

更让我困惑的是,在这个应用程序中,我使用相同的XmlReader代码来解析来自外部网站的RSS提要,没有任何问题。它只在本地XML文档上失败

有人知道为什么我的XmlReader在应用程序发布后无法解析本地XML文档吗

以下是我的XmlReader代码的一小段,供参考:

XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true;
            settings.IgnoreProcessingInstructions = true;
            settings.IgnoreWhitespace = true;
            try
            {
                settingsReader = XmlReader.Create("Resources/data/TriviaQuestions.xml", settings);

                nodeNum = 0;
                while (settingsReader.Read())
                {
                    switch (settingsReader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (settingsReader.HasAttributes)
                            {
                                for (int i = 0; i < settingsReader.AttributeCount; i++)
                                {
                                    settingsReader.MoveToAttribute(i);
                                    _feeds[nodeNum] = settingsReader.Value.ToString();
                                }
                                settingsReader.MoveToContent(); // Moves the reader back to the element node.
                            }
                            break;
                        case XmlNodeType.Text:
                            _questions[nodeNum] = settingsReader.Value;
                            nodeNum++;
                            break;

                    }

                }
                settingsReader.Close();
            }
            catch
            {

            }
这是我的XML

<?xml version="1.0" encoding="utf-8" ?>
<Questions>
    <Question feed="http://entertainment.msn.com/rss/topboxoffice/">What movie has the top box office sales in the US right now?</Question>
    <Question feed="http://entertainment.msn.com/rss/topdvdrentals/">What is the top DVD rental in the US this week?</Question>
    <Question feed="http://entertainment.msn.com/rss/topalbums/">Which of the following albums is currently topping the charts?</Question>
</Questions>

你能描述一下我发布并安装应用程序后失败的情况吗

如果您能够描述什么不起作用,什么是错误,并提供异常信息,这将非常有用


与你的问题无关,每当我在生产代码中看到空的catch块时,我都会害怕地畏缩

你能描述一下我发布并安装应用程序后失败的情况吗

如果您能够描述什么不起作用,什么是错误,并提供异常信息,这将非常有用


与你的问题无关,每当我在生产代码中看到空的catch块时,我都会害怕地畏缩

根据您的发布描述,我假设您正在使用clickonce安装应用程序

Clickonce对xml文件有不同的默认行为—它假定它们是数据文件,并将它们放置在与其他文件不同的安装位置

请仔细检查您的xml文件是否确实安装在您认为的位置

在“发布设置”中,可以将每个xml文件的设置从“数据文件”更改为“包含”。您的其他文件将被设置为包含


请注意,发布设置独立于文件的生成设置。

根据您的发布描述,我假设您正在使用clickonce安装应用程序

Clickonce对xml文件有不同的默认行为—它假定它们是数据文件,并将它们放置在与其他文件不同的安装位置

请仔细检查您的xml文件是否确实安装在您认为的位置

在“发布设置”中,可以将每个xml文件的设置从“数据文件”更改为“包含”。您的其他文件将被设置为包含


请注意,发布设置独立于文件的生成设置。

请考虑使用IsolatedStorage存储您的设置,而不是将其存储在相对资源目录中。这将为您提供不同安装方案的已知位置,例如ClickOnce安装。

考虑使用IsolatedStorage存储设置,而不是将其存储在相对资源目录中。这将为您提供不同安装场景的已知位置,例如ClickOnce安装。

这将有助于准确地知道发生了什么类型的故障,以便我们知道要查找什么。这将有助于准确地知道发生了什么类型的故障,以便我们知道要查找什么。空的catch块是因为这是一段代码,错误处理函数调用在该问题的上下文中并不重要。空catch块是因为这是一段代码,因此错误处理函数调用在该问题的上下文中并不重要。