System.MissingMethodException:找不到方法:'FSharp.Data.HttpResponse
System.MissingMethodException : Method not found: 'FSharp.Data.HttpResponse
我已经使用 Tickspec 在 F# 中为我的应用程序编写了 AT。我正在使用 FSharp.Data.Http.Request
,但出现以下错误:
System.MissingMethodException : Method not found: 'FSharp.Data.HttpResponse
FSharp.Data.Http.Request(System.String,
Microsoft.FSharp.Core.FSharpOption`1<Microsoft.FSharp.Collections.FSharpList`1
<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.Collections.Generic.IEnumerable`1
<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.String>,
Microsoft.FSharp.Core.FSharpOption`1<FSharp.Data.HttpRequestBody>,
Microsoft.FSharp.Core.FSharpOption`1<System.Collections.Generic.IEnumerable`
1<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.Net.CookieContainer>,
Microsoft.FSharp.Core.FSharpOption`1<Boolean>,
Microsoft.FSharp.Core.FSharpOption`1<System.String>,
Microsoft.FSharp.Core.FSharpOption`1<Microsoft.FSharp.Core.FSharpFunc`2
<System.Net.HttpWebRequest,System.Net.HttpWebRequest>>)'.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]
arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags
invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at <StartupCode$TickSpec>.$TickSpec.createAction@212-1.Invoke()
FSharp.Data
版本为 2.1.1.0.
在fsproj
中:
ToolsVersion is 14.0
TargetFrameworkVersion is v4.6.1
F# is 4.0.
我有另一套用于不同应用程序的 AT,我使用相同的 FSharp.Data.dll
和相同的 Http.Request
方法,他们使用 F# 4.0
,我没有遇到任何问题。
我认为 dll 没有任何问题,因为我在示例应用程序中使用了它,并且我能够使用 Http.Request 方法。我创建了一个全新的解决方案,因为我想也许我使用的是 FSharp.Core 的旧版本并且 FSharp.Data 仍然存在同样的问题。
我找到的唯一解决方案是为该特定项目恢复为 F#3.0
。我不想使用 F#3.0
,因为我们已将 F#4.0
与所有其他应用程序一起使用。
知道如何解决这个问题吗?
听起来您似乎以某种方式绑定到 FSI 中的 F#3.x。你能在你的脚本中看到(如果你通过脚本执行它)哪个版本的 FSharp.Core 被引用了吗?
如果我没记错的话,TickSpec 是针对 F3.x 编译的,因此这可能是绑定重定向问题或类似问题。
将 app.config 或以下内容添加到任何现有的。如果你有多个项目。即测试和应用程序,您需要将其添加到两者中。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我已经使用 Tickspec 在 F# 中为我的应用程序编写了 AT。我正在使用 FSharp.Data.Http.Request
,但出现以下错误:
System.MissingMethodException : Method not found: 'FSharp.Data.HttpResponse
FSharp.Data.Http.Request(System.String,
Microsoft.FSharp.Core.FSharpOption`1<Microsoft.FSharp.Collections.FSharpList`1
<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.Collections.Generic.IEnumerable`1
<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.String>,
Microsoft.FSharp.Core.FSharpOption`1<FSharp.Data.HttpRequestBody>,
Microsoft.FSharp.Core.FSharpOption`1<System.Collections.Generic.IEnumerable`
1<System.Tuple`2<System.String,System.String>>>,
Microsoft.FSharp.Core.FSharpOption`1<System.Net.CookieContainer>,
Microsoft.FSharp.Core.FSharpOption`1<Boolean>,
Microsoft.FSharp.Core.FSharpOption`1<System.String>,
Microsoft.FSharp.Core.FSharpOption`1<Microsoft.FSharp.Core.FSharpFunc`2
<System.Net.HttpWebRequest,System.Net.HttpWebRequest>>)'.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]
arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags
invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at <StartupCode$TickSpec>.$TickSpec.createAction@212-1.Invoke()
FSharp.Data
版本为 2.1.1.0.
在fsproj
中:
ToolsVersion is 14.0
TargetFrameworkVersion is v4.6.1
F# is 4.0.
我有另一套用于不同应用程序的 AT,我使用相同的 FSharp.Data.dll
和相同的 Http.Request
方法,他们使用 F# 4.0
,我没有遇到任何问题。
我认为 dll 没有任何问题,因为我在示例应用程序中使用了它,并且我能够使用 Http.Request 方法。我创建了一个全新的解决方案,因为我想也许我使用的是 FSharp.Core 的旧版本并且 FSharp.Data 仍然存在同样的问题。
我找到的唯一解决方案是为该特定项目恢复为 F#3.0
。我不想使用 F#3.0
,因为我们已将 F#4.0
与所有其他应用程序一起使用。
知道如何解决这个问题吗?
听起来您似乎以某种方式绑定到 FSI 中的 F#3.x。你能在你的脚本中看到(如果你通过脚本执行它)哪个版本的 FSharp.Core 被引用了吗?
如果我没记错的话,TickSpec 是针对 F3.x 编译的,因此这可能是绑定重定向问题或类似问题。
将 app.config 或以下内容添加到任何现有的。如果你有多个项目。即测试和应用程序,您需要将其添加到两者中。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>