F# XmlProvider的调试运行时

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的建设,而不是它的实际数据

我将XmlProvider附加到似乎有效的xml上(显示在IE中,由W3C工具验证)

当我编写程序时,所有的东西都会进行类型检查,我可以编译。 但是,在运行时,我有以下错误:

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