Как стать автором
Обновить

Делаем расширение StartPage для Visual Studio 2010

Время на прочтение6 мин
Количество просмотров1.6K
Добрый день.

Сегодня, установив новую «феничку» для студии захотелось попробовать самому поэкспериментировать с расширениями для студии. Строить мы будем расширение для стартовой страницы VS. Для того чтобы вообще возможно было делать расширения нужно установить Visual Studio 2010 SDK

В чистом SDK нет шаблонов проекта для создания стартовой страницы. Хотя можно вручную создать xaml страницу и заменить ее в директориях где установлена студия. Но тогда нельзя делиться своим расширением и можно ли это назвать расширением? На помощь приходит Custom Start Page Project Template Этот шаблон позволяет очень быстро и просто создавать свои собственные страницы приветствия (да еще и как).

Итак, как делать своё расширение для стартовой страницы Visual Studio 2010

Подготовка


После установки всех SDK и шаблонов проекта, создаем новый проект CustomStartPage

image

Шаблон изначально генерирует стандартные элементы стартовой страницы и новую вкладку с нашим контролом. StartPage — это файл с xaml разметкой который мы можем поменять как хотим. Проект создан с разметкой и цветовой схемой как в оригинальной VS. Вот так выглядит проект после создания и наш контрол, который мы будем наполнять тем чем хотим.

image

Разметка


В разметку MyControl.xaml пишем код разметки Rss Reader’а

<UserControl x:Class="HabrStartPageControl.MyControl"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       xmlns:vsfx="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.10.0"
       mc:Ignorable="d" d:DesignHeight="414" d:DesignWidth="690">
  <UserControl.Resources>
    <XmlDataProvider x:Key="rss" Source="http://habrahabr.ru/rss/new/" XPath="/rss/channel"/>
  </UserControl.Resources>

  <!-- Start Page controls can use VsBrushes color table resources. -->
  <Grid Background="{DynamicResource {x:Static vsfx:VsBrushes.StartPageBackgroundKey}}">
    <Border Margin="20" CornerRadius="10" BorderThickness="3" BorderBrush="{DynamicResource {x:Static vsfx:VsBrushes.StartPageSeparatorKey}}">
      <DockPanel Background="#FFFFFF" DataContext="{Binding Source={StaticResource rss}, XPath=/rss/channel/item}">        
        <Label DockPanel.Dock="Top" Content="{Binding XPath=/rss/channel/title}" FontSize="14" FontWeight="Bold"/>        
        <ListBox DockPanel.Dock="Left" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" Width="300">
          <ListBox.ItemContainerStyle>
            <Style>
              <Setter Property="Control.Padding" Value="0"></Setter>
              <Style.Triggers>
                <Trigger Property="ListBoxItem.IsSelected" Value="True">
                  <Setter Property="ListBoxItem.Background" Value="#EEEEEE"></Setter>
                </Trigger>
              </Style.Triggers>
            </Style>
          </ListBox.ItemContainerStyle>
          <ListBox.ItemTemplate>
            <DataTemplate>
              <Grid Margin="3">
                <Grid.RowDefinitions>
                  <RowDefinition></RowDefinition>
                  <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <TextBlock FontWeight="Bold" Text="{Binding XPath=title}"></TextBlock>
                <TextBlock Grid.Row="1" Foreground="#8FACBA" Text="{Binding XPath=author}"></TextBlock>
              </Grid>
            </DataTemplate>
          </ListBox.ItemTemplate>
        </ListBox>
        <Frame Source="{Binding XPath=link}"/>
      </DockPanel>
    </Border>
  </Grid>
</UserControl>

* This source code was highlighted with Source Code Highlighter.


Все очень просто. Декларативно размечаем кто и что будет показывать.
На этом программирование заканчивается. И мы видим уже готовый элемент управления, прямо в окошке редактирования разметки.

image

После установки VS SDK этот проект будет запускаться и устанавливаться в специальной версии VS – «Экспериментальный экземпляр». После того, как мы проверили все настройки и все установки — снять галочку “Deploy VSIX content to experimental instance for debugging” и после этого собранное расширение будет устанавливаться уже в рабочую VS.

image

Установка


Сохранив настройки и собрав версии проекта, можем смело ее установить. На выходе проект компилируется в расширение Visual Studio HabrStartPage.vsix. Установив расширение мы получим возможность наслаждаться новыми статьями хабра прямо с главной страницы VS. Для того, чтобы заменить StartPage после установки на нашу страницу, нужно в настройках изменить страницу вот так

image

И получим довольно симпатичный РСС ридер, с возможностью посмотреть статью прямо на странице VS.

image

А после установки наше расширение появится в списках расширений.

image

Заключение


Целью этой статьи было показать как просто делать свои расширения для Visual Studio 2010. На стартовую страницу можно повесить все что хочешь, а можно просто перекрасить страницу. В интернете полно маленьких и не сложные, а также больших и серьезных дополнений для VS. Теперь мы умеем делать это сами.

Расширение можно скачать с Visual Studio Gallery

Visual Studio 2010 SDK
Custom Start Page Project Template
Теги:
Хабы:
+19
Комментарии2

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн