Поделиться через


О сборке Microsoft Office InfoPath Primary Interop Assembly

Приложение Microsoft Office InfoPath 2007 представляет собой приложение объектной модели компонентов (COM), программируемые интерфейсы которого могут использоваться как для внешней автоматизации, так и в сценариях, используемых в составе шаблонов форм в качестве COM-интерфейсов. Для поддержки создания решений InfoPath, в которых используются языки управляемого кода, такие как Visual C# и Visual Basic, параметр .NET Programmability Support в программе установки Office InfoPath 2007 устанавливает три сборки взаимодействия. Сборки взаимодействия — это сборки .NET, которые служат "мостом" между управляемым и неуправляемым кодами, сопоставляя членов объекта COM эквивалентным управляемым членам .NET.

Файлы для трех сборок взаимодействия, устанавливаемых InfoPath, имеют следующие имена:

  • Microsoft.Office.Interop.InfoPath.dll

  • Microsoft.Office.Interop.InfoPath.SemiTrust.dll

  • Microsoft.Office.Interop.InfoPath.Xml.dll

В данном разделе рассматривается объектная модель, представляемая в виде сборки взаимодействия Microsoft.Office.Interop.InfoPath, которая используется исключительно для кода внешней автоматизации. Дополнительные сведения о сборке Microsoft.Office.Interop.InfoPath.SemiTrust, которая используется исключительно для написания и исполнения управляемого кода, запускаемого из шаблонов форм InfoPath (.xsn), см. в разделе InfoPath 2003 Compatible Object Models.

Важная информация об установке

По умолчанию, параметр "Стандартная установка" программы установки Office InfoPath 2007 устанавливает сборку Microsoft.Office.Interop.InfoPath в глобальном кэше сборок (GAC), содержимое которого можно просмотреть в папке C:\Windows\Assembly. Эта сборка называется "Сборка взаимодействия Microsoft Office InfoPath Primary Interop Assembly" и обычно используется совместно со сборкой Microsoft.Office.Interop.InfoPath.Xml, которая тоже уславливается в GAC для автоматизации приложения InfoPath из внешних приложений, использующих управляемый код. Дополнительные сведения о сборке Microsoft.Office.Interop.InfoPath.Xml см. в разделе О сборке InfoPath XML Interop Assembly.

Если сборка Microsoft.Office.Interop.InfoPath не видна в GAC, следует подтвердить, что система Office InfoPath 2007 была установлена корректно. Если распространяемая программа .NET Framework 1.1 или комплект разработки программного обеспечения (SDK).NET Framework 1.1 установлены перед запуском программы установки, параметру Поддержка программируемости .NET в программе установки присваивается значение Запускать с моего компьютера при стандартной установке InfoPath. Если эти сборки взаимодействия недоступны на компьютере пользователя, он должен подтвердить, что .NET Framework 1.1 установлена, затем запустить команду Установка или удаление программ из Панели управления и присвоить параметру Поддержка программируемости .NET приложения Microsoft Office InfoPath значение Запускать с моего компьютера.

Дополнительные сведения о загрузке распространяемой программы .NET Framework 1.1 см. в разделе Распространяемая программа .NET Framework 1.1.

Пространство имен Microsoft.Office.Interop.InfoPath

Хотя процесс написания управляемого кода для данной задачи в шаблоне формы InfoPath очень похож на выполнение такой же задачи программирования с помощью языка COM, такого как Microsoft Visual Basic или JScript, объектная модель, представляемая при просмотре пространства имен Microsoft.Office.Interop.InfoPath из Обозревателя объектов в Microsoft Visual Studio выглядит более сложной. Это объясняется тем, что взаимодействие с .NET Framework требует, чтобы сервер COM представлял все свои открытые интерфейсы, а также некоторые дополнительные конструкции, необходимые для самой .NET Framework. Дополнительные сведения о том, как и почему объектная модель, представляемая сборкой взаимодействия, выглядит более сложной, см. в разделе "Как объекты COM представляются в управляемом коде" главы InfoPath 2003 Compatible Object Models.

Использование IntelliSense

В примерах, рассматриваемых в данном разделе, предполагается, что ссылки на сборки Microsoft.Office.Interop.InfoPath и Microsoft.Office.Interop.InfoPath.Xml определены. Дополнительные сведения о том, как это сделать, и дополнительные примеры внешней автоматизации см. в разделе Сценарии и примеры внешней автоматизации.

Перед использованием завершения операторов Microsoft IntelliSense в коде внешней автоматизации необходимо создать объектную переменную для экземпляра класса Application как показано в следующей кодовой строке.

Application myApp = 
    new Microsoft.Office.Interop.InfoPath.Application();
Dim myApp As Application = _
    New Microsoft.Office.Interop.InfoPath.Application()

После создания объектной переменной, как только вводится имя этой переменной, оканчивающееся точкой, появляется раскрывающийся список с членами класса Application для выбора.

Для работы с формой InfoPath объявите объектную переменную типа XDocument, и инициализируйте ее, открыв эту форму из коллекции XDocuments объектной переменной Application как показано в следующей кодовой строке.

XDocument myXDoc = myApp.XDocuments.Open(
    "c:\\temp\\Form1.xml",
    (int) XdDocumentVersionMode.xdFailOnVersionOlder);
Dim myXDoc As XDocument = myApp.XDocuments.Open( _
    "c:\\temp\\Form1.xml", _
    XdDocumentVersionMode.xdFailOnVersionOlder)

Раскрывающийся список для членов класса XDocument завершения операторов IntelliSense будет отображаться всякий раз, когда вводится имя переменной, оканчивающееся точкой.

Для работы с содержимым нижележащего XML-документа для формы, использующей Microsoft XML Core Services (MSXML) 5.0 для Microsoft Office, необходимо создать переменную типа IXMLDOMDocument2, и затем использовать свойство DOM класса XDocument для присвоения формы модели объектов XML-документа (DOM) этой переменной.

IXMLDOMDocument2 doc= myXDoc.DOM as IXMLDOMDocument2;
Dim doc As IXMLDOMDocument2 = myXDoc.DOM

Раскрывающийся список для членов класса IXMLDOMDocument2 завершения операторов IntelliSense будет отображаться всякий раз, когда вводится имя переменной, оканчивающееся точкой, что позволяет использовать MSXML 5.0 для работы с XML-документом.

Использование ссылочной документации библиотеки классов

Организация ссылочной документации библиотеки классов пространства имен Microsoft.Office.Interop.InfoPath отражает взаимоотношения между интерфейсами компонентных классов и унаследованными интерфейсами, которые они реализуют. Разделы организованы так же, как ссылка объектной модели InfoPath для написания сценария, который является частью ссылки разработчика InfoPath, включаемой в Office InfoPath 2007. За исключением разделов, посвященных интерфейсам Application и XDocument, все разделы интерфейсов компонентных классов COM соответствуют эквивалентным разделам "Объект" и "Коллекция" в ссылке на сценарии InfoPath. Например, разделы "Интерфейс UIObject" и "Интерфейс WindowsCollection" ссылочной документации пространства имен Microsoft.Office.Interop.InfoPath соответствуют содержимому разделов "UI Object" и "Windows Collection" ссылки на сценарии InfoPath Object Model Reference.

Однако ссылка на членов интерфейса компонентного класса, следующая за описанием интерфейса в начале раздела, отображает пустой раздел. Чтобы отобразить список членов, реализуемых интерфейсом компонентного класса, необходимо открыть раздел для самого свежего интерфейса, наследуемого компонентным классом, и затем открыть таблицу его членов. Ссылка на унаследованный интерфейс располагается вначале раздела "Заметки" в главе, посвященной интерфейсу компонентного класса.

При нажатии клавиши F1 в редакторе кода Visual Studio поведение системы аналогично, за исключением того, что член, ради которого выполняется команда F1 Help, отображается непосредственно, поскольку чаще всего работа ведется с членами интерфейса. Однако, тот факт, что член может быть реализован из интерфейса с контролем версий, может создать неопределенность при первом его появлении. Например, если ввести команду myXDocument.UI.Alert, установить курсор на Alert и нажать F1, отобразится раздел "UI2.Alert Method". Это объясняется тем, что метод Alert является реализацией члена интерфейса UI2.

Передача необязательных параметров членам объектной модели InfoPath

Если член объектной модели InfoPath содержит необязательный параметр, и значение этого параметра не определено, необходимо передать поле Type.Missing для этого параметра. Если не произвести передачу поля Type.Missing, когда его фактическое значение опущено, это может привести к ошибке построения. То же справедливо для кода, написанного в C# или Visual Basic .NET. Например, метод SelectNodes интерфейса ViewObject включает два необязательных параметра: varEndNode и varViewContext. Кодовая строка, в которой не определены фактические значения для этих необязательных параметров, может выглядеть так, как показано в следующих примерах.

myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing);
myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing)

См. также

Концепции

Сценарии и примеры внешней автоматизации