You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本调用xsd.exe生成C#类时B.xsd路径错误求助

问题修复与原因解释

错误原因

你脚本里的$xsdFilePath将两个XSD文件路径拼接成了单个字符串,PowerShell会把这个完整字符串作为一个参数传递给xsd.exe。而xsd.exe会把这个带空格的字符串当作一个文件路径去查找,自然找不到对应的文件(实际是两个独立文件,但被当成了一个),因此抛出找不到B.xsd的错误。

修复后的脚本

方案1:用数组存储多文件路径(推荐)

$currentLocation = Get-Location
# 用数组存储两个独立的XSD文件路径
$xsdFilePaths = @(
    Join-Path $currentLocation "schemas/A.xsd",
    Join-Path $currentLocation "schemas/B.xsd"
)
$outputFolder = "./destination"

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

Read-Host "Press Enter to exit"

方案2:直接传递独立参数

$currentLocation = Get-Location
$outputFolder = "./destination"

& "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\xsd.exe" `
    (Join-Path $currentLocation "schemas/A.xsd") `
    (Join-Path $currentLocation "schemas/B.xsd") `
    /c /out:$outputFolder

Read-Host "Press Enter to exit"

修复逻辑说明

  1. PowerShell中,数组作为参数传递给外部命令时,会自动将数组的每个元素拆分为独立的命令行参数,这和你原始CLI命令中传递两个文件路径的逻辑一致。
  2. 使用Join-Path拼接路径比直接字符串拼接更可靠,它会自动处理Windows下的路径分隔符(\),避免出现路径格式错误。

内容的提问来源于stack exchange,提问作者Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:12:36