XSD.EXE для генерации классов F # из XSD - PullRequest
4 голосов
/ 01 декабря 2010

Я пытаюсь использовать инструмент XSD.EXE для генерации некоторых файлов классов из XSD. Есть ли что-то, что можно получить из полученных файлов - это другой вопрос, но я хотел бы посмотреть, что генерируется. Я нашел эту ссылку , которая отмечает:

Что, благодаря Люку на 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 \ Desktop \ 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, Культура = нейтральная, PublicKeyToken = a19089b1c74d0809" Microsoft (R) Xml Схемы / Типы данных утилита поддержки [Microsoft (R) .NET Framework, версия 4.0.30319.1] Авторское право (C) Microsoft Corporation. Все права защищены. Ошибка: данное имя сборки или кодовая база были недействительными. (Исключение из HRESULT: 0x80131047)

Если вам нужна дополнительная помощь, пожалуйста, введите "xsd /?".

Мысли

Ответы [ 3 ]

3 голосов
/ 05 января 2013

У меня была такая же проблема "Исключение из HRESULT: 0x80131047" - не удалось ее решить, но есть уродливый обходной путь:

  1. Создание нового консольного приложения на C #
  2. См. этот пост о том, как программно сделать то же самое, что и xsd.exe
  3. Добавить ссылку на CodeDom dll вашего F # powerpack
  4. Использовать Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider вместо CSharpCodeProvider

Потратил час на то, чтобы заставить xsd.exe работать, и мне понадобилось всего 5 минут, чтобы поднять его таким образом.

Это можно легко превратить в xsdfs.exe или что-то, что избавит людей от необходимости делать xsd.exe для использования f # кода dom:)

1 голос
/ 01 декабря 2010

Это выглядит правильно для меня.Можете ли вы дважды проверить, что сборка установлена ​​в GAC?
Вот команда, которую можно ввести в «Командная строка Visual Studio»:

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

Я получил:

FSharp.Compiler.CodeDom, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=a19089b1c74d0809, processorArchitecture=MSIL
0 голосов
/ 19 июня 2015

Оставьте часть Microsoft, и после установки в GAC она должна работать. Они поменяли имена некоторое время назад.

Я могу после установки (разобрать и собрать - ildasm, gacutil fun) использовать как xsd.exe, так и метод C # в редакторе (переписав в F #). Спасибо:)

...