2014-04-24 46 views
0

我是Sync Framework的新手,我想我在這裏錯過了一些重要和基本的東西。微軟文件同步刪除源文件夾中的好友未與目標文件夾同步

我在網絡上有一個源文件夾和目標文件夾。我試圖只用一種方法同步這兩個文件夾,來源→的目的地。

一切運作良好,除了當我刪除源文件夾中的一些文件,在下一次同步我希望這些文件被刪除在目的地,但是這不會發生。

我的代碼片段:

private void SyncronizeFolders(string source, string destination) 
{ 
    FileSyncOptions options = FileSyncOptions.ExplicitDetectChanges | 
          FileSyncOptions.RecycleDeletedFiles | FileSyncOptions.RecyclePreviousFileOnUpdates | 
          FileSyncOptions.RecycleConflictLoserFiles; 
    FileSyncScopeFilter filter = new FileSyncScopeFilter(); 
    filter.FileNameExcludes.Add("*.metadata"); 

    // Create file system provider 
    FileSyncProvider sourceprovider = new FileSyncProvider(Guid.NewGuid(), _sourcefolder, filter, options); 
    FileSyncProvider destinationprovider = new FileSyncProvider(Guid.NewGuid(), _destinationfolder, filter, options); 

    sourceprovider.Configuration.ConflictResolutionPolicy = ConflictResolutionPolicy.SourceWins; 
    destinationprovider.Configuration.ConflictResolutionPolicy = ConflictResolutionPolicy.SourceWins; 

    // Ask providers to detect changes 
    sourceprovider.DetectChanges(); 
    destinationprovider.DetectChanges(); 

    // Synchronization of 2 Folders 
    SyncOrchestrator agent = new SyncOrchestrator(); 
    agent.LocalProvider = sourceprovider; 
    agent.RemoteProvider = destinationprovider; 
    agent.Direction = SyncDirectionOrder.Upload; 
    agent.Synchronize(); 
} 
+0

總是包含主要語言的標籤(沒有版本),或者您的問題不會引起大多數回答該語言問題的人的注意。 –

+0

當然。我會從下次開始。這是我第一次在這個網站發帖,感謝您的建議 – user3570552

+0

我有完全相同的問題,你有沒有想過這個? –

回答

1

您使用Guid.NewGuid()每次調用 - 此GUID存儲在同步框架使用存儲有關的源文件和目標文件其知識的元數據。如果您每次都提供一個新的GUID,則它不能使用先前收集的元數據。

用兩個固定的GUID(一個用於源,一個用於目的地)替換Guid.NewGuid(),它將開始正常工作。

也不必排除*.metadata,因爲根據this MSDN article,這是框架內置的排除項之一。

相關問題