public void Read_debug_pipe()
        {
            var server = new NamedPipeServerStream("test");
            var cliet  = new NamedPipeClientStream("test");

            cliet.Connect();
            server.WaitForConnection();

            var observable = DebugPipe.Observe(cliet);
            var w          = new StreamWriter(server);

            w.AutoFlush = true;
            w.WriteLine("test");
            var result = observable.First();

            Assert.AreEqual("test", result);
        }
        public void InitApp()
        {
            foreach (var key in ConfigurationManager.AppSettings.AllKeys)
            {
                var value = ConfigurationManager.AppSettings[key];
                try {
                    var property = Config.GetType().GetField(key);
                    if (property == null)
                    {
                        continue;
                    }
                    if (property.FieldType.IsInstanceOfType(value))
                    {
                        property.SetValue(Config, value);
                    }
                    else
                    {
                        try {
                            property.SetValue(Config, Convert.ChangeType(value, property.FieldType));
                        } catch (Exception) {
                            property.SetValue(Config, TypeDescriptor.GetConverter(property.FieldType).ConvertFrom(value));
                        }
                    }
                }
                catch (Exception e) {
#if DEBUG
                    throw;
#else
                    log.Warn(String.Format("Не удалось считать параметр '{0}'='{1}'", key, value), e);
#endif
                }
            }
            if (ConfigurationManager.AppSettings["Uri"] != null)
            {
                Config.BaseUrl = new Uri(ConfigurationManager.AppSettings["Uri"]);
            }

            Config.RootDir = FileHelper.MakeRooted(Config.RootDir);
#if DEBUG
            debugPipe = new DebugPipe(Config.DebugPipeName);
#endif

            if (Directory.Exists(Config.TmpDir))
            {
                try {
                    //перемещаем лог файл обновления что отправить его на сервер
                    if (Directory.Exists(Config.BinUpdateDir))
                    {
                        Directory.GetFiles(Config.BinUpdateDir, "*.log")
                        .Each(f => File.Move(f, FileHelper.Uniq(Path.Combine(Config.RootDir, Path.GetFileName(f)))));
                    }
                } catch (Exception e) {
                    log.Warn(e);
                }
                if (!Config.Cmd.Match("import"))
                {
                    try {
                        FileHelper.DeleteDir(Config.TmpDir);
                        Directory.CreateDirectory(Config.TmpDir);
                    } catch (Exception e) {
                        log.Warn(e);
                    }
                }
            }
            else
            {
                Directory.CreateDirectory(Config.TmpDir);
            }

            Config.MultiUser = CountDb() > 1;
        }