Какой смысл MSBUILD/NANT, если Вы просто собираетесь написать процессуальный код? Разве Powershell не лучше?

@ Комментарий Эндрю Хенле был правильным ответом:

Да, вы делаете что-то не так: вы вызываете неопределенное поведение, вызывая не асинхронно безопасные для сигнала функции из сигнала. обработчик. В отсутствие конкретной документации, поддерживающей вызов функции, такой как список асинхронно-безопасных функций POSIX, вы действительно не можете делать какие-либо вызовы из обработчика сигнала. В сноске 188 стандарта C даже говорится: «Таким образом, обработчик сигнала в общем случае не может вызывать функции стандартной библиотеки». POSIX предоставляет список функций, которые безопасно вызывать - в POSIX. Все остальное - неопределенное поведение.

blockquote>

Ранее он дал более подробный ответ на этот вопрос здесь: https://stackoverflow.com/a/34553070/5251867

РЕДАКТИРОВАТЬ:

[ 1114] Рассматривая доступные функции, кажется, что есть два пути, которыми можно следовать.

  1. используют open, write, close, чтобы удалить файл с соответствующей информацией о сигнале, который был пойман, и обработать этот файл позже (при перезапуске приложения или из другой службы, которая контролирует это). файл изменений)
  2. используют connect, bind, send для отправки подробностей через сокет в какой-то другой процесс

Я думаю, что оба они технически IPC, поскольку оба являются средством, позволяющим другому процессу получить доступ к информации, которую там размещает обработчик сигналов. Передача этой информации другому процессу, где вы можете что-то сделать с этой информацией, кажется единственным подходящим способом продвинуться вперед.

10
задан Jack Ukleja 18 February 2009 в 01:46
поделиться

4 ответа

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

8
ответ дан 3 December 2019 в 18:02
поделиться

Проверьте PSAKE и посмотрите то, что Вы думаете.

http://www.jameskovacs.com/blog/IntroducingPsake.aspx http://powerscripting.wordpress.com/2009/01/25/episode-56-james-kovacs-talks-about-psake/ http://code.google.com/p/psake/

Экспериментируйте!Приятного отдыха! Участвуйте!

Jeffrey Snover [MSFT] архитектор партнера по управлению Windows

10
ответ дан 3 December 2019 в 18:02
поделиться

Это действительно зависит от Вашей ситуации. Если бы это было мое дело, тем не менее, и Вы использовали Visual Studio то - я сказал бы да, остался бы с MSBuild ради интеграции.

С другой стороны, я выбрал бы MSBUILD, как, в то время как задачи являются очень процедурными, он дает Вам гибкость для расширения этого процесса сборки позже для справлений с более сложными задачами.

3
ответ дан 3 December 2019 в 18:02
поделиться

msbuild поставляется с .NET. Вы должны добавить powershell к серверам / пользователи должны добавить его - по крайней мере, через Windows XP, server 2003. Это может быть или не быть проблемой в вашей среде.

Я не думаю, что процедурные задачи подходят для написания в MSBUILD просто потому, что чем короче msbuild, тем лучше, насколько я понимаю. Я мог бы использовать msbuild для их вызова, но, вероятно, напишу библиотеку расширений для их реализации.

1
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: