2016-02-08 1 views
1

Im пытается отправить http-запрос на «новую реликвию» с помощью кнопки «Опубликовать» в Visual Studio.MSBuild код ошибки 9009 при попытке отправить http-запрос с использованием curl

В моем профиле публикации я выбираю «развертывание в Интернете», а затем финскую настройку. После этого я пойду к моему «.pubxml» -файла и добавить цель в нижней части:

<Target Name="AfterBuild"> 
<Exec Command="curl -H &quot;x-api-key:mykey&quot; 
-d &quot;deployment[application_id]=appId&quot; 
-d &quot;deployment[description]=MSbuild deploy using curl&quot; 
-d &quot;deployment[revision]=0&quot; 
-d &quot;deployment[changelog]=Deployed using MSBuild&quot; 
-d &quot;deployment[user]=User&quot; 
-d http://api.newrelic.com/deployments.xml"/>  
</Target> 
</project> 

В списке ошибок в визуальной студии я получаю это:

Severity Code Description Project File Line Suppression State Error The command 
"curl 
-H "x-api-key:APPKEY" 
-d "deployment[application_id]=APPID" 
-d "deployment[description]=MSbuild deploy using curl" 
-d "deployment[revision]=1" 
-d "deployment[changelog]=Deployed using MSBuild" 
-d "deployment[user]=User" 
http://api.newrelic.com/deployments.xml" 
exited with code 9009 

If Я запускаю команду curl в curl.exe, она работает (сообщение успешно завершается), но не во время msbuild.

Как вы можете видеть выше, есть кавычки, все принимают URL, (попробовали что также)

Я попытался указать путь к скручиванию, как этот

&quot;C:\WINDOWS\system32\curl.exe&quot; 

но этого doesent работы Eather.

Я удалил «ItemGroup», так как я не хочу, чтобы веб-конфигурации для включения (Установили в buildaction на «нет» на веб-конфигурации)

Что я могу попробовать?

Обновлено

<Target Name="AfterBuild"> and <Message Text="Test"/>.. 

Это runns успешно, но я не могу видеть текст "Test" на выходе сборки.

<Target Name="AfterBuild"> 
<Exec WorkingDirectory="C:\Windows\System32\" Command="curl http://www.google.com"/> 

Это возвращает ошибку 9009.

Доказательство того, что его в правильном каталоге:

enter image description here

+0

* Я получаю ошибку 9009, которая исходит от curl.exe * Вы уверены? см. http://stackoverflow.com/questions/1351830/what-does-exited-with-code-9009-mean-during-this-build – stijn

+0

Привет, я обновил свой вопрос еще немного. Да, я испробовал исправления пути. Ну, я не уверен в curl.exe. Я могу открыть cmd> введите «curl» и нажмите клавишу ввода> введите код выше. Тогда все работает. Я думаю, что msbuild can not find curl подумал, что он существует на физическом пути «C: \ Windows \ System32 \ curl.exe» – Hannes

+0

Что делать, если вы удалите новые строки из этой команды? – stijn

ответ

0

При попытке воспроизвести вашу проблему, я попробовал несколько вещей (бег локонов , запускающий 64-битный завиток, работающий, когда он находится в PATH, работает с указанием полного пути, запускает исполняемый файл из system32 diretory), но одно, что я не пробовал из принципа копирует завиток в каталог system32: это почти никогда не является правильным решением проблемы, по целому ряду причин, которые можно найти в Интернете. И да, сегодня мы нашли еще одну причину, почему это плохо:] Exec задача

MsBuild работает путем создания временного файла, включая Command для запуска, а затем запуск cmd.exe /q /c <path/to/tempfile>. Задача не только запускает cmd.exe, но и задает полный путь, добавив ее с Environment.GetFolderPath(Environment.SpecialFolder.System). Что возвращает C:\windows\SysWOW64 или подобное при вызове из 32-битного процесса (т. Е. Msbuild) в 64-битной системе.

В результате msbuild запускает 32-бит cmd из C:\windows\SysWOW64\cmd.exe. Будучи 32-битным процессом, вызывается file system redirection: если вы скажете 32-битный процесс для поиска в c: \ windows \ system32, он этого не сделает, но посмотрите в c: \ windows \ SysWOW64. И curl.exe не существует, так как вы положили его в system32. И вы получите код 9009.

Короче говоря: будьте хорошим гражданином Windows и не ставьте curl.exe в sSystem32 или SysWOW64, а затем либо укажите полный путь к нему при использовании Exec, либо добавьте каталог, в котором он находится, к вашему PATH.

+0

Как вы поживаете? Спасибо огромное! – Hannes

Смежные вопросы