CSPack使用%20的空间对目录名进行编码

时间:2015-05-22 13:38:07

标签: azure msbuild cspack

我最近在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的循环。

在搜索可能的原因时,我注意到我的appsot中的一个目录在我的原始项目中包含一个空格,但是在编码为%20的包中。将目录名称更改为原始名称并再次更新webrole后,问题就消失了。

是否有人熟悉这个问题并且可以指出我正确的方向解决这个问题?

1 个答案:

答案 0 :(得分:0)

%20仅进入包,但在部署时不进入。您是否RDP到Cloud Service Role以检查文件夹名称是否与%20一起?因为看起来,%20只添加到包中,但在解压缩时删除。因此,重启的问题可能是其他问题。

顺便说一句,这同样适用于所有非URI字符,包括应该包含在内的Unicode字符。这是由Open Packaging Conventions强加的。