Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2016, 15:27   #1
Obey177
Форумчанин
 
Регистрация: 29.08.2010
Сообщений: 159
По умолчанию Microsoft Sync Framework почему то не работает

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

Код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Synchronization.Files;
using Microsoft.Synchronization;
using System.IO;


namespace ActiveSync
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // Получаем путь к папке сервера
        private void serverRev_Click(object sender, EventArgs e)
        {
            var fBDialog = new FolderBrowserDialog();
            var result = fBDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                serverTb.Text = fBDialog.SelectedPath;
            }
 
        }
        // Получаем путь к папке клиента
        private void clientRev_Click(object sender, EventArgs e)
        {
            var fBDialog = new FolderBrowserDialog();
            var result = fBDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                clientTb.Text = fBDialog.SelectedPath;
            }
 
        }
        // Получаем ReplicaID
        private Guid GetReplicaID(string guidPath)
        {
            if (!File.Exists(guidPath))
            {
                Guid replicaID = Guid.NewGuid();
                using (FileStream fileStream =
                  File.Open(guidPath, FileMode.Create))
                {
                    using (StreamWriter streamWriter =
                      new StreamWriter(fileStream))
                    {

                        streamWriter.WriteLine(replicaID.ToString());
                    }
                }

                return replicaID;
            }
            else
            {
                using (FileStream fileStream =
                  File.Open(guidPath, FileMode.Open))
                {
                    using (StreamReader streamReader =
                      new StreamReader(fileStream))
                    {

                        return new Guid(streamReader.ReadLine());
                    }
                }
            }
        }
        //Получаем список содержимого в папке
        private List<string> GetFilesAndDirectories(String directory)
        {
            List<String> result = new List<String>();
            Stack<String> stack = new Stack<String>();
            stack.Push(directory);

            while (stack.Count > 0)
            {
                String temp = stack.Pop();

                try
                {
                    result.AddRange(Directory.GetFiles(temp, "*.*"));

                    foreach (string directoryName in
                      Directory.GetDirectories(temp))
                    {
                        stack.Push(directoryName);
                    }
                }
                catch
                {
                    throw new Exception("Error retrieving file or directory.");
                }
            }

            return result;
        }
        //Обработка события кнопки синхронизации
        private void btnSync_Click(object sender, EventArgs e)
        {
            string serverPath, clientPath;
            serverPath = serverTb.Text;
            clientPath = clientTb.Text;
            btnSync.Enabled = false;

            Synchronize(serverPath, clientPath);
            btnSync.Enabled = true;
        }
        //Метод синхронизации
        private void Synchronize(string sourcePath,string destinationPath)
        {
            Guid sourceReplicaID;
            Guid destinationReplicaID;
            SyncOperationStatistics syncOperationStatistics;
            sourceReplicaID = GetReplicaID(Path.Combine(sourcePath, "ReplicaID"));
            destinationReplicaID = GetReplicaID(Path.Combine(destinationPath, "ReplicaID"));

            FileSyncProvider sourceProvider = new FileSyncProvider(sourceReplicaID, sourcePath);
            FileSyncProvider destinationProvider = new FileSyncProvider(destinationReplicaID, destinationPath);

            SyncOrchestrator synchronizationAgent =new SyncOrchestrator();
            synchronizationAgent.LocalProvider = sourceProvider;
            synchronizationAgent.RemoteProvider = destinationProvider;
        }

    }
}
Ошибка на строке "FileSyncProvider sourceProvider = new FileSyncProvider(sourceReplicaID, sourcePath);"

Код:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Microsoft.Synchronization.Files.dll

Additional information: Retrieving the COM class factory for component with CLSID {031913FE-EB2A-49F2-B2BE-B996B2448CD4} failed
due to the following error: 80040154 Класс не зарегистрирован (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Последний раз редактировалось Alex11223; 09.04.2016 в 16:24.
Obey177 вне форума Ответить с цитированием
Старый 09.04.2016, 16:21   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно установить надо этот COM компонент, а не только библиотеку подключить.
Или в настройках проекта поставить Target x86 или x64 (в соответствии с используемой версией) вместо Any CPU.
https://www.google.com/search?q=Retr...utf-8&oe=utf-8

А что вы сделать пытаетесь? Зачем вам этот Sync Framework?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 09.04.2016 в 16:27.
Alex11223 вне форума Ответить с цитированием
Старый 10.04.2016, 10:36   #3
Obey177
Форумчанин
 
Регистрация: 29.08.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Наверно установить надо этот COM компонент, а не только библиотеку подключить.
Или в настройках проекта поставить Target x86 или x64 (в соответствии с используемой версией) вместо Any CPU.
https://www.google.com/search?q=Retr...utf-8&oe=utf-8

А что вы сделать пытаетесь? Зачем вам этот Sync Framework?
Все ту же синхронизацию пытаюсь, с проблемой разобрался) или есть что то лучше sync'а?
Obey177 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отсутствует Microsoft.Xna.Framework.Net keef Общие вопросы .NET 0 02.08.2013 18:57
c# и ms sync framework - отслеживание заменяемых файлов до синхронизации Vygor C# (си шарп) 1 07.06.2012 18:03
Проблема c Microsoft.NET Framework antonio69 Помощь студентам 3 09.08.2011 06:48
Почему у моего друга не работает програма скомпилированная в Microsoft Visual C++ 2005 Express Edition ? pufystyj Visual C++ 16 09.02.2011 20:50