Максим Павловский
Visual Studio 2010 Professional или лучше Visual Studio 2010 SDK
Разработка в Visual Studio 2010; Из чего состоит проект расширения Visual Studio Package; Запуск и отладка в Visual Studio 2010 experimental instance; Публикация в Visual Studio Gallery.
Реализация Microsoft.VisualStudio.Shell.Package; Использование IServiceProvider для доступа к различным составляющим Visual Studio
IVsSolution; IVsStatusbar IVsOutputWindowPane; IVsWebBrowsingService; IVsToolWindowToolbarHost; etc.
private IEnumerable GetProjects(__VSEN UMPROJFLAGS flags, Guid projectGuid) { IEnumHierarchies enumHier; solution.GetProjectEnum((uint)flags, ref proje ctGuid, out enumHier); uint fetched = 1; IVsHierarchy[] hier = new IVsHierarchy[10]; while (fetched > 0) { ErrorHandler.ThrowOnFailure( enumHier.Next(10, hier, out fetched)); for (int n = 0; n < fetched; ++n) yield return hier[n]; } yield break; }
Bitmap bitmap = … IntPtr bitmapHdc = bitmap.GetHbitmap(); Object bitmapObjHdc = (Object)bitmapHdc; //Start animation int isTurnedOn = 1 statusbar.Animation(isTurnedOn, ref bitmapObjHdc); //Set progress text and progress bar value int InProgress = 1; int currentValue = 50; int Total = 100; string message = Processing; statusbar.Progress(ref statusBarId, InProgress, mess age, currentValue, total));
IVsOutputWindow output = provider.GetService(typeof( SVsOutputWindow)) as IVsOutputWindow; //Guid of your outputwindow Guid outputPaneGuid = new Guid(…); output.CreatePane(ref outputPaneGuid, Test", 1, 1); IVsOutputWindowPane pane; output.GetPane(ref outputPaneGuid, out pane); pane.Activate(); pane.OutputString(Output message);
Получение типа (asp.net, библиотека, windows service etc), языка (c#, VB) проекта; Получение свойств проекта; Получение элементов проекта (файлы, папки, классы, простанства имён и т.д.); Обработка reference assemblies проекта.
private IEnumerable GetProjectTypeGuids(Project project) { string projectTypeGuids = string.Empty; IVsHierarchy hierarchy = GetVsHierarchy(project); if (hierarchy as IVsAggregatableProject != null) (hierarchy as IVsAggregatableProject). GetAggregateProjectTypeGuids(out projectTypeGuids); if (string.IsNullOrWhiteSpace(projectTypeGuids)) return Enumerable.Empty (); return projectTypeGuids.Split(';').ToList(); }
ProjectItems items = project.ProjectItems; foreach (ProjectItem item in items){ if (item.FileCodeModel == null) continue; foreach (CodeElement element in item.FileCodeMode l.CodeElements){ if (element.Kind == vsCMElement. vsCMElementNamespace){ foreach (CodeElement elemenentN in (element as CodeNamespace).Members){ if (elemenentN.Kind == vsCMElement.vsCMElementClass) return true; } } } }
project.References.Add( ); project.References.AddProject(projectReference.SourcePr oject);
Xaps Minifier Visual Studio Gallery; m/ m/ Visual Studio SDK Reference us/library/bb aspx us/library/bb aspx VS extensibility resources ddins.aspx ddins.aspx