<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Aaron Marten</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/aaronmar/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/aaronmar/feed.xml</link>
    <description>Visual Studio Extensibility        All postings are provided &amp;quot;AS IS&amp;quot; with no warranties, and confer no rights.</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:26:35 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>“Invalid License Data” after VS 11 Beta to VS 2012 RC Upgrade</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/invalid-license-data-after-vs-11-beta-to-vs-2012-rc-upgrade</link>
      <pubDate>Sat, 02 Jun 2012 07:54:19 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2012/06/02/invalid-license-data-after-vs-11-beta-to-vs-2012-rc-upgrade/</guid>
      <description><![CDATA[We’ve been seeing reports of some users hitting an “Invalid License Data” error on VS startup after...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/2134.clip_image001_513F2994.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/2134.clip_5F00_image001_5F00_513F2994.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" align="left" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/3443.clip_image001_thumb_15135DEC.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/3443.clip_5F00_image001_5F00_thumb_5F00_15135DEC.jpg" width="243" height="317" /></a>We’ve been seeing reports of some users hitting an “Invalid License Data” error on VS startup after upgrading from VS 11 Beta to VS 2012 RC. This could be due to upgrading from a “higher” Beta SKU (e.g. Ultimate) to a “lower” RC SKU (e.g. Professional).</p>  <p>Fortunately, the fix is simple. Go to the Windows Programs and Features control panel and uninstall the Visual Studio 11 Beta.</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio @ UserVoice</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/visual-studio-uservoice</link>
      <pubDate>Wed, 20 Jul 2011 09:53:36 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2011/07/20/visual-studio-uservoice/</guid>
      <description><![CDATA[We now have an official site for Visual Studio on UserVoice! Please use this as a way to send...]]></description>
      <content:encoded><![CDATA[<p>We now have an official site for Visual Studio on UserVoice! Please use this as a way to send suggestions and feature requests to the Visual Studio team. For specific bugs and errors, please continue to use <a href="http://connect.microsoft.com/visualstudio">Microsoft Connect</a>.</p>  <p><a href="http://visualstudio.uservoice.com"><font size="4">http://visualstudio.uservoice.com</font></a></p>  <p><a href="http://visualstudio.uservoice.com/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/7534.image_7613503A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/7534.image_5F00_7613503A.png" width="644" height="481" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Extensions and Build Servers</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/visual-studio-extensions-and-build-servers</link>
      <pubDate>Tue, 10 May 2011 11:35:00 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2011/05/10/visual-studio-extensions-and-build-servers/</guid>
      <description><![CDATA[From time to time, we see questions around building a project created with the Visual Studio 2010...]]></description>
      <content:encoded><![CDATA[<p>From time to time, we see questions around building a project created with <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307c23-f0ff-4ef2-a0a4-dca54ddb1e21">the Visual Studio 2010 SDK</a> on a build server (e.g. <a href="http://msdn.microsoft.com/en-us/library/dd793166.aspx">Team Foundation Build</a>, <a href="http://www.jetbrains.com/teamcity/">TeamCity</a>, <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CC.NET</a>, etc&hellip;). The primary misconception that folks have is that you must install Visual Studio 2010 + SDK on the build server.</p>
<p>In this post, I&rsquo;ll walk through the process of getting a C#/VB VSPackage project up and running on Team Foundation Build, without requiring an install of Visual Studio on the build agent machine. The same steps apply for editor extensions or other extensibility project types.</p>
<h3>&nbsp;</h3>
<p>Once you&rsquo;ve configured the build server and are ready to try out a build, you&rsquo;ll probably see something like the following error in your build log:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/5826.image_6A8B3CA3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/5826.image_5F00_6A8B3CA3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="builderror1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/7651.image_thumb_34A585E2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/7651.image_5F00_thumb_5F00_34A585E2.png" alt="The imported project &quot;C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets&quot; was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk." width="479" height="106" border="0" /></a></p>
<h3>Step #1: Put Visual Studio SDK targets/tasks in source control</h3>
<p>Since neither Visual Studio nor the Visual Studio SDK are installed on my build machine, the build complains about the missing Microsoft.VsSDK.targets file. This is simple enough to fix by doing the following:</p>
<ol>
<li>Create a folder at the root of your solution directory called &ldquo;vssdk_tools&rdquo;. We&rsquo;ll be adding all the necessary targets, tasks, etc&hellip; to this folder and adding it to source control.</li>
<li>Copy the contents of %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v10.0\VSSDK into this directory.</li>
<li>Add the contents of your vssdk_tools directory to source control.
<ul>
<li>If you&rsquo;re using TFS Source Control, you can do this via the &ldquo;tf add&rdquo; command or through the Source Control Explorer tool window in Visual Studio 2010.</li>
</ul>
</li>
<li>Edit your project file to point to this new targets file. Change the line: <br />&lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" /&gt; <br />&nbsp;&nbsp; to <br />&lt;Import Project="..\vssdk_tools\Microsoft.VsSDK.targets" /&gt;</li>
</ol>
<p>Let&rsquo;s try checking in again and seeing where we are now:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/0310.image_5F7DE9F4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/0310.image_5F00_5F7DE9F4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/2451.image_thumb_6630F377.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/2451.image_5F00_thumb_5F00_6630F377.png" alt="image" width="649" height="212" border="0" /></a></p>
<h3>Step #2: Put COMReference binaries in source control</h3>
<p>The reason that MSBuild is trying to run AxImp.exe is because we have a collection of COMReference elements in our VSPackage project. Instead of registering these assemblies as COM components on the build server, let&rsquo;s copy these binaries to our local project and add them as normal assembly references:</p>
<ol>
<li>Remove the following COMReferences from your project:
<ul>
<li>EnvDTE</li>
<li>EnvDTE80</li>
<li>EnvDTE90</li>
<li>EnvDTE100</li>
<li>Microsoft.VisualStudio.CommandBars</li>
<li>stdole</li>
</ul>
</li>
<li>Create a &ldquo;binaries&rdquo; folder in our VSPackage project</li>
<li>&ldquo;Add existing item&hellip;&rdquo; on this binaries folder for the following assemblies:
<ul>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\EnvDTE.dll</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\EnvDTE80.dll</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\EnvDTE90.dll</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\EnvDTE100.dll</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Microsoft.VisualStudio.CommandBars.dll</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\stdole.dll</li>
</ul>
</li>
<li>Select all the binary files and set the &ldquo;Build Action&rdquo; property to &ldquo;None&rdquo;.</li>
<li>Re-add assembly references to the binaries you just added.</li>
<li><strong>Important</strong>: Select all the references and set the &ldquo;Embed Interop Types&rdquo; property to <strong>false.</strong> (You can select and change them all in one operation.)</li>
</ol>
<p>Let&rsquo;s check in and try another build on the server</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/5187.image_3EF6AA42.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/5187.image_5F00_3EF6AA42.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/6406.image_thumb_65C4C082.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/6406.image_5F00_thumb_5F00_65C4C082.png" alt="image" width="717" height="165" border="0" /></a></p>
<h3>Step #3: Manually set the VsSDKInstall locations</h3>
<p>Let&rsquo;s take a look at the actual line where we&rsquo;re hitting the error in Microsoft.VsSDK.Common.targets:</p>
<p><span style="font-family: Consolas;">&lt;Target Name="FindSDKInstallation" <strong><span style="background-color: #ffff00;">Condition="'$(VsSDKInstall)'==''"</span>&gt;</strong> <br />&nbsp; &lt;FindVsSDKInstallation SDKVersion="$(VsSDKVersion)"&gt; <br />&nbsp;&nbsp;&nbsp; &hellip;</span></p>
<p>The reason this task needs to run is because the VsSDKInstall property (and friends) hasn&rsquo;t been set yet. Let&rsquo;s use the &ldquo;vssdk_tools&rdquo; folder we had set up earlier. Edit your project file again, and add the following properties to the first &lt;PropertyGroup&gt; element: <br /><span style="font-family: Consolas;">&nbsp;</span></p>
<p><span style="font-family: Consolas;">&lt;VsSDKInstall&gt;..\vssdk_tools&lt;/VsSDKInstall&gt; <br />&lt;VsSDKIncludes&gt;$(VsSDKInstall)\inc&lt;/VsSDKIncludes&gt; <br />&lt;VsSDKToolsPath&gt;$(VsSDKInstall)\bin&lt;/VsSDKToolsPath&gt; <br /></span></p>
<p>Clearly, this won&rsquo;t work until we actually have the corresponding files from the Visual Studio SDK also checked in to those directories. Let&rsquo;s do that now:</p>
<ol>
<li>Copy the contents of %ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Inc to vssdk_tools\inc</li>
<li>Copy the contents of %ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Tools\Bin to vssdk_tools\bin</li>
<li>Add all these new files to source control</li>
</ol>
<p>Let&rsquo;s checkin again and see where we are now:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/3857.image_258EA708.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/3857.image_5F00_258EA708.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/7651.image_thumb_376B3AD5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/7651.image_5F00_thumb_5F00_376B3AD5.png" alt="image" width="745" height="204" border="0" /></a></p>
<h3>Step #4: Set VsSDKToolsPath as an Environment Variable</h3>
<p>Hmmm&hellip;this one is a bit tricky. It turns out that some of the VSSDK build tasks rely on not only the $(VsSDKToolsPath) MSBuild property, but they also rely on this being set <strong><em>as an environment variable</em></strong>. We can do that fairly easily with an inline build task which we can add to our project file:</p>
<p><span style="font-family: Consolas;">&lt;UsingTask TaskName="SetVsSDKEnvironmentVariables" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"&gt; <br />&nbsp; &lt;ParameterGroup&gt; <br />&nbsp;&nbsp;&nbsp; &lt;ProjectDirectory Required="true" /&gt; <br />&nbsp; &lt;/ParameterGroup&gt; <br />&nbsp; &lt;Task&gt; <br />&nbsp;&nbsp;&nbsp; &lt;Code Type="Fragment" Language="cs"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Environment.SetEnvironmentVariable("VsSDKToolsPath", System.IO.Path.GetFullPath(ProjectDirectory + @"\..\vssdk_tools\bin")); <br />&nbsp;&nbsp;&nbsp; &lt;/Code&gt; <br />&nbsp; &lt;/Task&gt; <br />&lt;/UsingTask&gt; <br />&lt;Target Name="SetVsSDKEnvironmentVariables" BeforeTargets="VSCTCompile"&gt; <br />&nbsp; &lt;SetVsSDKEnvironmentVariables ProjectDirectory="$(MSBuildProjectDirectory)" /&gt; <br />&lt;/Target&gt; <br /></span></p>
<p><span style="font-family: Consolas;"><span style="font-family: Segoe UI;">Let&rsquo;s cross our fingers and try again:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/0804.image_0C307FF5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/0804.image_5F00_0C307FF5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/8321.image_thumb_3AC688D7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/8321.image_5F00_thumb_5F00_3AC688D7.png" alt="image" width="687" height="103" border="0" /></a></p>
<h3>Step #5: Use 32-bit MSBuild.exe</h3>
<p>By default, TFS will use the x64 version of MSBuild.exe (assuming you&rsquo;re on a 64-bit server). Since the VSCT assembly is 32-bit only, it will fail to load in a 64-bit process. To use 32-bit MSBuild.exe on the server (if you&rsquo;re using Team Foundation Build), simply edit the build definition and change Process =&gt; Advanced =&gt; MSBuild Platform to &ldquo;X86&rdquo; instead of &ldquo;Auto&rdquo;.</p>
<p>One more try:</p>
<p><span style="font-family: Consolas;">&nbsp;</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/4011.image_0C26A3CE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/4011.image_5F00_0C26A3CE.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/3438.image_thumb_36FF07E0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/3438.image_5F00_thumb_5F00_36FF07E0.png" alt="image" width="734" height="228" border="0" /></a></p>
<h3>&nbsp;</h3>
<p><span style="font-family: Consolas;">&nbsp;</span></p>
<h3>Step #6: Add other VSSDK Assemblies to source control</h3>
<p>In step 3, we only added the COMReferences to source control. Now, let&rsquo;s do a similar procedure with the other assemblies:</p>
<ol>
<li>Remove the following assembly references from your project:
<ul>
<li>Microsoft.VisualStudio.OLE.Interop</li>
<li>Microsoft.VisualStudio.Shell.10.0</li>
<li>Microsoft.VisualStudio.Shell.Immutable.10.0</li>
<li>Microsoft.VisualStudio.Shell.Interop</li>
<li>Microsoft.VisualStudio.Shell.Interop.10.0</li>
<li>Microsoft.VisualStudio.Shell.Interop.8.0</li>
<li>Microsoft.VisualStudio.Shell.Interop.9.0</li>
<li>Microsoft.VisualStudio.TextManager.Interop</li>
</ul>
</li>
<li>&ldquo;Add existing item&hellip;&rdquo; on the binaries folder for the following assemblies:
<ul>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.OLE.Interop.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.Shell.Interop.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.Shell.Interop.8.0.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.Shell.Interop.9.0.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.Shell.Interop.10.0.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v2.0\Microsoft.VisualStudio.TextManager.Interop.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v4.0\Microsoft.VisualStudio.Shell.10.0.dll</li>
<li>%ProgramFiles%\Microsoft Visual Studio 2010 SDK SP1\VisualStudioIntegration\Common\Assemblies\v4.0\Microsoft.VisualStudio.Shell.Immutable.10.0.dll</li>
</ul>
</li>
<li>Select all the binary files and set the &ldquo;Build Action&rdquo; property to &ldquo;None&rdquo;.</li>
<li>Re-add assembly references to the binaries you just added.</li>
</ol>
<p>One more time&hellip;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/2451.image_76C8EE65.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/2451.image_5F00_76C8EE65.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/5187.image_thumb_32888719.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/5187.image_5F00_thumb_5F00_32888719.png" alt="image" width="806" height="85" border="0" /></a></p>
<h3>&nbsp;</h3>
<h3>Step #7: Add Microsoft.VisualStudio.Shell.Immutable.10.0.dll to the tools directory</h3>
<p>CreatePkgDef.exe is the tool used to create a pkgdef file for your VSPackage. The tool itself relies on types defined in the Microsoft.VisualStudio.Shell.Immutable.10.0 assembly. On a machine with Visual Studio 2010 installed, there isn&rsquo;t a problem loading it since the assembly is installed to the GAC. However, on our build server, the assembly is not in the GAC since Visual Studio 2010 isn&rsquo;t installed.</p>
<p>In order to allow CreatePkgDef.exe to find the assembly, we can simply add a copy of this binary in our vssdk_tools\bin directory. Do the following:</p>
<ol>
<li>Copy Microsoft.VisualStudio.Shell.Immutable.10.0.dll from our project binaries folder to vssdk_tools\bin.</li>
<li>Add this new file to source control and checkin</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/0211.image_44651AE6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/0211.image_5F00_44651AE6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/8637.image_thumb_042F016C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/8637.image_5F00_thumb_5F00_042F016C.png" alt="image" width="891" height="160" border="0" /></a></p>
<h3>Step #8: Add the VSIXManifestSchema.xsd to allow VsixManifest validation on the build server</h3>
<p>This task fails because the build task can&rsquo;t locate the XML schema file for VSIXManifest to do schema validation. We could just switch this task off, but since it&rsquo;s a good idea to run this validation when we build, let&rsquo;s do what&rsquo;s necessary to enable validation. There is an MSBuild property we can set to override this location on our build server. Simply add the following property to the first &lt;PropertyGroup&gt;:</p>
<p><span style="font-family: Consolas;">&lt;VsixSchemaPath&gt;$(VsSDKInstall)\schemas\VSIXManifestSchema.xsd&lt;/VsixSchemaPath&gt;</span></p>
<p>Of course, we also need to add the schema file to this directory:</p>
<ol>
<li>Copy the VSIXManifestSchema.xsd file from &ldquo;%ProgramFiles%\Microsoft Visual Studio 10.0\Xml\Schemas&rdquo; to vssdk_tools\schemas.</li>
<li>Add VSIXManifestSchema.xsd to source control</li>
</ol>
<p>Let&rsquo;s try again and see where we are: <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/6165.image_43F8E7F1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/6165.image_5F00_43F8E7F1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/5582.image_thumb_4AABF174.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/5582.image_5F00_thumb_5F00_4AABF174.png" alt="image" width="609" height="302" border="0" /></a></p>
<h3>Step #9: Disable deployment to the Experimental Instance</h3>
<p>To make &lsquo;F5&rsquo; debugging work without any work by the user, by default, there are some additional targets that run in Microsoft.VsSDK.Common.targets. These targets &lsquo;deploy&rsquo; your extension&rsquo;s files to the Experimental instance for debugging. Since this scenario doesn&rsquo;t make sense for our build server, we should disable it.</p>
<p>The Visual Studio SDK includes a project property page for configuring this property:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/8228.image_0A75D7FA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/8228.image_5F00_0A75D7FA.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/2474.image_thumb_1C526BC7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/2474.image_5F00_thumb_5F00_1C526BC7.png" alt="image" width="630" height="373" border="0" /></a></p>
<p>Note that you will probably want a separate build configuration for your build server (to set this property to false) so that developers can still easily debug their package on a client machine.</p>
<p>If you prefer to configure this directly in your project file instead of using the UI, use the following property:</p>
<p><span style="font-family: Consolas;">&lt;DeployExtension&gt;False&lt;/DeployExtension&gt;</span></p>
<p>Let&rsquo;s see how this affects our build:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/4431.image_5C1C524C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/4431.image_5F00_5C1C524C.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/5001.image_thumb_1BE638D2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/5001.image_5F00_thumb_5F00_1BE638D2.png" alt="image" width="195" height="95" border="0" /></a></p>
<h3>Success!!</h3>
<p>Hooray! If I check the build output directory, we now see that we have a VSIX file that was built on the server:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/6180.image_29B87ECD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/6180.image_5F00_29B87ECD.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/32/57/metablogapi/0726.image_thumb_3B95129A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-32-57-metablogapi/0726.image_5F00_thumb_5F00_3B95129A.png" alt="image" width="468" height="315" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>PerfWatson – Automatically report responsiveness issues in Visual Studio 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/perfwatson-automatically-report-responsiveness-issues-in-visual-studio-2010</link>
      <pubDate>Fri, 29 Apr 2011 15:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2011/04/29/perfwatson-automatically-report-responsiveness-issues-in-visual-studio-2010/</guid>
      <description><![CDATA[We&rsquo;ve just released a new extension on the Visual Studio Gallery called PerfWatson. Have you...]]></description>
      <content:encoded><![CDATA[<p>We&rsquo;ve just released a new extension on the Visual Studio Gallery called <a href="http://visualstudiogallery.msdn.microsoft.com/fa85b17d-3df2-49b1-bee6-71527ffef441">PerfWatson</a>. Have you ever seen this dreaded error message?</p>
<h6>Microsoft Visual studio is waiting for an internal operation to complete. If you regularly encounter this delay during normal usage, please report this problem to Microsoft.</h6>
<p>Well, now you actually can report these problems to Microsoft&hellip;automatically. Here&rsquo;s a description of the extension from the Visual Studio Gallery page:</p>
<p><em>&ldquo;We&rsquo;re constantly working to improve the performance of Visual Studio and take feedback about it very seriously. Our investigations into these issues have found that there are a variety of scenarios where a long running task can cause the UI thread to hang or become unresponsive. Visual Studio PerfWatson is a low overhead telemetry system that helps us capture these instances of UI unresponsiveness and report them back to Microsoft automatically and anonymously. We then use this data to drive performance improvements that make Visual Studio faster.</em></p>
<p><em>Here&rsquo;s how it works: when the tool detects that the Visual Studio UI has become unresponsive, it records information about the length of the delay and the root cause, and submits a report to Microsoft. The Visual Studio team can then aggregate the data from these reports to prioritize the issues that are causing the largest or most frequent delays across our user base. By installing the PerfWatson extension, you are helping Microsoft identify and fix the performance issues that you most frequently encounter on your PC.&rdquo;</em></p>
<p>I&rsquo;d strongly encourage you to <a href="http://visualstudiogallery.msdn.microsoft.com/fa85b17d-3df2-49b1-bee6-71527ffef441">install PerfWatson</a> if you&rsquo;re frustrated with seemingly random UI hangs in Visual Studio. This extension won&rsquo;t fix the issues, but it will help us see where the real-world responsiveness issues are to help improve future releases.</p>]]></content:encoded>
    </item>
    <item>
      <title>Custom Extension Types with VSIX</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/custom-extension-types-with-vsix</link>
      <pubDate>Fri, 16 Apr 2010 14:28:23 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2010/04/16/custom-extension-types-with-vsix/</guid>
      <description><![CDATA[I just posted an article entitled “Custom Extension Types with VSIX” on the Visual Studio Blog....]]></description>
      <content:encoded><![CDATA[<p>I just posted an article entitled <a href="http://blogs.msdn.com/visualstudio/archive/2010/04/16/custom-extension-types-with-vsix.aspx">“Custom Extension Types with VSIX”</a> on the <a href="http://blogs.msdn.com/visualstudio/">Visual Studio Blog</a>.</p>  <p>Check it out if you’re interested in distributing custom content (not necessarily code) as a Visual Studio extension.</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2010 Released</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/visual-studio-2010-released</link>
      <pubDate>Mon, 12 Apr 2010 21:30:31 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2010/04/12/visual-studio-2010-released/</guid>
      <description><![CDATA[By now you’ve probably heard that we launched Visual Studio 2010 and .NET Framework 4.0 today!...]]></description>
      <content:encoded><![CDATA[<p>By now you’ve probably heard that we <a href="http://blogs.msdn.com/somasegar/archive/2010/04/11/announcing-visual-studio-2010-and-net-framework-4.aspx">launched Visual Studio 2010 and .NET Framework 4.0 today</a>!</p>  <p><a href="http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx?pv=18:370">Download Visual Studio 2010</a> (MSDN subscribers only)</p>  <p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=47305cf4-2bea-43c0-91cd-1b853602dcc5">Download Visual Studio 2010 SDK</a></p>  <p>The Visual Studio Industry Partner (VSIP) team has also <a href="https://channel9.msdn.com/posts/VSIPMarketing/">posted a slew of videos</a> showing off some of the great add-on products that bring additional functionality to the new IDE.</p>  <p>&#160;</p>  <p>Enjoy, and do please let us know what you think via <a href="http://blogs.msdn.com/aaronmar/contact.aspx">email</a>, <a href="http://social.msdn.microsoft.com/Forums/en-US/vsx/threads">forums</a>, <a href="http://blogs.msdn.com/VisualStudio">blogs</a>, <a href="https://twitter.com/AaronMarten">Twitter</a>, and <a href="http://connect.microsoft.com/VisualStudio">Microsoft Connect</a>!</p>]]></content:encoded>
    </item>
    <item>
      <title>Including Existing Templates in a VSIX Container</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/including-existing-templates-in-a-vsix-container</link>
      <pubDate>Fri, 12 Mar 2010 16:24:44 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2010/03/12/including-existing-templates-in-a-vsix-container/</guid>
      <description><![CDATA[In the Visual Studio 2008 SDK, we have several samples (most notably, IronPythonIntegration) set up...]]></description>
      <content:encoded><![CDATA[<p>In the Visual Studio 2008 SDK, we have several samples (most notably, IronPythonIntegration) set up to use the ZipProject, ZipItem, and VSTemplate build actions to create template zip files.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_2.png" original-url="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IronPython templates" border="0" alt="IronPython templates" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_thumb.png" original-url="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_thumb.png" width="244" height="214" /></a> </p>  <p>Last week, I <a href="http://blogs.msdn.com/visualstudio/archive/2010/03/04/creating-and-sharing-project-item-templates.aspx">published a post</a> on the <a href="http://blogs.msdn.com/visualstudio/">Visual Studio Blog</a> discussing how you could build templates from source files and package them up in a VSIX container using the new templates in the Visual Studio 2010 SDK.</p>  <p>We’ve been hearing questions about how to take an existing project (<a href="http://msdn.microsoft.com/en-us/library/cc512930(VS.100).aspx">updated from Visual Studio 2008</a>, still using ZipProject/ZipItem) and include the built zip files in the VSIX container.</p>  <p>Unfortunately, this doesn’t happen automatically for you. The reason is that the zip files are not specified as input files for building the VSIX container in the VSSDK build targets.</p>  <p>Fortunately, since <a href="http://msdn.microsoft.com/en-us/library/ms171452.aspx">MSBuild</a> is a highly extensible system, we can make up for this with a little bit of project customization. Simply add the following to your C#/VB project file to get your existing templates included in the VSIX container:</p>  <pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">PropertyGroup</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">GetVsixSourceItemsDependsOn</span><span style="color: blue">&gt;</span>$(GetVsixSourceItemsDependsOn);GetVsixTemplateItems<span style="color: blue">&lt;/</span><span style="color: #a31515">GetVsixSourceItemsDependsOn</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">PropertyGroup</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Target </span><span style="color: red">Name</span><span style="color: blue">=</span>&quot;<span style="color: blue">GetVsixTemplateItems</span>&quot; <span style="color: red">DependsOnTargets</span><span style="color: blue">=</span>&quot;<span style="color: blue">ZipProjects;ZipItems</span>&quot;<span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ItemGroup</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">VSIXSourceItem </span><span style="color: red">Include</span><span style="color: blue">=</span>&quot;<span style="color: blue">@(IntermediateZipItem)</span>&quot;<span style="color: blue">&gt;
            &lt;</span><span style="color: #a31515">VSIXSubPath</span><span style="color: blue">&gt;</span>ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)<span style="color: blue">&lt;/</span><span style="color: #a31515">VSIXSubPath</span><span style="color: blue">&gt;
        &lt;/</span><span style="color: #a31515">VSIXSourceItem</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">VSIXSourceItem </span><span style="color: red">Include</span><span style="color: blue">=</span>&quot;<span style="color: blue">@(IntermediateZipProject)</span>&quot;<span style="color: blue">&gt;
            &lt;</span><span style="color: #a31515">VSIXSubPath</span><span style="color: blue">&gt;</span>ProjectTemplates\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)<span style="color: blue">&lt;/</span><span style="color: #a31515">VSIXSubPath</span><span style="color: blue">&gt;
        &lt;/</span><span style="color: #a31515">VSIXSourceItem</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #a31515">ItemGroup</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Target</span><span style="color: blue">&gt;</span></pre>

<p>You will also need to add the following lines (as appropriate) to your source.extension.vsixmanifest<span style="color: blue"><font color="#000000">:</font></span></p>

<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">Content</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ProjectTemplate</span><span style="color: blue">&gt;</span>ProjectTemplates<span style="color: blue">&lt;/</span><span style="color: #a31515">ProjectTemplate</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ItemTemplate</span><span style="color: blue">&gt;</span>ItemTemplates<span style="color: blue">&lt;/</span><span style="color: #a31515">ItemTemplate</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Content</span><span style="color: blue">&gt;</span></pre>

<p><a href="http://11011.net/software/vspaste"></a>These lines each declare a root folder in your VSIX file that VS should examine for template files. Project template zip files will be placed in the ProjectTemplates folder inside the VSIX file. Item template zip files will be placed in (you guessed it)…the ItemTemplates folder inside the VSIX file.</p>]]></content:encoded>
    </item>
    <item>
      <title>Targeting VS 2008 with the Visual Studio 2010 SDK</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/targeting-vs-2008-with-the-visual-studio-2010-sdk</link>
      <pubDate>Mon, 07 Dec 2009 16:44:50 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2009/12/07/targeting-vs-2008-with-the-visual-studio-2010-sdk/</guid>
      <description><![CDATA[Recently, a customer asked us if it was possible to develop and debug a VB/C# extension with Visual...]]></description>
      <content:encoded><![CDATA[<p>Recently, a customer asked us if it was possible to develop and debug a VB/C# extension with Visual Studio 2010 (and the 2010 SDK), but still have a binary that also works with VS 2008. This is indeed possible, but it requires some hacking of your project file to get it set up.</p>  <p>One nice thing about this solution is that you can easily switch between targeting 2008 and 2010 by simply changing the startup project between the package project and the VSIX project.</p>  <p>Setup machine with VS 2008 SP1 + VS2008 SDK 1.1 + VS2010 Beta 2 + VS2010 Beta 2 SDK</p>  <ol>   <li>     <div>In VS 2008 : create a VB or C# VSPackage</div>      <ul>       <li>         <div>(optionally) Build/F5 to verify that it builds/loads as expected in 2008 Experimental Hive</div>       </li>        <li>         <div>Close VS 2008 Instances</div>       </li>     </ul>   </li>    <li>     <div>Launch VS 2010, open the solution, and proceed with project upgrade wizard</div>   </li>    <li>     <div>Unload the VSPackage project, edit the project file, and add the following target after the Imports statements at the bottom:</div>      <p class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">Target</span><span style="font-family: consolas; color: blue; font-size: 9.5pt"> </span><span style="font-family: consolas; color: red; font-size: 9.5pt">Name</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">PkgdefProjectOutputGroup</span>&quot; <span style="color: red">Outputs</span><span style="color: blue">=</span>&quot;<span style="color: blue">@(PkgdefOutputGroupOutput)</span>&quot;<span style="color: blue">&gt;</span>&#160;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160; &lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">RegPkg</span><span style="font-family: consolas; color: blue; font-size: 9.5pt"> </span><span style="font-family: consolas; color: red; font-size: 9.5pt">ItemToRegister</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(TargetPath)</span>&quot;&#160;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">ProductVersion</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(TargetVSVersion)</span>&quot;&#160;&#160; <br /></span><span style="font-family: consolas; color: red; font-size: 9.5pt">&#160;&#160;&#160; RegistrationRoot</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(__InternalTargetRoot)</span>&quot;&#160;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">SDKVersion</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(VsSDKVersion)</span>&quot;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">UseCodebase</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">true</span>&quot;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">OutputFile</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(IntermediateOutputPath)$(TargetName)_.pkgdef</span>&quot;           <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">Unregister</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">false</span>&quot;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; </span><span style="font-family: consolas; color: red; font-size: 9.5pt">UseVS2005MPF</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(__InternalUseMPF80)</span>&quot;<span style="color: blue"> /&gt;</span>&#160;</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160; &lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">ItemGroup</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; &lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">_PkgdefOutputGroupOutput</span><span style="font-family: consolas; color: blue; font-size: 9.5pt"> </span><span style="font-family: consolas; color: red; font-size: 9.5pt">Include</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">$(IntermediateOutputPath)$(TargetName)_.pkgdef</span>&quot;<span style="color: blue"> /&gt;</span>&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160; &lt;/</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">ItemGroup</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160; &lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">ItemGroup</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160;&#160;&#160; &lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">PkgdefOutputGroupOutput</span><span style="font-family: consolas; color: blue; font-size: 9.5pt"> </span><span style="font-family: consolas; color: red; font-size: 9.5pt">Include</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">=</span><span style="font-family: consolas; font-size: 9.5pt">&quot;<span style="color: blue">@(_PkgdefOutputGroupOutput-&gt;'%(FullPath)')</span>&quot;<span style="color: blue"> /&gt;</span>&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&#160; &lt;/</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">ItemGroup</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;/</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">Target</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt; </span></p>   </li>    <li>     <div>Reload the VSPackage project</div>   </li>    <li>     <div>Add a <a href="http://blogs.msdn.com/aaronmar/archive/2009/06/09/what-is-the-vsix-project-template.aspx">VSIX Project</a> to the solution (From Visual C#\Extensibility or Visual Basic\Extensibility in the New Project Dialog)</div>      <ul>       <li>         <div>Note: <strong>You do not have to distribute your package in a VSIX container</strong>. This is simply a requirement for registering and debugging in the VS 2010 Experimental Instance. </div>       </li>     </ul>   </li>    <li>     <div>Add a Project Reference from the VSIX Project to the VSPackage project</div>   </li>    <li>     <div>Unload the VSIX project, edit the project file, and add the following inside the &lt;ProjectReference&gt; node:</div>      <p class="MsoNormal"><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">IncludeOutputGroupsInVSIX</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;          <br /></span><span style="font-family: consolas; font-size: 9.5pt">&#160; BuiltProjectOutputGroup;&#160;&#160; <br /></span><span style="font-family: consolas; font-size: 9.5pt">&#160; PkgdefProjectOutputGroup&#160;&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;/</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">IncludeOutputGroupsInVSIX</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">IncludeOutputGroupsInVSIXLocalOnly</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt;</span><span style="font-family: consolas; font-size: 9.5pt">&#160; <br /></span><span style="font-family: consolas; font-size: 9.5pt">&#160; DebugSymbolsProjectOutputGroup&#160; <br /></span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&lt;/</span><span style="font-family: consolas; color: #a31515; font-size: 9.5pt">IncludeOutputGroupsInVSIXLocalOnly</span><span style="font-family: consolas; color: blue; font-size: 9.5pt">&gt; </span></p>   </li>    <li>     <div>Reload the VSIX Project</div>   </li>    <li>     <div>Right-click the VSIX Project node and “Set as Startup Project” (if you wish to run/debug the package under VS2010)</div>   </li>    <li>     <div>F5 to debug the package running in the VS2010 Experimental Instance with VS2010</div>   </li> </ol>]]></content:encoded>
    </item>
    <item>
      <title>All Your RegKeys Are Belong To Us</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/all-your-regkeys-are-belong-to-us</link>
      <pubDate>Fri, 06 Nov 2009 09:39:00 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2009/11/06/all-your-regkeys-are-belong-to-us/</guid>
      <description><![CDATA[I’ve been in many discussions lately with various folks about Visual Studio 2010 extensibility....]]></description>
      <content:encoded><![CDATA[
<p>I’ve been in many discussions lately with various folks about Visual Studio 2010 extensibility. Inevitably, someone suggests a solution to some problem involving changing/adding/deleting a registry key/value for an extension. If you need to do this, just remember this one rule:</p>
  <h3>Do not ever edit a key that ends in “_Config”</h3>
  <h4>HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0</h4>  
<p>This key contains your user-specific settings and works the same as it has in prior VS releases. This could be things like pointers to your default project locations, window layout data, etc… In general it is OK to make tweaks to this key. The worst thing that could happen is that you end up corrupting your user settings. Deleting the key will cause the first-launch “Please choose a profile” dialog to come up the next time you launch Visual Studio.</p>
  <h4>HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0_Config</h4>  
<p>If you examine the contents of this key, you’ll see that it contains the configuration data for VS 2010. This includes things like package registration, project system registration, editor factory registration, etc… You may also notice that the contents are very similar to <b>HKLM\Software\Microsoft\VisualStudio\10.0</b>.</p>
  
<p>You can think of the _Config key as a <b>volatile cache</b> of VS’s configuration data for a particular user. It is simply the combination of <b>HKLM\Software\Microsoft\VisualStudio\10.0</b> and any pkgdef files coming from VS extensions (either from Common7\IDE\Extensions or %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions).</p>
  
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_2.png" original-url="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_2.png" mce_href="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_2.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_thumb.png" original-url="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_thumb.png" style="border-width: 0px; display: inline;" title="PkgDef-Normal[1]" alt="PkgDef-Normal[1]" mce_src="http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/AllYourKeysAreBelongToUs_9F50/PkgDef-Normal%5B1%5D_thumb.png" border="0" height="194" width="392"></a> </p>
  
<p>&nbsp;</p>
  
<p><a href="http://blogs.msdn.com/aaronmar/archive/2009/06/05/pkgdef-and-the-experimental-instance-in-vs-2010.aspx" mce_href="http://blogs.msdn.com/aaronmar/archive/2009/06/05/pkgdef-and-the-experimental-instance-in-vs-2010.aspx">(A previous post discussed how the Experimental Instance works.)</a></p>
  
<p>If you edit a key in 10.0_Config, Visual Studio <b>will (quite possibly) delete it on startup</b>.</p>
  <h3>If you need to change a value, always do one of the following:</h3>  
<ol>   
<li>Edit the value under <b>HKLM\Software\Microsoft\VisualStudio\10.0</b> </li>
    
<li>Edit (or add) a pkgdef file for the extension in question (For managed VSPackages, this is likely editing/adding a <a href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.registrationattribute%28VS.100%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.registrationattribute(VS.100).aspx">RegistrationAttribute</a> in your code). </li>
 </ol>
]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2010 Beta 2 (+SDK) on MSDN</title>
      <link>https://docs.microsoft.com/archive/blogs/aaronmar/visual-studio-2010-beta-2-sdk-on-msdn</link>
      <pubDate>Mon, 19 Oct 2009 09:16:45 GMT</pubDate>
      <dc:creator><![CDATA[Aaron Marten]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aaronmar/2009/10/19/visual-studio-2010-beta-2-sdk-on-msdn/</guid>
      <description><![CDATA[We’ve just released Visual Studio 2010 Beta 2 (and the SDK) on MSDN. If you’re a MSDN subscriber,...]]></description>
      <content:encoded><![CDATA[<p>We’ve just released Visual Studio 2010 Beta 2 (and the SDK) on MSDN. If you’re a MSDN subscriber, you can <a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx?PV=18:370:DVD:en:x86">go grab the bits right away</a>.</p>  <p>There are also several other related announcements around RTM dates, pricing, and SKU’s:</p>  <p><a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx">Soma’s Announcement</a>    <br /><a href="http://arstechnica.com/microsoft/news/2009/10/visual-studio-2010-simplified-to-four-skus-beta-2-arrives.ars">Ars Technica : Visual Studio 2010 simplified to four SKUs, Beta 2 arrives</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>