следующий оператор msbuild Exec
<Exec Command="curl.exe -f -O --url "$(SourceURL)"">
завершается ошибкой, если SourceURL содержит пробелы.Даже если я попытаюсь
<PropertyGroup> <SourceURL>http://www.example.com/url%20with%20spaces</SourceURL> </PropertyGroup>
или даже
<PropertyGroup> <SourceURL>http://www.example.com/url&37;20with&37;20spaces</SourceURL> </PropertyGroup>
, msbuild автоматически переводит все это в пробелы (вы можете в это поверить?), А curl пытается извлечь http://www.example.com/url, что приводит кошибка 404.
http://www.example.com/url
Я не понимаю, почему.Не правильно ли я указывал аргумент URL?
[ update ] В командной строке работает следующее:
curl.exe -f -O --url "http://www.example.com/url%20with%20spaces"
, а это не так:
curl.exe -f -O --url "http://www.example.com/url with spaces"
Итак, мой вопрос сводится к следующему: как я могу предотвратить замену * 1025 в msbuild пробелами?
ураHendrik
(с использованием curl 7.21.7 (i386-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8r zlib/1.2.5 и msbuild 3.5.30729.1 в Windows 7)
curl 7.21.7 (i386-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8r zlib/1.2.5
Проблема:
%20
%2520
&37;20
%2
Итак, решение:
<PropertyGroup> <SourceURL>http://www.example.com/url%25%2520with%25%2520spaces</SourceURL> </PropertyGroup>
Aaaargh. Кто-нибудь, у кого не болит голова от такой сложной последовательности побега?
Вам также нужно экранировать знак &:
&
<SourceURL>http://www.example.com/url%2520with%2520spaces</SourceURL>