XmlReader 在不同的程序集中声明,即使引用了 System.Xml 也是如此

本文关键字:System 引用 Xml 程序 声明 集中 程序集 XmlReader | 更新日期: 2023-09-27 18:31:35

我是一名在大学学习计算机工程的学生,我正在尝试开发一个应用程序,该应用程序将从某个 URL 读取 rss 提要,然后在提要上的提要更新时显示提要中每个项目的标题和链接作为通知。好吧,我实际上还处于最开始阶段,我正在为学习目的而从事这个项目,遵循一些教程等。

我的计划是使用 System.ServiceModel.Syndication 库使用 SyndicationFeed 对象及其方法从 url 读取 rss 提要。但是每当我尝试使用它时,我都会收到一个奇怪的错误。错误如下

--- CS0012:类型"XmlReader"在未引用的程序集中定义。必须添加对程序集"System.Xml, Version=5.0.5.0"的引用,Culture=neutral, PublicKeyToken='7cec85d7bea7798e'。

下面是显示此错误的代码部分:

    public void GetFeed()
    {
        // Create an xml reader that will read rss data from the given url
        var xmlReader = XmlReader.Create(rssUrl);
        syndicationFeed = SyndicationFeed.Load(xmlReader);
    }

我创建 xmlReader 的部分没有错误,我还引用了以下程序集"System.Xml"。

using System.Text;
using System.Threading.Tasks;
using System.ServiceModel.Syndication;
using System.Xml;     // Here is the System.Xml

此外,尝试通过右键单击并选择"添加引用"来向所述库 (System.Xml) 添加引用只会给我另一个错误,告诉我我无法重新定义"System.Xml",因为它已经被构建系统引用。

我尝试使用 System.ServiceModel.Syndication 命名空间中的其他类,以确保问题不在于程序集,并且所有其他类、方法等都可以正常工作。例如,我能够编写此内容并且没有错误:

SyndicationItem item = new SyndicationItem();
item.Title = new TextSyndicationContent("Me");
item.Links.Add(new SyndicationLink() { Uri = new Uri("http://somesite.con") });
item.PublishDate = DateTime.Now;

我在上面的代码上没有收到任何错误。例如,当我使用这样的 XmlReader 时,我不会收到错误:

  var reader = XmlReader.Create(rssUrl);
  while (reader.Read())
  {
       switch (reader.NodeType)
       {
            case XmlNodeType.Attribute:
                // Some code here
                break;
                // Some more cases here......
       }
  }

我在这里也没有收到关于 XmlReader 的错误。我只在将 XmlReader 的实例传递给 SyndicationFeed.Load(XmlReader 实例) 方法时出现错误。

// This always gives me error!!!
syndicationFeed = SyndicationFeed.Load(xmlReader);

我一直在尝试解决这个问题很长一段时间了,将近 6 个小时,我在网上搜索,引用了不同版本的 System.ServiceModel.Syndication.dll,试图在 Nuget 包管理器上找到联合包。什么都没用。我在这里问这个问题是万不得已,任何帮助将不胜感激。

XmlReader 在不同的程序集中声明,即使引用了 System.Xml 也是如此

UWP 应用使用 Windows 运行时类 Windows.Web.Syndication.SyndicationFeed,而不是 。Net's System.ServiceModel.Syndication.

Windows.Web.Syndication.SyndicationFeed没有XmlReader构造函数。通常,您将创建一个SyndicationClient,然后调用RetrieveFeedAsync(url)以获取联合源。

有关完整演练,请参阅如何访问 Web 源 (XAML)。

相关文章: