Посмотрите на этот пример Plnkr
Переменная this
сильно отличается timesCalled
с каждым нажатием кнопки увеличивается только на 1. Ответ на мой личный вопрос:
.click( () => { } )
и
.click(function() { })
создают одинаковое количество функции при использовании в цикле, как вы можете видеть из подсчета Guid в Plnkr.
Спасибо всем за Ваши добрые предложения. Мы проверили их всех, но после внимательного рассмотрения мы решили прокрутить наше собственное с комбинацией CruiseControl, NAnt, MSBuild и MSDeploy.
Эта статья имеет некоторую большую информацию: Интегрирующийся MSBuild с CruiseControl.NET
Вот примерно, как наше решение работает:
Тогда, когда мы проверили, что все готово повыситься для жить/подготавливания, мы выполняем другой сценарий к:
Это довольно не доходило до этой стадии, но это является главным образом рабочим как очарование теперь: D
я собираюсь попытаться держать этот ответ в курсе, поскольку мы вносим изменения в наш процесс, как там, кажется, несколько подобных вопросов на SA теперь.
Я использовал Визуальный Pro Сборки в течение многих лет, Это довольно гладко и просто в использовании и начинает много стандартных операций (как те, Вы упомянули), встроил.
Я использую Марионетка , Make-файлы для создания RPMs и Бамбук , чтобы сделать это для меня. Моя система непосредственно не применяется, и я не к знакомому с миром Windows, но существуют некоторые передаваемые шаблоны.
Мой делать установку позволяет мне создавать об/мин для всего (php, освобождает, php веб-сайты, модули жемчуга, C приложения, и т.д.), которые составляют мое приложение. Это можно назвать вручную, или через Бамбук. Я передаю их об/мин в конфетку repo и марионеточные дескрипторы, удостоверяясь последнее (или корректный), версии программного обеспечения установлены в кластере.
Вы могли автоматизировать встраивающие пакеты программного обеспечения в MSI? Я думаю, что Марионетка может управлять установкой пакетов программного обеспечения и версий в Windows.
Вместо того, чтобы использовать xcopy, нам удалось использовать команду-source:dirpath с адресами UNC к серверам с msdeploy. Ключ был ignoreAcls=true и удаляющими вызовами к имени пользователя и паролю в строке msdeploy:
msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true
пример развертывает сайт с нашего диска E сервера сборки на диск D на нашем живом сервере. Существуют некоторые соображения безопасности с представлением долей или этого уровня доступа к диску на живом сервере. Мы в настоящее время изучаем использование совместно используемой папки ограниченного доступа.
Мы тогда передаем этот вывод по каналу к файлу журнала, который тогда перемещен в архив резервных копий для ссылки. Записи файла журнала, какие файлы были перемещены и когда. Продолжение примера выше с выводом передает команду по каналу:
... > E:\archive\msdeploy.log
Матрица . Кажется маленьким, простым, процедурным. Записанный в Python, так как Ruby нет - нет (почему?).
Фабрика Установки выезда (от индиго повысился). Это довольно устойчиво в том, что это может сделать. Это использует API установщика Windows. Это может, вероятно, сделать то, в чем Вы нуждаетесь.
Единственная причина, по которой Nant должен существовать, состоит в том, чтобы у вас была структура, аналогичная Ant, в которой мы можем писать задачи, используя набор языков .NET. Если вы не хотите, чтобы чистый .NET-разработчик писал собственные задачи, я не вижу причин, по которым вы не можете использовать Ant. Тот факт, что вы пишете свое приложение на языке .NET, не означает, что вам нужно использовать инструмент сборки .NET.
Я использую для этого msdeploy. Работает отлично.
О Муравье; для .NET у нас есть NAnt, и вы можете использовать его в сочетании с MSDeploy; у вас есть возможность вызвать MSDeploy из вашего Nant-скрипта.
Отредактировано: Просто чтобы прояснить ситуацию; вы можете делать все с помощью msdeploy. Использование Nant не является обязательным.