Я создал собственное приложение на основе Visio 2010, которое реализует внешний интерфейс рисования Visio с помощью AxMicrosoft.Office.Interop.VisOcx.Приложение отлично работает в течение многих лет с Visio 2010. Теперь я хочу использовать свое приложение с установленной Visio 2016. Оно работает практически во всем, кроме сохранения VSD-файлов на сетевые диски.Но сохранение VSD-файлов на локальном диске работает нормально.Если я хочу сохранить VSD-файл на сетевом диске, он вызывает ошибку в
Microsoft.Office.Interop.Visio.DocumentClass.SaveAs(String FileName)
Это моя среда:
Windows 10, Visual Studio 2013, .NET 4.5,C #, Viso Standard 2016.
Используются следующие библиотеки Visio:
AxInterop.Microsoft.Office.Interop.VisOcx
Библиотека типов элементов управления рисованием Microsoft Visio 16.0
Версия: 1.2.0.0
Microsoft.Office.Interop.Visio
Библиотека типов Microsoft Visio 16.0
Версия: 4.16.0.0
Microsoft.Office.Interop.VisOcx
Тип элемента управления рисованием Microsoft Visio 16.0Библиотека
Версия: 1.4.0.0
Чтобы сохранить VSD-файл в моем приложении, я использую метод AxDrawingControl.Document.SaveAs()
, но всякий раз, когда я сохраняю на сетевом диске, возникает неопределенная ошибка:
Ошибка при сохранении «конфигурации»
(Примечание: документ может быть открыт в Visio одновременно.)
Произошло исключение.
в Microsoft.Office.Interop.Visio.DocumentClass.SaveAs(String FileName)
Странно то, что документ не открывается дважды, как указано насообщение об ошибке.Я уже пробовал несколько сетевых дисков, например, общую папку на другом Windows-клиенте и Windows-сервере.Я также попробовал общую папку на Linux-сервере с помощью Samba-Service.Это не имеет никакого значения, либо я монтирую букву диска, либо использую полностью сетевой путь.Сохранение на сетевые диски не работает.Но сохранение на локальном диске работает нормально.
Вы можете воспроизвести эту ошибку независимо от моего приложения в несколько шагов с Visual Studio и установленной Visio 2013, 2016 или 2019.
- Создатьновое приложение Windows Forms в Visual Studio
- Добавьте COM Controlelement «Microsoft Visio 16.0 Drawing Control» с помощью панели инструментов
- В конце метода InitializeComponent () необходимо добавить следующееlines:
this.axDrawingControl1.Src = "C:\\temp\\OrigDoc.vsd";
var targetDocument = this.axDrawingControl1.Document;
targetDocument.SaveAs("\\\\10.1.5.45\\visio-projects\\SavedDoc.vsd");
Для выполнения необходимо добавить VSD-файл Visio с именем OrigDoc.vsd в c: / temp и изменить путь к сетевому диску в последней строке кода.В качестве сетевого диска вы можете использовать любой общий диск, например общую папку на клиенте Windows.Ошибка будет возникать после выполнения этого приложения.Если вы измените расширение файла в последней строке с SavedDoc.vsd на SavedDoc.vsdx, ошибка не произойдет.Такое поведение выглядит как ошибка в интерфейсе Microsoft Visio Microsoft.Office.Interop.Visio или Microsoft.Office.Interop.VisOcx.
Кто-нибудь имеет представление о том, как решить проблему, связанную с тем, что Visio VSD-Files может 'сохранить на сетевом диске?