CSPack 将带有 space 的目录名称编码为 %20
CSPack encodes directory name with space to %20
我最近在 Teamcity 中设置了一个新的构建配置来为 Azure 创建一个云服务包。使用 msbuild 构建项目后,我调用 cspack.exe (Azure SDK 2.2) 来创建包。
这是我正在使用的命令:
cspack.exe "ServiceDefinition.csdef"
"/out:%Package.RelativePath%package.cspkg"
"/role:MyWebRole;%teamcity.build.checkoutDir%\t\%build.number%;bin\MyProject.Web.dll"
"/sites:MyWebRole;MyWebSite;%teamcity.build.checkoutDir%\t\%build.number%"
这创建了一个看起来正确的 cspkg。我已将此包上传到 Azure 存储并执行了 webrole 的更新。但是过了一会儿,它在执行该启动任务时显示错误。之后是重新启动 webrole 的循环。
在寻找可能的原因时,我注意到我的 approot 中的一个目录在我的原始项目中包含一个 space,但在编码为 %20 的包中。将目录名称更改为原始名称并再次更新 webrole 后,问题就消失了。
有没有人熟悉这个问题,可以指出解决这个问题的正确方向?
%20 仅进入包,但在部署时不进入。您是否 RDP 到云服务角色以检查文件夹名称是否带有 %20?因为看起来,%20 只是添加到包中,但在解压缩时被删除。所以你重启的问题可能是别的原因。
顺便说一下,这同样适用于所有非 URI 字符,包括应该放入包中的 Unicode 字符。这是由 Open Packaging Conventions.
强加的
我最近在 Teamcity 中设置了一个新的构建配置来为 Azure 创建一个云服务包。使用 msbuild 构建项目后,我调用 cspack.exe (Azure SDK 2.2) 来创建包。
这是我正在使用的命令:
cspack.exe "ServiceDefinition.csdef"
"/out:%Package.RelativePath%package.cspkg"
"/role:MyWebRole;%teamcity.build.checkoutDir%\t\%build.number%;bin\MyProject.Web.dll"
"/sites:MyWebRole;MyWebSite;%teamcity.build.checkoutDir%\t\%build.number%"
这创建了一个看起来正确的 cspkg。我已将此包上传到 Azure 存储并执行了 webrole 的更新。但是过了一会儿,它在执行该启动任务时显示错误。之后是重新启动 webrole 的循环。
在寻找可能的原因时,我注意到我的 approot 中的一个目录在我的原始项目中包含一个 space,但在编码为 %20 的包中。将目录名称更改为原始名称并再次更新 webrole 后,问题就消失了。
有没有人熟悉这个问题,可以指出解决这个问题的正确方向?
%20 仅进入包,但在部署时不进入。您是否 RDP 到云服务角色以检查文件夹名称是否带有 %20?因为看起来,%20 只是添加到包中,但在解压缩时被删除。所以你重启的问题可能是别的原因。
顺便说一下,这同样适用于所有非 URI 字符,包括应该放入包中的 Unicode 字符。这是由 Open Packaging Conventions.
强加的