void компилятор_СобытиеПроцессаКомпиляции(object Отправитель, КомпиляторПроекта.АргументыСобытияКомпилятора Аргументы)
        {
            Application.DoEvents();

            if (Аргументы.ТипСобытия == КомпиляторПроекта.ТипСобытияКомпилятора.НачалоКомпиляцииКомпонента)
            {
                ДобавитьСообщение("Сборка компонента '" + Аргументы.НазваниеКомпонента + "'...", true);
            }
            else if (Аргументы.ТипСобытия == КомпиляторПроекта.ТипСобытияКомпилятора.КонецКомпиляцииКомпонента)
            {
                индикатор.Increment(1);
                ДобавитьСообщение("Сборка компонента '" + Аргументы.НазваниеКомпонента + "' успешно завершена", true);
            }
            else if (Аргументы.ТипСобытия == КомпиляторПроекта.ТипСобытияКомпилятора.КонецКомпиляцииПроекта)
            {
                ДобавитьСообщение("Проект успешно построен", true);
            }
            else if (Аргументы.ТипСобытия == КомпиляторПроекта.ТипСобытияКомпилятора.НачалоКомпиляцииПроекта)
            {
                индикатор.Properties.Minimum = 0;
                индикатор.Properties.Maximum = компилятор.КоличествоКомпонентовПроекта;
                индикатор.Properties.Step    = 1;
            }
            else if (Аргументы.ТипСобытия == КомпиляторПроекта.ТипСобытияКомпилятора.ОшибкаКомпиляции)
            {
                ДобавитьСообщение("Не удалось выполнить сборку проекта. Ниже приведены ошибки компилятора:", true);
                if (Отправитель != null && Отправитель is КомпиляторПроекта)
                {
                    КомпиляторПроекта компилятор = Отправитель as КомпиляторПроекта;
                    int i = 0;
                    foreach (System.CodeDom.Compiler.CompilerError ошибкаКомпиляции in компилятор.СписокОшибок)
                    {
                        if (i++ == 20)
                        {
                            // выводим только 20 первых сообщений
                            ДобавитьСообщение("есть еще ошибки...", false);
                            break;
                        }
                        ДобавитьСообщение(ошибкаКомпиляции.ErrorNumber + " " + ошибкаКомпиляции.ErrorText + " " + ошибкаКомпиляции.FileName + " " + ошибкаКомпиляции.Line.ToString(), false);
                    }
                }

                Application.DoEvents();

                // в случае, если произошла ошибка, то необходимо показать форму в диалоговом режиме
                //if( показатьФормуМодальноПриОшибке  )
                //{
                this.Visible = false;
                this.ShowDialog();
                //}
            }
            Application.DoEvents();
        }
        public ФормаКомпилятора(КомпиляторПроекта Компилятор, bool ПоказыватьОкноТолькоПриОшибке)
        {
            InitializeComponent();

            if (Компилятор != null)
            {
                this.компилятор = Компилятор;

                показатьФормуМодальноПриОшибке = ПоказыватьОкноТолькоПриОшибке;

                if (!ПоказыватьОкноТолькоПриОшибке)
                {
                    Компилятор.ФормаКомпилятора = this;
                }
                // цепляемся к событию компилятора
                Компилятор.СобытиеПроцессаКомпиляции += new КомпиляторПроекта.ОбработчикСобытияКомпилятора(компилятор_СобытиеПроцессаКомпиляции);
            }

            ДобавитьСообщение("Процесс построения проекта запущен", true);
        }
    public static void ОбновитьКлиент()
    {
        ОбновлениеИсходныхКодов обновлениеИсходныхТекстов = new ОбновлениеИсходныхКодов();

        bool требуетсяОбновление = false;

        try
        {
            требуетсяОбновление = обновлениеИсходныхТекстов.ПроверитьНаОбновление(false);
        }
        catch
        {
            return;
        }

        bool необходимаКомпиляция = false;

        if (требуетсяОбновление)
        {
            необходимаКомпиляция = true;

            #region Выполнение обновления исходных текстов
            try
            {
                if (обновлениеИсходныхТекстов == null)
                {
                    return;
                }

                обновлениеИсходныхТекстов.ЗагрузитьОбновление();
            }
            catch
            {
            }
            #endregion
        }
        else
        {
            необходимаКомпиляция = false;
        }

        if (!н еобходимаКомпиляция)
        {
            // проверяем, а существуют ли необходимые библиотеки
            foreach (КомпонентСистемы компонент in Приложение.ПолучитьВсеКомпоненты())
            {
                if (!File.Exists(Path.Combine(Приложение.абочаяПапка, компонент.Имя + ".dll")))
                {
                    необходимаКомпиляция = true;
                    break;
                }
            }
        }

        // компиляция исходных текстов
        if (необходимаКомпиляция)
        {
            КомпиляторПроекта компилятор = new КомпиляторПроекта();

            if (!компилятор.ВыполнитьКомпиляцию(null))
            {
                return;
            }
        }
    }
 public ФормаКомпилятора(КомпиляторПроекта Компилятор) : this(Компилятор, false)
 {
 }