Почему пользовательские свойства файла, заданные с помощью библиотеки DSOFile, не сохраняются после сохранения? - PullRequest
5 голосов
/ 17 мая 2010

В настоящее время я работаю над плагином для 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
}

1 Ответ

0 голосов
/ 20 августа 2010

Это может быть слишком поздно, но я немного использовал это или файлы Autodesk Revit RFA, а также файлы PDF, и он работает нормально. Вы не можете редактировать их, пока открыт RFA.

Вы вообще вызывали docProperties.Save ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...