Юрий Пляхин Software Engineer SSG Intel®
Необходимый инструментарий Необходимые знания Возможности расширения MS Visual Studio (MS VS) Создание и инсталляция Add-inов Использование Intel® C++ IDE Automation для автоматизации задач Создание Add-inа с использованием Automation 8/9/20122Юрий Пляхин
MS Windows 2000 SP4 и выше MS VS 2005 Standard Edition или выше 8/9/20123Юрий Пляхин
Структура и использование MS VS ООП Понимание XML C# или VB и С++ 8/9/20124Юрий Пляхин
Macros - Demo Add-ins – позже ;-) VSPackages (необходим VS SDK) - Demo Project Templates - Demo 8/9/20125Юрий Пляхин
Запускаем Visual Studio Новый проект: Other Project Types, Extensibility, 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 8/9/20126Юрий Пляхин
References AssemblyInfo.cs CommandBar.resx Connect.cs Файлы.AddIn 8/9/20127Юрий Пляхин
Поля _applicationObject _addInInstance Методы Connect() – Конструктор. Инициализация. OnConnection() – Уведомление о загрузке OnDisconnection() – Уведомление о выгрузке OnStartupComplete() – Уведомление о завершении загрузки VS OnBeginShutdown() – Уведомление о начале выгрузки VS QueryStatus() – Обновление информации о видимости комманд Exec() – Обработка вызова команды 8/9/20128Юрий Пляхин
Постройте проект Запустите VS 8/9/20129Юрий Пляхин
Добавьте MessageBox.Show(some text) в каждый метод Запустите и посмотрите порядок вызова методов 8/9/201210Юрий Пляхин
Добавление OnConnection Исполнение Exec 8/9/201211Юрий Пляхин
8/9/201212Юрий Пляхин DTE Solution Projects Project (Solution Folder) ProjectItems ProjectItem Development Tools Environment
DTE2.Solution Solution.Projects Project.ProjectItems ProjectItem.SubProject 8/9/201213Юрий Пляхин
Project Kind FullName Kind: IC++ Project: EAF909A5-FA59-4C3D FCC20D5BCF9 VC++ Project: 8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942 8/9/2012Юрий Пляхин14
Видимость QueryStatus vsCommandStatus.vsCommandStatusSupported vsCommandStatus.vsCommandStatusEnabled vsCommandStatus.vsCommandStatusInvisible DTE2.ActiveSolutionProjects Получение массива выбранных проектов (Project) 8/9/2012Юрий Пляхин15
Solution.SolutionBuild SolutionBuild Clean(WaitForCleanToFinish) Build(WaitForBuildToFinish) 8/9/2012Юрий Пляхин16
Project.ConfigurationManager ConfigurationManager.ActiveConfiguration ConfigurationName PlatformName 8/9/2012Юрий Пляхин17
VCProject, ICProject Преобразование между объектными моделями Поучить объект: Project.Object Преобразовать к требуемому типу (ICProject, VCProject) Обработка InvalidCastException 8/9/2012Юрий Пляхин18
8/9/2012Юрий Пляхин19 Кто самый внимательный ?
8/9/2012Юрий Пляхин20 Кто самый внимательный ?
8/9/2012Юрий Пляхин21 Кто самый внимательный ?
ICCollection
tool.property = type.value; Property: Optimization_2 Value type: optimizationOption Property: interproceduralOptimization Value type: interproceduralOptimization Property: useProcessorExtensions Value type: useProcessorExtensions ICProject.Save(); 8/9/2012Юрий Пляхин23
DTE2.GetObject(Name) Type: ProjectConversions Name: PrjConvert EnableUsingIntelCppCompiler(prjFullName, true) DisableUsingIntelCppCompiler(prjFullName, true) IsConvertorReady(out bConverterIsReady) 8/9/201224Юрий Пляхин
Действие по кнопке: Сконвертировать в Интел проект Установить свойства Очистить Построить 8/9/2012Юрий Пляхин25
Type: IntelSettings Name: IntelOptions PlatformsCount[0..n-1] CompilersCount[1..n] CurrentPlatformIndex CurrentCompilerIndex Compiler(index) Type: IntelCompiler Name, TargetPlatform, ExecutablePath, IncludePath, LibraryPath, DefaultOptions 8/9/2012Юрий Пляхин26
Поместить.dll и.AddIn файлы в определенное место Подправить AddIn файл, если необходимо 8/9/201227Юрий Пляхин
Модифицировать Add-in: Сменить местоположение и название кнопки Добавить изменение свойств проекта для улучшения производительности приложения Выдать окно с информацией обо всех интегрированных в VS компиляторах Intel C++ Добавить конвертацию в обратную сторону Обработка нескольких проектов одновременно Ваши идеи Написать свой Add-in, реализовав какую-либо идею 8/9/201228Юрий Пляхин