C# Microsoft文件同步框架的正确选项
我需要做基本的单向文件同步从本地到远程服务器。我试着使用微软的同步框架,它工作得很好。但是,我需要两个现在无法获得的功能:C# Microsoft文件同步框架的正确选项,c#,.net,microsoft-sync-framework,C#,.net,Microsoft Sync Framework,我需要做基本的单向文件同步从本地到远程服务器。我试着使用微软的同步框架,它工作得很好。但是,我需要两个现在无法获得的功能: 如果目标上的文件已被删除,则下一次同步应从源中重新创建该文件 如果目标上的文件已更改,则下一次同步应替换源上的文件 是否可以通过使用SyncOrchestrator.Synchronize()函数中的某些选项来实现 现有代码基于MSDN文章: public static void SyncFileSystemReplicaOneWay(string sourcePath,
public static void SyncFileSystemReplicaOneWay(string sourcePath, string destinationPath)
{
FileSyncProvider sourceProvider = null;
FileSyncProvider destinationProvider = null;
try
{
sourceProvider = new FileSyncProvider(sourcePath);
destinationProvider = new FileSyncProvider(destinationPath);
var agent = new SyncOrchestrator();
agent.LocalProvider = sourceProvider;
agent.RemoteProvider = destinationProvider;
agent.Direction = SyncDirectionOrder.Upload;
var stats = agent.Synchronize();
}
finally
{
if (sourceProvider != null) sourceProvider.Dispose();
if (destinationProvider != null) destinationProvider.Dispose();
}
}
如果没有额外的代码,这两种方案都无法开箱即用 同步完成后,它会检测源中的更改并将其应用于目标 如果是您的情况,则更改是在目标上进行的,而源无法告知您删除了目标上的文件以将其包含在更改枚举中。如果修改了源上的文件,您的运气会更好,因为这会导致冲突,并使您有机会使用源上的文件覆盖目标上的删除 第二个问题也是这样
另一种方法是运行destination changes on destination,找出删除/更新了哪些文件,并从源文件中获取这些文件。如果我可以将destination folder设置为普通用户只读,这当然可以解决这两种情况。但我不能,因为目标站点的其他用户将使用相同的文件夹。