F# XmlProvider的调试运行时
我将XmlProvider附加到似乎有效的xml上(显示在IE中,由W3C工具验证) 当我编写程序时,所有的东西都会进行类型检查,我可以编译。 但是,在运行时,我有以下错误:F# XmlProvider的调试运行时,f#,f#-data,F#,F# Data,我将XmlProvider附加到似乎有效的xml上(显示在IE中,由W3C工具验证) 当我编写程序时,所有的东西都会进行类型检查,我可以编译。 但是,在运行时,我有以下错误: Data at the root level is invalid. Line 1, position 1. 当我访问 let posts = (TyPosts.Parse lastposts).GetEntries() 其中entry是节点名 =>我应该在哪里放置断点 我只能设法突破TP的建设,而不是它的实际数据
Data at the root level is invalid. Line 1, position 1.
当我访问
let posts = (TyPosts.Parse lastposts).GetEntries()
其中entry是节点名
=>我应该在哪里放置断点
我只能设法突破TP的建设,而不是它的实际数据访问
为了重现最初的pb,这里有一个脚本。唯一的modif应该是前两个DLL
#r @"Z:\clones\FSharp.Data\bin\v40\FSharp.Data.dll"
#r @"Z:\clones\FSharp.Data\bin\v40\FSharp.Data.DesignTime.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.dll"
open System
open System.Net
open FSharp.Data
open System.IO;
open System.Text;
open System.Xml;
[<Literal>]
let lastposts = "lastposts.xml"
let phase0 () =
let fetch (url : string, auth) =
use client = new WebClient()
client.Headers.Add("user-agent", @"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US")
client.DownloadString url
let write(filename, content:string) =
use f= new StreamWriter(filename, false)
f.Write(content)
let posts () = fetch(@"http://squarism.com/feed/atom/", false)
write( __SOURCE_DIRECTORY__ + "/"+ lastposts, posts())
phase0()
[<Literal>]
let res = __SOURCE_DIRECTORY__
type TyPosts = XmlProvider<lastposts,ResolutionFolder=res>
let posts = (TyPosts.Parse lastposts).GetEntries() // <-- TCHETCHENIA HERE !!
#r@“Z:\clones\FSharp.Data\bin\v40\FSharp.Data.dll”
#r@“Z:\clones\FSharp.Data\bin\v40\FSharp.Data.DesignTime.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.Net.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.Xml.dll”
#r@“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.dll”
开放系统
开放系统.Net
打开FSharp.Data
opensystem.IO;
开放系统。文本;
Xml;
[]
让lastposts=“lastposts.xml”
设相位0()=
let fetch(url:string,auth)=
使用客户端=新的WebClient()
client.Headers.Add(“用户代理”@“Mozilla/5.0(Windows;U;MSIE 9.0;Windows NT 9.0;en-US”)
client.DownloadString url
让写(文件名,内容:字符串)=
使用f=新StreamWriter(文件名,false)
f、 写作(内容)
让posts()=fetch(@)http://squarism.com/feed/atom/“,错)
写入(uuu源目录uuu+“/”+lastposts,posts())
第0阶段()
[]
让res=\uuuu源目录__
类型TyPosts=XmlProvider
let posts=(TyPosts.Parse lastposts).GetEntries()/您使用的是什么版本的FSharp.Data?我刚刚在1.1.4中尝试了这个方法,效果很好:
let feed = XmlProvider<"http://squarism.com/feed/atom/">.GetSample()
let entries = feed.GetEntries()
let feed=XmlProvider.GetSample()
let entries=feed.GetEntries()
最近修复的Xml名称空间存在问题(请参阅)
在任何情况下,放置断点的位置都是(在FSharp.Data.dll
程序集中,而不是FSharp.Data.DesignTime.dll
程序集中)
如果1.1.4不起作用,请在GitHub上提交一个问题,您使用的是什么版本的FSharp.Data?我刚刚在1.1.4中尝试了这个,效果很好:
let feed = XmlProvider<"http://squarism.com/feed/atom/">.GetSample()
let entries = feed.GetEntries()
let feed=XmlProvider.GetSample()
let entries=feed.GetEntries()
最近修复的Xml名称空间存在问题(请参阅)
在任何情况下,放置断点的位置都是(在FSharp.Data.dll
程序集中,而不是FSharp.Data.DesignTime.dll
程序集中)
如果1.1.4不起作用,请在GitHub上提交一个问题,这确实是我认为会被调用的地方。我会再试一次。你真的运行了它,而不仅仅是编译了它?谢谢你的确认,无论如何,我会用这个确认做得更好。是的,我在FSI和控制台应用程序中都运行了它,这确实是我认为会被调用的地方。我不会你真的运行了它,而不仅仅是编译了它吗?谢谢你的确认,无论如何,我会用这个确认做得更好。是的,我在FSI和控制台应用程序中运行了它。你不应该引用FSharp.Data.DesignTime.dll,只有FSharp.Data.dllYou不应该引用FSharp.Data.DesignTime.dll,只有FSharp.Data.dll