编写一个运行 xsd 的 ps 脚本,从 2 个 xsd 文件生成 C# 类

问题描述 投票:0回答:1

我正在尝试从 powershell *.ps 文件运行此命令:

c:\path\xsd /c ./schemas/A.xsd ./schemas/B.xsd

这个命令在 cli 中效果很好,但我在将其转换为 ps 脚本时遇到了麻烦:

Set-Location .
$currentLocation = Get-Location
$xsdFilePath = "$currentLocation/schemas/A.xsd $currentLocation/schemas/B.xsd"
$outputFolder = "./destination"


& "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\xsd.exe" $xsdFilePath /c /out:$outputFolder

Read-Host "Press Enter to exit"

问题是,按照我编写的方式,它只能找到 A.xsd 的正确路径,但找不到 B.xsd 并引发错误。

有人可以帮助我并解释如何解决这个问题吗?

powershell xsd
1个回答
0
投票

好吧,最后我发现对脚本的修改对我有用:

$xsdTool = "C:\Program Files (x86)\pathToxsdTool\xsd.exe"

$xsdFilePath1 = "$($currentLocation.Path)\xsd\A.xsd"
$xsdFilePath2 = "$($currentLocation.Path)\xsd\B.xsd"
$outputFolder = "$($currentLocation.Path)\destination"

& $xsdTool $xsdFilePath1 $xsdFilePath2 /c /out:$outputFolder

至于需要 2 个 xsd 源文件,这确实是一个要求。我们正在尝试集成的第三方提供了 xsd,其中一个 xsd 用于常见类型(例如枚举等),第二个 xsd 用于类。

在这种情况下,在 B.xsd 上运行 xsd 工具会导致错误,导致生成的类需要 A.xsd 中定义的类型等。按照上面的脚本运行 xsd 工具并指定 2 个 xsd 文件可以解决该问题

© www.soinside.com 2019 - 2024. All rights reserved.