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

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

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


person Thom Puiman    schedule 22.05.2015    source источник
comment
Я вижу то же поведение, что и вы, используя новейший Azure SDK 2.6. При создании пакета cspkg с веб-ролью или рабочей ролью, в которой есть каталог с пробелом, в пакете пробел кодируется как %20. Это может быть ошибка в cspack.exe   -  person Svein Fidjestøl    schedule 01.06.2015
comment
Спасибо, что воспроизвели это! Я попытаюсь создать отчет об этом в Microsoft.   -  person Thom Puiman    schedule 01.06.2015
comment
хм, также бывает для рабочих ролей. Хотя это действительно фиктивное поведение, я действительно сомневаюсь в необходимости наличия пробела в именах папок или файлов. Говоря об этом, используя Azure с 2008 года, работая со многими клиентами и их усилиями в Azure, вы первый (кого я знаю), кто столкнулся с этой проблемой. И, наконец, сообщаемая проблема: github.com/Azure/azure- sdk-for-net/issues/1251   -  person astaykov    schedule 12.07.2015
comment
Ах здорово. К сожалению, я не нашел места, чтобы сообщить об этом. Но Github - это последнее место, которое я бы искал... Во всяком случае, я знаю, что использование пробелов не очень хорошо, но для приложения из сторонней папки требуется конкретная папка с пробелами в ее имени. Без какой-либо возможности переименовать это, так как путь вызывается внутри кода и не настраивается.   -  person Thom Puiman    schedule 13.07.2015
comment
Только что получил обратную связь. %20 входит только в пакет, но не при развертывании. Вы использовали RDP для роли облачной службы, чтобы проверить, соответствует ли имя папки% 20 или нет? Потому что кажется, что %20 только добавляется в пакет, но удаляется при распаковке. Так что ваша проблема с перезапуском может быть чем-то другим.   -  person astaykov    schedule 15.07.2015
comment
@astaykov создайте ответ с вашим объяснением, чтобы он мог отметить его и закрыть этот вопрос :)   -  person Thraka    schedule 15.07.2015


Ответы (1)


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

И, кстати, то же самое относится ко всем символам, не относящимся к URI, включая символы Unicode, которые должны быть включены в пакет. Это предписано конвенциями об открытой упаковке.

person astaykov    schedule 15.07.2015
comment
Спасибо за объяснение. Но, к сожалению, мой webrole дал сбой во время запуска с %20 в пакете. - person Thom Puiman; 16.07.2015
comment
Если у вас есть веские доказательства этого — например, журналы самой роли или скриншоты удаленного рабочего стола в экземпляре, предоставьте их, и они будут добавлены в отчет об ошибке. - person astaykov; 16.07.2015