gpt4 book ai didi

c# - Microsoft 文件同步删除源文件夹中的文件未与目标文件夹同步

转载 作者:行者123 更新时间:2023-11-30 22:06:54 26 4
gpt4 key购买 nike

我是 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();
}

最佳答案

您在每次调用时都使用 Guid.NewGuid() - 此 GUID 存储在元数据中,同步框架使用该元数据来存储有关源文件和目标文件的知识。如果您每次都提供新的 GUID,则它无法使用之前收集的元数据。

Guid.NewGuid() 替换为两个固定的 GUID(一个用于源,一个用于目标),它将开始正常工作。

也没有必要排除 *.metadata,因为根据 this MSDN article,这是框架具有的内置排除项之一。 .

关于c# - Microsoft 文件同步删除源文件夹中的文件未与目标文件夹同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com