XSD.EXE从XSD生成F#类

时间:2010-12-01 17:55:05

标签: f# xsd.exe

我正在尝试使用XSD.EXE工具从XSD生成一些类文件。是否从结果文件中获得了任何东西是另一个问题,但我希望看到生成的内容。我找到了reference,注意到:

  

哪,感谢卢克对F#   Visual Studio团队,意味着我可以做到   这样:

xsd.exe fpml-asset-4-z.xsd /classes /l:”Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider, FSharp.Compiler.CodeDom, Version=1.9.9.9, Culture=neutral, PublicKeyToken=a19089b1c74d0809″

哪个很精彩。我没有相同版本的代码dom - 所以看看GAC我将行改为:

xsd.exe RIXML-datatypes-2_3_1.xsd /classes /l:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider, FSharp.Compiler.CodeDom, Version=2.0.0,0, Culture=neutral, PublicKeyToken=a19089b1c74d0809"

哪个收益率:

  

C:\ Users \用户桌面\ CSharpSamples \ ResearchUploader \ Fc的RixmlLib> XSD.EXE   RIXML-datatypes-2_3_1.xsd / classes   /l:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodePr   ovider,FSharp.Compiler.CodeDom,   版本= 2.0.0,0,文化=中立,   公钥= a19089b1c74d0809"   Microsoft(R)Xml架构/数据类型   支持实用程序[Microsoft(R).NET   框架,版本4.0.30319.1]   版权所有(C)Microsoft Corporation。   版权所有。错误:给定的   程序集名称或代码库无效。   (来自HRESULT的异常:0x80131047)

     

如果您需要更多帮助,请   输入“xsd /?".

思想?

3 个答案:

答案 0 :(得分:3)

我有同样的问题“来自HRESULT的异常:0x80131047” - 没有设法解决它,但有一个丑陋的解决方法:

  1. 创建新的C#控制台应用程序
  2. 有关如何以编程方式执行与xsd.exe
  3. 相同的操作,请参阅this post
  4. 添加对F#powerpack的CodeDom dll的引用
  5. 使用Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider而不是CSharpCodeProvider
  6. 花了一个小时试图让xsd.exe工作,我只用了5分钟就这样暴力了......

    这可以很容易地制作成xsdfs.exe或其他东西,以节省人们使xsd.exe使用f#代码dom的麻烦:)

答案 1 :(得分:1)

这对我来说是正确的。你能仔细检查一下GAC中是否安装了组件吗? 这是一个可以输入“Visual Studio命令提示符”的命令:

> gacutil -l | find "FSharp.Compiler.CodeDom"

我得到了:

FSharp.Compiler.CodeDom, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=a19089b1c74d0809, processorArchitecture=MSIL

答案 2 :(得分:0)

取消Microsoft部分,安装到GAC后,它应该可以正常工作。他们不久前改名了。

我可以在安装(反汇编和汇编 - ildasm,gacutil fun)之后使用xsd.exe和编辑器中的C#方法(重写为F#)。谢谢:))