CSPack кодирует имя каталога с пробелом в%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 и выполнил обновление веб-роли. Но через некоторое время он показывает ошибку при выполнении задач запуска. После этого начинается цикл перезапуска веб-ролика.

При поиске возможной причины я заметил, что один из каталогов в моем подходе содержит пробел в моем исходном проекте, но в пакете, закодированном в%20. После изменения имени каталога на исходное имя и обновления веб-роли снова проблемы исчезли.

Кто-нибудь знаком с этой проблемой и может указать мне правильное направление для решения этой проблемы?

1 ответ

Решение

%20 входит только в пакет, но не при развертывании. Вы обратились к роли облачной службы, чтобы проверить, соответствует ли имя папки%20 или нет? Кажется, что%20 только добавляется в пакет, но удаляется при распаковке. Так что ваша проблема с перезапуском может быть чем-то другим.

И, кстати, то же самое относится ко всем не-URI-символам, включая символы Юникода, которые должны входить в пакет. Который наложен Соглашениями Открытой Упаковки.

Другие вопросы по тегам