为什么使用DSOFile库设置的自定义文件属性在保存后不会保留?

我目前正在开发一个AutoCAD插件,允许用户与文档版本控制应用程序进行交互,为了在远程存储库和本地机器之间同步文件,我计划使用自定义文件属性。 最初下载文件时将设置属性,然后只要文件保留在用户的本地驱动器上,就会保留该属性。 我对AutoCAD特定的解决方案并不感兴趣,因为我的插件将处理AutoCAD绘图以外的文件(文本文件,图像文件等)。 因此,我想要一个可以处理尽可能多的潜在文件类型的库。

当在C#中搜索如何实现这种事情时,我几乎立即遇到了DSOFile库。 我读到的所有内容都说它是为MS Office设计的,但它应该适用于任何文件,只要文件系统是NTFS(至少这是我的理解)。 我在文本上设置自定义属性没有问题,例如纯文本文档(.txt),AutoCAD图形(.dwg)和图像(.jpg,.tif等)。 但是,我注意到,一旦保存了这些文件,自定义属性就会被删除。 我看到自定义属性的唯一情况是在保存后保留,是在MS Office文档上。 我认为这个问题与我用来保存文件的应用程序(AutoCAD,MS Paint,记事本等)有关,但我无法100%肯定。 在我决定采用除DSOFile之外的解决方案之前,我想看看SO上是否有人对此问题有所了解。

我使用自己的代码测试并使用DSOFile附带的演示,并且两次都看到相同的结果。 保存除MS Office(Word和Excel)文档之外的任何类型的文件后,自定义属性被清除。

这是一个类似于我将用于添加新自定义属性的代码的示例…

var docProperties = new OleDocumentProperties(); docProperties.Open("myfile.txt", false, dsoFileOpenOptions.dsoOptionDefault); try { object value = "some value"; docProperties.CustomProperties.Add("MyCustomProp", ref value); } finally { docProperties.Close(true); // save and close } 

这可能为时已晚,但我已经使用了一些或Autodesk Revit RFA文件以及PDF文件,它工作正常。 但是,当RFA打开时,您无法编辑它们。

你有没有调用docProperties.Save()?