РасширениеMS Visual Studio 2005с использованиемIntel® C++ IDE Automation

Содержание

Слайд 2

План занятия

Необходимый инструментарий
Необходимые знания
Возможности расширения MS Visual Studio (MS VS)
Создание и инсталляция

План занятия Необходимый инструментарий Необходимые знания Возможности расширения MS Visual Studio (MS
Add-in’ов
Использование Intel® C++ IDE Automation для автоматизации задач
Создание Add-in’а с использованием Automation

2/4/2010

Юрий Пляхин

Слайд 3

Необходимый инструментарий
MS Windows 2000 SP4 и выше
MS VS 2005 Standard Edition или

Необходимый инструментарий MS Windows 2000 SP4 и выше MS VS 2005 Standard
выше

2/4/2010

Юрий Пляхин

Слайд 4

Необходимые знания

Структура и использование MS VS
ООП
Понимание XML
C# или VB и С++

2/4/2010

Юрий Пляхин

Необходимые знания Структура и использование MS VS ООП Понимание XML C# или

Слайд 5

Возможности расширения MS VS

Macros - Demo
Add-ins – позже ;-)
VSPackages (необходим VS SDK)

Возможности расширения MS VS Macros - Demo Add-ins – позже ;-) VSPackages
- Demo
Project Templates - Demo

2/4/2010

Юрий Пляхин

Слайд 6

Задание 1 - Создание Add-in’а

Запускаем Visual Studio
Новый проект: Other Project Types, Extensibility,

Задание 1 - Создание Add-in’а Запускаем Visual Studio Новый проект: Other Project
Visual Studio Add-in
Create Add-in using Visual C#
Microsoft Visual Studio 2005
Name, Description
Yes, create a ‘Tools’ menu item
Yes, I would like my Add-in to offer ‘About’ box information

2/4/2010

Юрий Пляхин

Слайд 7

Структура Add-in’a

References
AssemblyInfo.cs
CommandBar.resx
Connect.cs
Файлы .AddIn

2/4/2010

Юрий Пляхин

Структура Add-in’a References AssemblyInfo.cs CommandBar.resx Connect.cs Файлы .AddIn 2/4/2010 Юрий Пляхин

Слайд 8

Класс Connect

Поля
_applicationObject
_addInInstance
Методы
Connect() – Конструктор. Инициализация.
OnConnection() – Уведомление о загрузке
OnDisconnection() – Уведомление о

Класс Connect Поля _applicationObject _addInInstance Методы Connect() – Конструктор. Инициализация. OnConnection() –
выгрузке
OnStartupComplete() – Уведомление о завершении загрузки VS
OnBeginShutdown() – Уведомление о начале выгрузки VS
QueryStatus() – Обновление информации о видимости комманд
Exec() – Обработка вызова команды

2/4/2010

Юрий Пляхин

Слайд 9

Задание 2 - Запуск Add-in’a

Постройте проект
Запустите VS

2/4/2010

Юрий Пляхин

Задание 2 - Запуск Add-in’a Постройте проект Запустите VS 2/4/2010 Юрий Пляхин

Слайд 10

Задание 3 - Порядок вызова методов

Добавьте
MessageBox.Show(“some text”) в каждый метод
Запустите и посмотрите

Задание 3 - Порядок вызова методов Добавьте MessageBox.Show(“some text”) в каждый метод
порядок вызова методов

2/4/2010

Юрий Пляхин

Слайд 11

Задания 4, 5 - Menu Items

Добавление
OnConnection
Исполнение
Exec

2/4/2010

Юрий Пляхин

Задания 4, 5 - Menu Items Добавление OnConnection Исполнение Exec 2/4/2010 Юрий Пляхин

Слайд 12

MS VS Automation

2/4/2010

Юрий Пляхин

DTE

Solution

Projects

Project (Solution Folder)

ProjectItems

ProjectItem

Development Tools Environment

MS VS Automation 2/4/2010 Юрий Пляхин DTE Solution Projects Project (Solution Folder)

Слайд 13

MS VS Automation

DTE2.Solution
Solution.Projects
Project.ProjectItems
ProjectItem.SubProject

2/4/2010

Юрий Пляхин

MS VS Automation DTE2.Solution Solution.Projects Project.ProjectItems ProjectItem.SubProject 2/4/2010 Юрий Пляхин

Слайд 14

Разбор функции – получение всех сpp проектов

Project
Kind
FullName
Kind:
IC++ Project: EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9
VC++ Project: 8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942

2/4/2010

Юрий Пляхин

Разбор функции – получение всех сpp проектов Project Kind FullName Kind: IC++

Слайд 15

Задание 6 –управление видимостью

Видимость
QueryStatus
vsCommandStatus.vsCommandStatusSupported
vsCommandStatus.vsCommandStatusEnabled
vsCommandStatus.vsCommandStatusInvisible
DTE2.ActiveSolutionProjects
Получение массива выбранных проектов (Project)

2/4/2010

Юрий Пляхин

Задание 6 –управление видимостью Видимость QueryStatus vsCommandStatus.vsCommandStatusSupported vsCommandStatus.vsCommandStatusEnabled vsCommandStatus.vsCommandStatusInvisible DTE2.ActiveSolutionProjects Получение массива

Слайд 16

Задание 7 – Автоматизация построения

Solution.SolutionBuild
SolutionBuild
Clean(WaitForCleanToFinish)
Build(WaitForBuildToFinish)

2/4/2010

Юрий Пляхин

Задание 7 – Автоматизация построения Solution.SolutionBuild SolutionBuild Clean(WaitForCleanToFinish) Build(WaitForBuildToFinish) 2/4/2010 Юрий Пляхин

Слайд 17

Задание 8 – Мэнеджер конфигураций

Project.ConfigurationManager
ConfigurationManager.ActiveConfiguration
ConfigurationName
PlatformName

2/4/2010

Юрий Пляхин

Задание 8 – Мэнеджер конфигураций Project.ConfigurationManager ConfigurationManager.ActiveConfiguration ConfigurationName PlatformName 2/4/2010 Юрий Пляхин

Слайд 18

Задание 9 – управление видимостью (Intel® C++ IDE Automation - ICProjectEngine)

VCProject, ICProject
Преобразование

Задание 9 – управление видимостью (Intel® C++ IDE Automation - ICProjectEngine) VCProject,
между объектными моделями
Поучить объект: Project.Object
Преобразовать к требуемому типу (ICProject, VCProject)
Обработка InvalidCastException

2/4/2010

Юрий Пляхин

Слайд 19

Некоторые опции компилятора, выставляемые из VS

2/4/2010

Юрий Пляхин

Кто самый внимательный ?

Некоторые опции компилятора, выставляемые из VS 2/4/2010 Юрий Пляхин Кто самый внимательный ?

Слайд 20

Некоторые опции компилятора, выставляемые из VS

2/4/2010

Юрий Пляхин

Кто самый внимательный ?

Некоторые опции компилятора, выставляемые из VS 2/4/2010 Юрий Пляхин Кто самый внимательный ?

Слайд 21

Некоторые опции компилятора, выставляемые из VS (прод)

2/4/2010

Юрий Пляхин

Кто самый внимательный ?

Некоторые опции компилятора, выставляемые из VS (прод) 2/4/2010 Юрий Пляхин Кто самый внимательный ?

Слайд 22

Intel® C++ IDE Automation - ICProjectEngine

ICCollection <= ICProject.Configurations
ICConfiguration <= ICCollection.Item(cfg)
ICCollection <= ICConfiguration.Tools
CppCompilerTool
ICLinkerTool
ICPostBuildEventTool
CppCompilerTool

Intel® C++ IDE Automation - ICProjectEngine ICCollection ICConfiguration ICCollection CppCompilerTool ICLinkerTool ICPostBuildEventTool
tool = (CppCompilerTool)tools.Item("CppCmplrTool");

2/4/2010

Юрий Пляхин

Слайд 23

Задание 10 – Автоматизация настройки проекта

tool.property = type.value;
Property: Optimization_2 Value type: optimizationOption
Property: interproceduralOptimization

Задание 10 – Автоматизация настройки проекта tool.property = type.value; Property: Optimization_2 Value
Value type: interproceduralOptimization
Property: useProcessorExtensions Value type: useProcessorExtensions
ICProject.Save();

2/4/2010

Юрий Пляхин

Слайд 24

Intel® C++ IDE Automation - ICOptPkg

DTE2.GetObject(“Name”)
Type: ProjectConversions
Name: PrjConvert
EnableUsingIntelCppCompiler(prjFullName, true)
DisableUsingIntelCppCompiler(prjFullName, true)
IsConvertorReady(out bConverterIsReady)

2/4/2010

Юрий Пляхин

Intel® C++ IDE Automation - ICOptPkg DTE2.GetObject(“Name”) Type: ProjectConversions Name: PrjConvert EnableUsingIntelCppCompiler(prjFullName,

Слайд 25

Задание 11 – Автоматизация конвертации проекта

Действие по кнопке:
Сконвертировать в Интел проект
Установить свойства
Очистить
Построить

2/4/2010

Юрий

Задание 11 – Автоматизация конвертации проекта Действие по кнопке: Сконвертировать в Интел
Пляхин

Слайд 26

Intel® C++ IDE Automation - ICOptPkg

Type: IntelSettings
Name: IntelOptions
PlatformsCount [0..n-1]
CompilersCount [1..n]
CurrentPlatformIndex
CurrentCompilerIndex
Compiler(index)
Type: IntelCompiler
Name, TargetPlatform, ExecutablePath, IncludePath,

Intel® C++ IDE Automation - ICOptPkg Type: IntelSettings Name: IntelOptions PlatformsCount [0..n-1]
LibraryPath, DefaultOptions

2/4/2010

Юрий Пляхин

Слайд 27

Инсталляция Add-in’а

Поместить .dll и .AddIn файлы в определенное место
Подправить AddIn файл, если

Инсталляция Add-in’а Поместить .dll и .AddIn файлы в определенное место Подправить AddIn
необходимо

2/4/2010

Юрий Пляхин