我目前正在开发一个用于AutoCAD的插件,它允许用户与文档版本控制应用程序进行交互,并且为了在远程存储库和本地机器之间同步文件,我计划使用自定义文件属性。这些属性将在最初下载文件时设置,然后只要文件保留在用户的本地驱动器上,这些属性就会一直存在。我对特定于AutoCAD的解决方案并不真正感兴趣,因为我的插件将处理AutoCAD图形以外的文件(文本文件、图像文件等)。因此,我想要一个能够处理尽可能多的潜在文件类型的库。
在搜索如何在C#中实现这类事情时,我几乎立即发现了DSOFile库。我读到的所有内容都说它是为MS Office设计的,但它应该适用于任何文件,只要文件系统是NTFS (至少我是这么理解的)。在纯文本文档(.txt)、AutoCAD绘图(.dwg)和图像(.jpg、.tif等)等文件上设置自定义属性没有问题。但是,我注意到,一旦保存了这些文件中的任何一个,自定义属性就会被清除。我看到自定义属性在保存后保持不变的唯一情况是在MS Office文档上。我认为这个问题与我用来保存文件的应用程序(AutoCAD、MS Paint、记事本等)有关,但我不能100%确定这一点。在我决定使用DSOFile以外的其他解决方案之前,我想看看是否有人对这个问题有一些见解。
我使用自己的代码和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
}发布于 2010-08-20 09:54:36
这可能太晚了,但我已经使用了这个或Autodesk Revit RFA文件以及PDF文件,它工作得很好。但是,当RFA处于打开状态时,您不能编辑它们。
你有没有调用过docProperties.Save()?
https://stackoverflow.com/questions/2850671
复制相似问题