繁体   English   中英

F#WSDL代码生成

[英]F# WSDL code generation

我正在使用带有F#的VS.NET 2010集成shell,我正在尝试使用soap Web服务......如何生成F#源代码? 我试过了

wsdl l:“C:\\ Program Files(x86)\\ FSharpPowerPack-2.0.0.0 \\ bin \\ FSharp.Compiler.CodeDom.dll” http:// localhost /?wsdl

随着

wsdl /language:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider,Microsoft.FSharp.Compiler.CodeDom,Version = 1.9.2.9,Culture = neutral,PublicKeyToken = a19089b1c74d0809“

但是我似乎无法让/ language开关工作。

编辑:

taspeotis的回答让我走了......这为Web服务生成了F#源:

gacutil -i "C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\FSharp.PowerPack.dll"
svcutil /language:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider, FSharp.Compiler.CodeDom, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a19089b1c74d0809" http://localhost/?wsdl

这不能回答你的问题,但你可能更幸运生成C#,将C#编译成库DLL,并从你的F#代码引用该DLL。 (C#编译器csc.exe将成为.NET安装的一部分。)

你有没有将FSharp.Compiler.CodeDom.dll添加到GAC? 使用gacutil.exe执行此操作。

第三方编辑

这里有一个示例gacutil.exe /l System.XML.Linq来列出某些程序集。 除了FSharp.Compiler.CodeDomsource )之外,另一个可能是FSharp.Data库

引自jizugu: This generated F# source for the web service:

gacutil -i 
   "C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\FSharp.PowerPack.dll"

svcutil 
  /language:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider  
        ,FSharp.Compiler.CodeDom, Version=2.0.0.0, Culture=neutral
        ,PublicKeyToken=a19089b1c74d0809" http://localhost/?wsdl

如果F#Code DOM提供程序使用WSDL,我会感到惊讶。 我在一段时间之前编写了初始实现,而在Microsoft,我们让它与ASP.NET一起工作,但除非它从那时起被改进,否则它可能不适用于WSDL或XSD。

即使对于ASP.NET,我们也必须创建一个单独的类,其中包含一些特定于ASP.NET的“hacks”。 这部分是因为ASP.NET生成的CodeDOM无效(在某种程度上),并且因为CodeDOM结构与F#不完全兼容。 如果你真的需要让它工作,你可能需要添加类似的hacks(通过修改CodePlex源代码

我认为更安全的方法是包含一个小的C#库项目,它为您生成引用或使用csc.exe调用C#编译器,如Brian建议的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM