我想在我的ASP.NET Core项目的postpublish
脚本中调用一个命令。该命令需要一个包含空格的参数,并包含在"
中。下面是我将运行的所需命令,这在从命令行手动运行时有效:
dotnet nswag webapi2swagger /Assembly:./path/to/assembly.dll /Output:./path/to/swagger.json /InfoTitle:"My API Name" /InfoVersion:v1
在我的project.json
中,此命令包含在JSON字符串中。为了在字符串中使用引号,我使用\
:
"dotnet nswag webapi2swagger /Assembly:%publish:OutputPath%/assembly.dll /Output:%publish:OutputPath%/docs/swagger.json /InfoTitle:\"My API\" /InfoVersion:v1"
不幸的是,虽然这会创建一个有效的JSON字符串,但在post publish上运行的命令似乎实际上解析了转义字符。因此,传递给InfoTitle
的值为\"My
而非"My API"
,就像我期望的那样。
这是一个错误吗?是否有可能以某种方式在postpublish
脚本中以不同方式转义引号以获得我期望的结果?
答案 0 :(得分:1)
我有一个类似的问题,我需要在postPublish上运行命令,但在VS2015中发布时收到消息“找不到匹配命令的命令”cmd.exe“”。
我最终要做的是在项目根目录中创建一个postPublish.cmd文件,并将其配置为在project.json中的postPublish上运行,并将发布输出文件夹传递给脚本。
"postpublish": [
"dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%",
"postPublish.cmd %publish:OutputPath%",
]
你将在postPublish.cmd脚本中拥有更多控制权,而不需要转义“path”,例如:
:: use %1 to access the temp publish folder:
rmdir /s /q "%1\wwwroot\Uploads"
:: The script will be executed at the root of your project. Testing this:
cd >> test.txt
type "project.json" >> testing2.txt