Надстройка VSTO, влияющая на режим совместимости Word и поведение автосохранения

#c# #ms-word #vsto

Вопрос:

Я разрабатываю надстройку Word VSTO. Я заметил странное поведение приложения Word, и я подозреваю, что причиной является моя надстройка. После отладки надстройки в течение некоторого времени Word начал показывать [Режим совместимости] в документах, сохраненных надстройкой в виде файлов docx, как показано на рисунке ниже. Это не документ, сохраненный как документ Word 2010, 2007 или 2003 годов, а как моя текущая версия Word, которая является 2016 годом. Документ не должен открываться в режиме совместимости.

введите описание изображения здесь

И когда я открываю Word, автоматически сохраненный документ, который обычно отображается на левой панели, внезапно начинает полностью открываться с желтой полосой, спрашивающей, хочет ли пользователь сохранить его. А для исходного документа слова [последнее сохранение пользователем] отображаются (в квадратных скобках, как указано и показано) в конце заголовка документа в строке заголовка.

введите описание изображения здесь

введите описание изображения здесь

Я подозреваю, что моя надстройка VSTO взаимодействует с приложением, чтобы вызвать такое поведение. Мой код многочислен, и я не могу сказать, какая часть может быть виновата, поэтому я могу опубликовать его с этим вопросом.

У кого-нибудь есть идея или намек на то, что здесь происходит, пожалуйста? Любая информация о том, как надстройка VSTO может сочетаться с обычным поведением приложения Word, также может оказать большую помощь в том, чтобы дать мне некоторое представление о том, откуда может возникнуть проблема.

Редактировать:

Вот как моя надстройка сохраняет документ:

 document.SaveAs2(fullFilePath, FileFormat: WdSaveFormat.wdFormatXMLDocument, LockComments: false, Password: ref missing, AddToRecentFiles: true, WritePassword: ref missing, ReadOnlyRecommended: false, EmbedTrueTypeFonts: ref missing, SaveNativePictureFormat: ref missing, SaveFormsData: ref missing, SaveAsAOCELetter: ref missing, Encoding: ref missing, InsertLineBreaks: ref missing, AllowSubstitutions: false, LineEnding: ref missing, AddBiDiMarks: ref missing, CompatibilityMode: WdCompatibilityMode.wdCurrent);

 

Я реализую эти обратные вызовы всякий раз, когда запускается надстройка:

 Application.DocumentOpen  = new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument);
            Application.DocumentBeforeClose  = Application_DocumentBeforeClose;
            Application.DocumentChange  = Application_DocumentChange;
            Application.DocumentBeforeSave  = Application_DocumentBeforeSave;
            Application.DocumentBeforePrint  = Application_DocumentBeforePrint;
            Application.WindowDeactivate  = Application_WindowDeactivate;
            Application.WindowActivate  = Application_WindowActivate;
            Application.DocumentOpen  = Application_DocumentOpen;
            ((ApplicationEvents4_Event)this.Application).NewDocument  = new ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument);
 

Я запускаю эти коды при открытии документа:

 Options options = this.Application.Options;
            if (!options.UseLocalUserInfo) options.UseLocalUserInfo = true;
            if (options.SaveNormalPrompt) options.SaveNormalPrompt = false;
            bool visibleHiddenText = Globals.ThisAddIn.Application.ActiveWindow.View.ShowHiddenText;
            if (visibleHiddenText) Globals.ThisAddIn.Application.ActiveWindow.View.ShowHiddenText = false;
 

Этот код запускается до сохранения документа:

 if (Doc.RemovePersonalInformation) Doc.RemovePersonalInformation = false;
 

Возвращаемое значение Microsoft.Office.Interol.Word.Document. CompatibilityMode равно 15.

И в дополнение ко всему этому я запускаю некоторые коды, чтобы добавить несколько пользовательских стилей и обновить некоторые изменения в галереях списков и уровнях списка ссылок для стилей заголовков.

Комментарии:

1. Приведите пример того, как вы открываете, сохраняете и закрываете документ.

2. И от какого значения возвращено Microsoft.Office.Interop.Word.Document.CompatibilityMode ?

3. @Auditive Я обновил вопросы, чтобы включить запрошенную вами информацию. Спасибо.

4. Пробовал только document.SaveAs(fullFilePath) без других аргументов?

5. @Auditive нет, я этого не пробовал. Может быть, мне стоит это проверить и посмотреть, что я получу?