<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Where did the time go? - Visual Studio 2010</title>
    <link>http://blog.j-maxx.net/</link>
    <description>Brain Powered</description>
    <language>en-us</language>
    <copyright>Jeff Klawiter</copyright>
    <lastBuildDate>Fri, 06 Nov 2009 03:05:51 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>Jeff.Klawiter@sierra-bravo.com</managingEditor>
    <webMaster>Jeff.Klawiter@sierra-bravo.com</webMaster>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=271a5c52-c34c-40e4-a3e4-b05ab8d7669e</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,271a5c52-c34c-40e4-a3e4-b05ab8d7669e.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,271a5c52-c34c-40e4-a3e4-b05ab8d7669e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=271a5c52-c34c-40e4-a3e4-b05ab8d7669e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I went to create my first new website with Visual Studio 2010 the other day and was
quite surprised with what I found. 
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_14.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_6.png" width="943" height="586" />
          </a>
        </p>
        <p>
In all versions prior to 2010 a new website would just get you a Default.aspx and
the corresponding language codebehind file. This changes quite a bit with 2010. You
actually will now be presented with a full website ready to go. Complete with a Master
page, account login and more.
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb.png" width="307" height="589" />
          </a>
        </p>
        <p>
Digging in Further yields some nice little nuggets. First off the Site.Master isn’t
just a blank master page with a ContentPlaceHolder. It actually contains a relatively
decent CSS layout with LoginView and Menu controls.
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_4.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_1.png" width="956" height="765" />
          </a>
        </p>
        <p>
Along with the Site.Master the site comes with Default.aspx, About.aspx and an entire
directory dedicated to authentication. The Account directory is set up to handle all
the most common authentication scenarios: Login, Register and Password Recovery. Furthermore
these pages include actual code in the codebehind.
</p>
        <p>
One thing however that it is missing is the database to authenticate with. If you
are planning to use your own membership provider or an external database you just
need to set it up in the web.config. If you’d like to just use an sqlexpress database
you can use the ASP.NET Website Administration Tool to do this for you. This tool
was added in .NET 2.0 and the current version doesn’t seem to have changed much. To
generate the ASPNETDB.MDF SQLExpress database. Just click on the Tool and World icon
in the Solution Explorer.
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_6.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_2.png" width="250" height="121" />
          </a>
          <br />
Another way to access this tool is via the ASP.NET Configuration command under the
Website menu.
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_10.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_4.png" width="892" height="730" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
The best way to have it set up the database is to click on the “Use the security Setup
Wizard..” link. This will take you through setting up the database, roles, users and
locked down directories.
</p>
        <p>
Beyond the account code the site comes with jQuery 1.3.2, it’s minified version and
the Visual Studio Intellisense file. Unfortunately the jQuery files are not referenced
by default in the master page or any of the other pages. I would have loved to have
either an example usage or at least a reference to the file. To add jQuery it’s just
a simple addition to the master file. After that just force VS to update its javascript
intellisense using Ctrl+Shift+j
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_12.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_5.png" width="1157" height="348" />
          </a>
        </p>
        <p>
Rarely do I start out a website this way these days, most my sites I start are powered
by one CMS or another. Besides those times I’ve been trying to use ASP.NET MVC more
these days. I still use the default webforms site when I need to get something up
and running quick with some basic data controls. I recently did a website for planning
a family reunion. I could have saved myself a half an hour or so getting just the
base of the site set up. 
</p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=271a5c52-c34c-40e4-a3e4-b05ab8d7669e" />
      </body>
      <title>VS2010 New Website Template Updates</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,271a5c52-c34c-40e4-a3e4-b05ab8d7669e.aspx</guid>
      <link>http://blog.j-maxx.net/2009/11/06/VS2010NewWebsiteTemplateUpdates.aspx</link>
      <pubDate>Fri, 06 Nov 2009 03:05:51 GMT</pubDate>
      <description>&lt;p&gt;
I went to create my first new website with Visual Studio 2010 the other day and was
quite surprised with what I found. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_6.png" width="943" height="586" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In all versions prior to 2010 a new website would just get you a Default.aspx and
the corresponding language codebehind file. This changes quite a bit with 2010. You
actually will now be presented with a full website ready to go. Complete with a Master
page, account login and more.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb.png" width="307" height="589" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Digging in Further yields some nice little nuggets. First off the Site.Master isn’t
just a blank master page with a ContentPlaceHolder. It actually contains a relatively
decent CSS layout with LoginView and Menu controls.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_1.png" width="956" height="765" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Along with the Site.Master the site comes with Default.aspx, About.aspx and an entire
directory dedicated to authentication. The Account directory is set up to handle all
the most common authentication scenarios: Login, Register and Password Recovery. Furthermore
these pages include actual code in the codebehind.
&lt;/p&gt;
&lt;p&gt;
One thing however that it is missing is the database to authenticate with. If you
are planning to use your own membership provider or an external database you just
need to set it up in the web.config. If you’d like to just use an sqlexpress database
you can use the ASP.NET Website Administration Tool to do this for you. This tool
was added in .NET 2.0 and the current version doesn’t seem to have changed much. To
generate the ASPNETDB.MDF SQLExpress database. Just click on the Tool and World icon
in the Solution Explorer.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_2.png" width="250" height="121" /&gt;&lt;/a&gt; 
&lt;br /&gt;
Another way to access this tool is via the ASP.NET Configuration command under the
Website menu.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_4.png" width="892" height="730" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The best way to have it set up the database is to click on the “Use the security Setup
Wizard..” link. This will take you through setting up the database, roles, users and
locked down directories.
&lt;/p&gt;
&lt;p&gt;
Beyond the account code the site comes with jQuery 1.3.2, it’s minified version and
the Visual Studio Intellisense file. Unfortunately the jQuery files are not referenced
by default in the master page or any of the other pages. I would have loved to have
either an example usage or at least a reference to the file. To add jQuery it’s just
a simple addition to the master file. After that just force VS to update its javascript
intellisense using Ctrl+Shift+j
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/VS2010NewWebsiteTemplateUpdates_12877/image_thumb_5.png" width="1157" height="348" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Rarely do I start out a website this way these days, most my sites I start are powered
by one CMS or another. Besides those times I’ve been trying to use ASP.NET MVC more
these days. I still use the default webforms site when I need to get something up
and running quick with some basic data controls. I recently did a website for planning
a family reunion. I could have saved myself a half an hour or so getting just the
base of the site set up. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=271a5c52-c34c-40e4-a3e4-b05ab8d7669e" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,271a5c52-c34c-40e4-a3e4-b05ab8d7669e.aspx</comments>
      <category>ASP.NET</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=8338593d-c072-440d-b928-314e7de18cc4</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8338593d-c072-440d-b928-314e7de18cc4</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For a few months now I’ve been working on a VS2010 extension I’m calling Funky Search.
It’s basic intent is to bring tag based search and replace functionality to Visual
Studio. My first order of business when creating this extension was the need for an
HTML Parsing Engine. I had used <a title="HTML Agility Pack Codeplex" href="http://htmlagilitypack.codeplex.com" target="_blank">HTML
Agility Pack</a> (HAP from now on) in the past. One downside of it is that it uses
XPATH for querying the HTML. While in it’s day XPATH was a decent solution for searching
XML structures, there are better searching solutions available today namely LINQ. 
</p>
        <p>
I set out and updated HAP to have all of it’s Node and Attribute collections to inherit
from IList&lt;T&gt; instead of implementing their own Enumerators. I then added many
helper methods to mimic LINQ to XML. With this I could now work on creating dynamic
LINQ statements to power my extension. 
</p>
        <p>
While working on this I got into the community of people using HAP and I came across
a larger issue, it had not been updated in years and the creator and other developer
on the project had seemed to abandon it. I sent many emails to the creator Simon Mourier
(former MS employee, and current CTO of SoftFluent) over the summer with no reply.
I finally found his work email and discovered he was on vacation until early September.
I was finally able to get in contact with him today and he added me as a developer
on the project. 
</p>
        <p>
This will mark the first time in about 5 years I’m a developer on an open source project.
Before coming to Sierra Bravo I was huge into open source, also at that time MS had
no free versions of Visual Studio. I was working as a PHP developer and had contributed
to some small projects and even worked on part of the Mozilla project adding in an
easier way to code-sign your Mozilla/Firefox extensions.
</p>
        <p>
I’m looking forward to advancing HAP, fixing bugs and making it easier to use. It
sits in a unique position as being the only freely available HTML parser that works.
While it can be used for dubious purposes as a page scraper it can also be used for
good. I’ve used it in the past where we had a client that had their hosting provider
go out of business, their site was going to only be up for another day and we had
no direct access to their database server. We had FTP access to get the code of the
site and access to a readonly front end that displayed the contents of the tables
in html with no export functionality. I wrote a scraper with HAP to get those tables
and put them into an importable format. With it I was able to download and import
their database and save their site. 
</p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=8338593d-c072-440d-b928-314e7de18cc4" />
      </body>
      <title>HTML Agility Pack - Contributor</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</guid>
      <link>http://blog.j-maxx.net/2009/09/15/HTMLAgilityPackContributor.aspx</link>
      <pubDate>Tue, 15 Sep 2009 16:02:42 GMT</pubDate>
      <description>&lt;p&gt;
For a few months now I’ve been working on a VS2010 extension I’m calling Funky Search.
It’s basic intent is to bring tag based search and replace functionality to Visual
Studio. My first order of business when creating this extension was the need for an
HTML Parsing Engine. I had used &lt;a title="HTML Agility Pack Codeplex" href="http://htmlagilitypack.codeplex.com" target="_blank"&gt;HTML
Agility Pack&lt;/a&gt; (HAP from now on) in the past. One downside of it is that it uses
XPATH for querying the HTML. While in it’s day XPATH was a decent solution for searching
XML structures, there are better searching solutions available today namely LINQ. 
&lt;/p&gt;
&lt;p&gt;
I set out and updated HAP to have all of it’s Node and Attribute collections to inherit
from IList&amp;lt;T&amp;gt; instead of implementing their own Enumerators. I then added many
helper methods to mimic LINQ to XML. With this I could now work on creating dynamic
LINQ statements to power my extension. 
&lt;/p&gt;
&lt;p&gt;
While working on this I got into the community of people using HAP and I came across
a larger issue, it had not been updated in years and the creator and other developer
on the project had seemed to abandon it. I sent many emails to the creator Simon Mourier
(former MS employee, and current CTO of SoftFluent) over the summer with no reply.
I finally found his work email and discovered he was on vacation until early September.
I was finally able to get in contact with him today and he added me as a developer
on the project. 
&lt;/p&gt;
&lt;p&gt;
This will mark the first time in about 5 years I’m a developer on an open source project.
Before coming to Sierra Bravo I was huge into open source, also at that time MS had
no free versions of Visual Studio. I was working as a PHP developer and had contributed
to some small projects and even worked on part of the Mozilla project adding in an
easier way to code-sign your Mozilla/Firefox extensions.
&lt;/p&gt;
&lt;p&gt;
I’m looking forward to advancing HAP, fixing bugs and making it easier to use. It
sits in a unique position as being the only freely available HTML parser that works.
While it can be used for dubious purposes as a page scraper it can also be used for
good. I’ve used it in the past where we had a client that had their hosting provider
go out of business, their site was going to only be up for another day and we had
no direct access to their database server. We had FTP access to get the code of the
site and access to a readonly front end that displayed the contents of the tables
in html with no export functionality. I wrote a scraper with HAP to get those tables
and put them into an importable format. With it I was able to download and import
their database and save their site. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=8338593d-c072-440d-b928-314e7de18cc4" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</comments>
      <category>CodePlex</category>
      <category>Html Agility Pack</category>
      <category>LINQ</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=d21ed9cd-84fe-4ef2-bcb7-434ea08e463d</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,d21ed9cd-84fe-4ef2-bcb7-434ea08e463d.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,d21ed9cd-84fe-4ef2-bcb7-434ea08e463d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d21ed9cd-84fe-4ef2-bcb7-434ea08e463d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I searched far and wide and was unable to find a good quick tutorial on getting 
a Visual Studio 2010 extension up and running. There are a few things wrong in the
verbiage used that can be quite confusing. 
</p>
        <h2>Obtaining the VS 2010 Beta 1 SDK
</h2>
        <p>
The first order of business is to get the Visual Studio 2010 Beta 1 SDK, which will
add the new templates for creating an extension. 
</p>
        <p>
          <a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;displaylang=en</a>
        </p>
        <p>
After downloading it and trying to install it you may run across an uncaught exception
(like I did) 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkerror_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UnHandled Exception VS 2010 SDK Installer" border="0" alt="UnHandled Exception VS 2010 SDK Installer" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkerror_thumb.jpg" width="730" height="539" /></a></p>
        <p>
        </p>
        <p>
The error lies in the Bootstrapper (setup.exe). Since the VsSDK_sfx.exe is a self-extracting
zip archive you can use your favorite unzipping utility to get the contents. (or you
can take the hard way and get the files in your temp folder after it’s been unzipped).
I prefer to use WinRar, it makes it extremely easy 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010unzipsdk_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Extracting VSSDK To Folder" border="0" alt="Extracting VSSDK To Folder" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010unzipsdk_thumb.jpg" width="808" height="609" /></a></p>
        <p>
After this there are only 5 files extracting. 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkunzipped_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VS SDK Unzipped" border="0" alt="VS SDK Unzipped" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkunzipped_thumb.jpg" width="805" height="253" /></a></p>
        <p>
        </p>
        <p>
We only care about 2 of them. vssdk.cab and vssdk.msi. 
<br />
Launch the <strong>vssdk.msi</strong> . This is the main installer for the SDK. It
gives little feedback and will auto close when it’s done installing. 
</p>
        <h2>Creating Your First VS2010 Extension Project
</h2>
        <p>
Launch Visual Studio 2010. In your New Projects dialog under &lt;Your Language&gt;/Extensibility
you should now have “VSIX Project” 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New VSIX Project" border="0" alt="New VSIX Project" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb.png" width="970" height="626" /></a></p>
        <p>
This project defines the basic extension for visual studio. Out of this you will be
able to build your VSIX file for installation into Visual Studio.
</p>
        <p>
After giving your new project a name you are given a barebones extension. 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New VSIX Project in Solution Explorer" border="0" alt="New VSIX Project in Solution Explorer" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_1.png" width="294" height="318" /></a></p>
        <h3>The Visual Studio Extension Manifest 
</h3>
        <p>
First we’ll start off with an unfamiliar file, the <strong>extension.vsixmanifest</strong> file.
This defines your extension, from title, to license agreement to pictures. While this
file is a fairly simple XML file. The VS Team provided a nice interface for editing
it. 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_3.png" width="968" height="662" /></a>  
</p>
        <p>
While most of the form is pretty self explanatory, there are some specific points
to make
</p>
        <ul>
          <li>
ID: This is your global ID for your extension. After you first publish your extension,
it is probably a good idea to not change this. 
</li>
          <li>
Version: this can be viewed as your installer version. It may not necessarily mirror
your dll versions. 
</li>
          <li>
Supported VS Editions: This is a big one and is also forward thinking. Here you can
select from all the different versions of VS2010, <strong>including Express</strong>,
Integrated and Isolated Shell. It can also be expanded later to include the next version
of VS. 
</li>
        </ul>
        <p>
For more information on the vsixmanifest file, see the documentation <a title="http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx">http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx</a></p>
        <p>
The last two pieces are where things get interesting. There hasn’t been much said
about how extensible Extensions are in VS2010. 
</p>
        <p>
Under References you can create references to other VS2010 extensions that your extension
may depend on. Clicking on the Add Reference button gives you this dialog. 
<br /><a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_4.png" width="966" height="547" /></a></p>
        <p>
You’re given the options to select an extension you already have installed, add an
external VSIX package or manually define one and a URL to download it from. The URL
part is the real beauty. When installing your Extension it has the ability to get
the latest and greatest of an extension. You can of course limit it as well to certain
version numbers to avoid breaking changes. This creates a lean, mean on demand Extension.
</p>
        <p>
The Content editor doesn’t seem to be fully baked. Here you can add extra content
into your vsix package and have it registered upon install.  One example is a
registering a Project Template. I’ve borrowed an example from the <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4747c87-2ad2-4004-99bb-2a2f5f043edd" target="_blank">Card
Game Starter Kit</a> .
</p>
        <p>
          <a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_12.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_5.png" width="1015" height="399" />
          </a>
        </p>
        <p>
 
</p>
        <p>
The Code
</p>
        <p>
You will find one lone code file in your new project. Here is the CS version
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:442291e8-de06-4b91-aa74-797f2a29ca15" class="wlWriterEditableSmartContent">
          <pre name="code" class="c#">using System;
using System.Collections.Generic;
using System.Threading;
using Microsoft.VisualStudio.ExtensibilityHosting;

/// &lt;summary&gt;
/// Empty VSIX Project.
/// &lt;/summary&gt;
namespace MyFirstVs2010Extension
{

}
</pre>
        </div>
        <p>
Not much in there. This is where your imagination comes in
</p>
        <p>
Here is where I’ll leave you to fend on your own for now. Navigating the Visual Studio
SDK assemblies is another post all in itself.  You’ll find all assemblies you
need under the Microsoft.VisualStudio namespace in your add references dialog. It
is also possible to tie into Team System via the Microsoft.TeamSystem . 
</p>
        <p>
For some full source examples of VS 2010 Extensions, check out the Editor Samples
on codeplex 
<br /><a title="http://editorsamples.codeplex.com/" href="http://editorsamples.codeplex.com/">http://editorsamples.codeplex.com/</a></p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=d21ed9cd-84fe-4ef2-bcb7-434ea08e463d" />
      </body>
      <title>Getting Started with Visual Studio 2010 Extensions</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,d21ed9cd-84fe-4ef2-bcb7-434ea08e463d.aspx</guid>
      <link>http://blog.j-maxx.net/2009/05/23/GettingStartedWithVisualStudio2010Extensions.aspx</link>
      <pubDate>Sat, 23 May 2009 19:43:05 GMT</pubDate>
      <description>&lt;p&gt;
I searched far and wide and was unable to find a good quick tutorial on getting&amp;#160;
a Visual Studio 2010 extension up and running. There are a few things wrong in the
verbiage used that can be quite confusing. 
&lt;/p&gt;
&lt;h2&gt;Obtaining the VS 2010 Beta 1 SDK
&lt;/h2&gt;
&lt;p&gt;
The first order of business is to get the Visual Studio 2010 Beta 1 SDK, which will
add the new templates for creating an extension. 
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
After downloading it and trying to install it you may run across an uncaught exception
(like I did) 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkerror_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UnHandled Exception VS 2010 SDK Installer" border="0" alt="UnHandled Exception VS 2010 SDK Installer" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkerror_thumb.jpg" width="730" height="539" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The error lies in the Bootstrapper (setup.exe). Since the VsSDK_sfx.exe is a self-extracting
zip archive you can use your favorite unzipping utility to get the contents. (or you
can take the hard way and get the files in your temp folder after it’s been unzipped).
I prefer to use WinRar, it makes it extremely easy 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010unzipsdk_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Extracting VSSDK To Folder" border="0" alt="Extracting VSSDK To Folder" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010unzipsdk_thumb.jpg" width="808" height="609" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
After this there are only 5 files extracting. 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkunzipped_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VS SDK Unzipped" border="0" alt="VS SDK Unzipped" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/vs2010sdkunzipped_thumb.jpg" width="805" height="253" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
We only care about 2 of them. vssdk.cab and vssdk.msi. 
&lt;br /&gt;
Launch the &lt;strong&gt;vssdk.msi&lt;/strong&gt; . This is the main installer for the SDK. It
gives little feedback and will auto close when it’s done installing. 
&lt;/p&gt;
&lt;h2&gt;Creating Your First VS2010 Extension Project
&lt;/h2&gt;
&lt;p&gt;
Launch Visual Studio 2010. In your New Projects dialog under &amp;lt;Your Language&amp;gt;/Extensibility
you should now have “VSIX Project” 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New VSIX Project" border="0" alt="New VSIX Project" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb.png" width="970" height="626" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
This project defines the basic extension for visual studio. Out of this you will be
able to build your VSIX file for installation into Visual Studio.
&lt;/p&gt;
&lt;p&gt;
After giving your new project a name you are given a barebones extension. 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New VSIX Project in Solution Explorer" border="0" alt="New VSIX Project in Solution Explorer" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_1.png" width="294" height="318" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h3&gt;The Visual Studio Extension Manifest 
&lt;/h3&gt;
&lt;p&gt;
First we’ll start off with an unfamiliar file, the &lt;strong&gt;extension.vsixmanifest&lt;/strong&gt; file.
This defines your extension, from title, to license agreement to pictures. While this
file is a fairly simple XML file. The VS Team provided a nice interface for editing
it. 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_3.png" width="968" height="662" /&gt;&lt;/a&gt;&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
While most of the form is pretty self explanatory, there are some specific points
to make
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
ID: This is your global ID for your extension. After you first publish your extension,
it is probably a good idea to not change this. 
&lt;/li&gt;
&lt;li&gt;
Version: this can be viewed as your installer version. It may not necessarily mirror
your dll versions. 
&lt;/li&gt;
&lt;li&gt;
Supported VS Editions: This is a big one and is also forward thinking. Here you can
select from all the different versions of VS2010, &lt;strong&gt;including Express&lt;/strong&gt;,
Integrated and Isolated Shell. It can also be expanded later to include the next version
of VS. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
For more information on the vsixmanifest file, see the documentation &lt;a title="http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd393700(VS.100).aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The last two pieces are where things get interesting. There hasn’t been much said
about how extensible Extensions are in VS2010. 
&lt;/p&gt;
&lt;p&gt;
Under References you can create references to other VS2010 extensions that your extension
may depend on. Clicking on the Add Reference button gives you this dialog. 
&lt;br /&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_4.png" width="966" height="547" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You’re given the options to select an extension you already have installed, add an
external VSIX package or manually define one and a URL to download it from. The URL
part is the real beauty. When installing your Extension it has the ability to get
the latest and greatest of an extension. You can of course limit it as well to certain
version numbers to avoid breaking changes. This creates a lean, mean on demand Extension.
&lt;/p&gt;
&lt;p&gt;
The Content editor doesn’t seem to be fully baked. Here you can add extra content
into your vsix package and have it registered upon install.&amp;#160; One example is a
registering a Project Template. I’ve borrowed an example from the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4747c87-2ad2-4004-99bb-2a2f5f043edd" target="_blank"&gt;Card
Game Starter Kit&lt;/a&gt; .
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.j-maxx.net/content/binary/WindowsLiveWriter/GettingStartedwithVisualStudio2010Extens_A6CC/image_thumb_5.png" width="1015" height="399" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
The Code
&lt;/p&gt;
&lt;p&gt;
You will find one lone code file in your new project. Here is the CS version
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:442291e8-de06-4b91-aa74-797f2a29ca15" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Collections.Generic;
using System.Threading;
using Microsoft.VisualStudio.ExtensibilityHosting;

/// &amp;lt;summary&amp;gt;
/// Empty VSIX Project.
/// &amp;lt;/summary&amp;gt;
namespace MyFirstVs2010Extension
{

}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Not much in there. This is where your imagination comes in
&lt;/p&gt;
&lt;p&gt;
Here is where I’ll leave you to fend on your own for now. Navigating the Visual Studio
SDK assemblies is another post all in itself.&amp;#160; You’ll find all assemblies you
need under the Microsoft.VisualStudio namespace in your add references dialog. It
is also possible to tie into Team System via the Microsoft.TeamSystem . 
&lt;/p&gt;
&lt;p&gt;
For some full source examples of VS 2010 Extensions, check out the Editor Samples
on codeplex 
&lt;br /&gt;
&lt;a title="http://editorsamples.codeplex.com/" href="http://editorsamples.codeplex.com/"&gt;http://editorsamples.codeplex.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=d21ed9cd-84fe-4ef2-bcb7-434ea08e463d" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,d21ed9cd-84fe-4ef2-bcb7-434ea08e463d.aspx</comments>
      <category>Visual Studio 2010</category>
      <category>Visual Studio Extensions</category>
    </item>
  </channel>
</rss>