我是一名在大学学习计算机工程的学生,我正在尝试开发一个应用程序,该应用程序将从某个网址读取RSS订阅源,然后在Feed中显示每个项目的标题和链接作为通知网址上的Feed已更新。 好吧,我实际上是在一开始,我正在研究这个项目用于学习目的,遵循一些教程等。
我的计划是使用System.ServiceModel.Syndication库使用SyndicationFeed对象及其方法从url读取rss feed。但每当我尝试使用它时,我都会遇到一个奇怪的错误。错误如下
--- 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包管理器上找到Syndication包。没有任何效果。我在这里提出这个问题作为最后的手段,任何帮助将不胜感激。
答案 0 :(得分:0)
UWP应用使用Windows运行时类Windows.Web.Syndication.SyndicationFeed而不是.Net的System.ServiceModel.Syndication。
Windows.Web.Syndication.SyndicationFeed没有XmlReader构造函数。通常,您会创建SyndicationClient
,然后致电RetrieveFeedAsync(url)
以获取SyndicationFeed。
请参阅How to access a web feed (XAML)了解完整演练。