WSDL和F# TypeProviders在Mono中的应用

3

在处理JSON的几个不同项目中,我已经使用了FSharp.Data TypeProviders。现在我希望找到一种类似的方法来消费基于WSDL的服务。看到这个示例,我感到很有希望。不幸的是,在Mac上使用mono时它并不起作用。

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

"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)"
1个回答

2
以下内容是基于我对mono的非常有限的了解和对WSDL类型提供程序的一些了解。我经常使用它,并且在所有怪癖方面都有一些经验,包括阅读源代码以尝试理解发生了什么以及为什么会时不时出现的问题。此外,我还对svcutil工具有一般的了解,以及这个次级工具的错误和其他问题。
我想主要问题在于mono上的svcutil路径错误或完全缺少svcutil。或者像缺少指向svcutil路径的某些注册表键等这样的问题的排列组合。
另一方面,我确实认为svcutil也应该在mono上可用。
WSDL提供程序是一个非擦除类型提供程序,通过使用svcutil生成代码并编译来生成代理。确保您有svcutil可用,然后确保其在路径/注册表/任何地方,可能会有所帮助。否则,我99%确定,您将无法在mono上使用此类型提供程序,遗憾地是不确定的部分是如果您在Windows环境中生成库,然后在mono中重用此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的依赖(它也让我很烦恼),或者通常情况下类型提供程序中的其他外部工具,希望一些善良的灵魂将在某个时候开始重写它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接