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


Знакомство с объектом BuildManager

Объект BuildManager применяется сторонними разработчиками для управления переносимыми исполняемыми файлами (PE), созданными при запуске пользовательских инструментов.Файлы PE компилируются из пользовательских инструментов, которые указывают системе, что выходные данные нужно скомпилировать во временный файл PE.

Объект BuildManager и пользовательские инструменты используются при разработке конструкторов.В Visual Studio конструктор предоставляет графический пользовательский интерфейс для файла.Чтобы создать пользовательский интерфейс, конструктор должен создать экземпляры типов, описанных в файлах элементов проекта.Временные PE из пользовательских инструментов являются файлами сборки, которые инкапсулируют типы, описанные в элементах проекта, являющихся выходными данными пользовательского инструмента.Поэтому конструкторы и пользовательские инструменты часто используются вместе для создания пользовательского интерфейса во время разработки.В качестве примера можно назвать пользовательский инструмент, создающий классы из XSD-файла.Для наглядных конструкторов иногда требуется создание экземпляров созданных классов, чтобы определить, какие данные содержатся в наборе данных и предоставить пользовательский интерфейс для поддержки различных функций разработки, таких как привязка к источникам данных.

Пользовательские инструменты

Пользовательский инструмент в качестве входных данных берет содержимое файла элемента проекта и создает новый файл элемента проекта, который при необходимости можно откомпилировать позже.Типичной последовательностью событий является следующая:

  1. Пользователь или разработчик задает свойство CustomTool элемента проекта.

  2. Пользовательский инструмент в качестве входных данных получает содержимое элемента проекта.Если пользовательский инструмент не опознает входные данные, то пользователь получает сообщения об ошибках, определенные пользовательским инструментом.Дополнительные сведения см. в разделе RunCustomTool.

  3. Вместе со ссылками проекта выходные данные пользовательского инструмента компилируются в переносимый исполняемый файл, также называемый временным PE.

    ПримечаниеПримечание

    Выходные данные компилируются во временный PE только в том случае, если пользовательский инструмент зарегистрирован со значением реестра GeneratesDesignTimeOutput, заданным как 1.

  4. Описание PE можно получить, вызвав метод BuildDesignTimeOutput объекта BuildManager.

    Выходные данные возвращаются методом BuildDesignTimeOutput следующим образом:

    <root>
        <Application private_binpath="full output path to temporary PE,
    excluding the name"/>
        <Assembly
            codebase = "filename of the temporary PE, e.g., sample.dll""
            name = "name of the temporary PE == filename without the 
    extension, e.g., "sample""
            version = "always "0.0.0.0""
            snapshot_id = "unique ID number" 
            replaceable = "currently unused; always set to "True""
        />
    </root>
    

Объект BuildManager

Объект BuildManager предоставляет доступ к временным PE.Свойство DesignTimeOutputMonikers является массивом всех специальных имен PE в проекте.Система проекта присваивает специальные имена PE на основе иерархии проекта.Например, при наличии файла конструктора XML с именем SomeData.xsd в Folder1, которая находится в Project1, создававшего выходные данные SomeData.cs, специальным именем будет Project1\Folder1\SomeData.cs.Метод BuildDesignTimeOutput берет специальное имя как параметр и возвращает описание PE в строке XML.

Событие DesignTimeOutputDeleted объекта BuildManagerEventsClass вызывается при удалении из проекта элемента проекта, создающего переносимый исполняемый файл.Событие DesignTimeOutputDirty вызывается при запуске пользовательского инструмента, создающего временный PE.Все генераторы одиночных файлов запускаются в следующих случаях:

  • Проект открывается немедленно после обновления.

  • Изменено корневое пространство имен.

Индивидуальные генераторы одиночных файлов запускаются в следующих случаях:

  • Сохраняется документ с генератором одиночных файлов (например, набором данных).

  • Документ с генератором одиночных файлов открыт и изменен, пользователь переключается в другой документ в Visual Studio.

  • Файл в проекте с генератором одиночных файлов переименован или перемещен.

  • Пользователь переименовал тип, использующийся в выходном файле генератора.Например, если пользователь вызовет символическое переименование для типа "Type", а идентификатор этого типа используется в файле dataset1.vb (выходном файле набора данных), то генератор одиночных файлов запускается после переименования.

Щелкните ссылку в следующей таблице для демонстрации использования объекта BuildManager.

Целевой тип

См.

Отображение специальных имен временных файлов PE и отслеживание событий BuildManagerEvents.

Практическое руководство. Использование объектов BuildManager и BuildManagerEvents

8f9kffa8.collapse_all(ru-ru,VS.110).gifСторонние поставщики

Для доступа к функциям объекта BuildManager можно использовать интерфейс ITypeResolutionService.Однако если сторонним разработчикам нужно получить всеобъемлющий конструктор, то следует использовать методы DesignTimeOutputMonikers и BuildDesignTimeOutput.Дополнительные сведения см. в разделе Область автоматизации Visual Studio.