2

我正在尝试使用 svcutil 下载 WCF 服务的元数据,但我遇到了 /directory:<> 参数的问题。我要保存到的目录中有一个空格:

C:\服务参考\记录

所以当我执行 /t:metadata 我收到以下错误:

错误:找不到目录“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\References\Logging”。验证该目录是否存在以及您是否具有读取它的适当权限。

在我看来,“服务参考”中的空间导致了这个问题。根据我对命令外壳(非常少)的理解,空格充当可执行文件的分隔符。所以我试着用胡萝卜逃离空间

服务^ 参考

并用双引号括住路径

“C:\服务参考\记录”

但这些似乎都不起作用,因为 /directory: 参数无法将它们识别为值中的有效字符。我还没有找到关于这个和 svcutil 的任何方向,所以我现在很茫然。

我可以将文件下载到临时文件夹然后移动它们,但我不希望采用这种方法。

我将不胜感激任何可以尝试解决此问题的方向。提前致谢。

-- 编辑 -- 这是我试图运行的完整命令。如果您自己尝试,则必须添加您自己的 WCF 引用,因为此引用位于内部 IP 地址上

svcutil /t:metadata http://dev.taskservices.noelnet.com/LoggingService/LoggingService.svc /d:C:\Service References\Logging\

4

1 回答 1

1

根据文档svcutil

/directory: - 创建文件的目录(默认:当前目录)(缩写:/d)

由于默认是使用当前目录,让我们更改命令的当前目录。

pushd "C:\Service References\Logging\"
svcutil /t:metadata http://dev.taskservices.noelnet.com/LoggingService/LoggingService.svc
popd

如果您不需要恢复到原始目录,您可以使用cd "C:\Service References\Logging\".

请注意,为了使其正常工作,必须使用其整个路径调用 svcutil,或者将其路径列在 PATH 环境变量中。这就是我使用其整个路径调用的意思:

cd "C:\Service References\Logging\"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\svcutil.exe" /t:metadata http://dev.taskservices.noelnet.com/LoggingService/LoggingService.svc
于 2012-12-13T21:36:03.013 回答