我正在尝试从 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 并引发错误。
有人可以帮助我并解释如何解决这个问题吗?
好吧,最后我发现对脚本的修改对我有用:
$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 文件可以解决该问题