Я прошел через IStorage, Microsoft Compound File Spec, десериализацию ArcObjects и т. Д., Пытаясь определить версию файла .lyr.
Используя ArcObjects, я могу получить свойства Layer, источник данных, экстент и т. Д., Но свойство documentVersion в LayerFileClass всегда сообщает об «esriArcGISVersion10» в файлах слоев 9.3.
ILayerFile l = new LayerFileClass();
l.Open(fileName);
LayerFileClass t = (LayerFileClass)l;
string version = t.DocumentVersion.ToString();
Любая помощь приветствуется.
Обратите внимание на это твердое сообщение на форуме от 2007 года.
arcobjects
arcmap
valveLondon
источник
источник
Ответы:
Как только файл слоя загружен, это текущая версия, поскольку открытие обновляет его. Свойство DocumentVersion существует исключительно для установки версии для сохранения в предыдущей версии с классом LayerFile.
Фактическая версия документа не записывается в файл слоя. Единственная записанная информация о версии - это внутренняя постоянная версия объекта. Эта информация может быть извлечена через структурированное хранилище, но вам потребуется поиск номера этой версии для каждого возможного типа слоя (и вам также необходимо извлечь указатель типа слоя, чтобы даже указать тип слоя).
источник