f# - 单声道中的 WSDL 和 F# TypeProvider

标签 f# mono wsdl fsharp.data.typeproviders

在几个使用 JSON 的不同项目中使用 FSharp.Data TypeProviders 之后,我正在寻找一种类似的方法来使用基于 WSDL 的服务。正在看this我充满希望的例子。不幸的是,在 Mac 上使用单声道是行不通的。

是否有任何替代或解决错误的方法

"The type provider 
'FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: 
The .NET SDK 4.0 or 4.5 tools could not be found (FS3033)"

最佳答案

以下内容是在对 mono 知之甚少,但对该 WSDL 类型提供程序有一定了解的情况下编写的。我经常使用它并且在所有怪癖方面都有一些经验,包括不时阅读它的源代码以尝试了解发生了什么以及为什么发生。还添加了一些关于 svcutil-tool 的一般知识,以及这个次级工具的 bug 和什么不是。

我想这里的主要问题是单声道上 svcutil 的“路径”错误或 svcutil 完全丢失。或者该问题的排列,例如缺少一些指向 svcutil 路径的注册表项。

另一方面,我确实认为 svcutil 也应该在单声道上可用。

WSDL提供者是一个非删除类型的提供者,它通过使用svcutil生成代码然后编译它来生成一个代理。确保您有可用的 svcutil,然后确保它在路径/注册表/其他任何地方,可能会对您有所帮助。否则,我 99% 确定,不幸的是,您将无法在单声道上使用此类型提供程序。这里不确定的部分是,如果您在 Windows 环境中生成一个库,然后在单声道中重用这个 dll,这可能会起作用。

查看 github 上的源代码:https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/Util.fs#L106 (第 106 行++) 和 https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/TypeProviders.fs (使用 SvcUtil 的部分) 您可能会获得有关位置、方式和内容的线索,以确保 SvcUtil.exe 在正确的路径上可用。

https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/Util.fs#L82确实引用了一些注册表项并添加了一些硬编码的路径。

希望这可以通过确保您确实在“正确”路径上拥有 svcutil 来为您解决问题...

我不喜欢这种对 svcutil 的依赖(它也让我感到不快 grrr),或者类型提供者中的其他外部工具,一般来说,希望有好心人会开始执行任务有时间重写这个。

关于f# - 单声道中的 WSDL 和 F# TypeProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314899/

相关文章:

c# - params 关键字可以通过 WSDL 定义来表达吗

f# - F# Interactive 中的 StructLayout 限制?

c# - F#:为什么这两个集合不相等?

c# - 没有 NET 3.0 的 WCF

java - 让 JAX-WS 生成带有命名空间参数的代码?

java - 通过java程序从WSDL生成java类

.net - 非统一实例化的用法是什么意思?

f# - WebSharper浏览器的最低要求

c++ - 我可以使用 xbuild 在 Linux 上编译 Visual C++ 项目吗?

android - Xamarin.Android AndroidEnvironment 文件未应用于更改 GC Bridge 实现