<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Craig Skibo's WebLog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/craigskibo/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/craigskibo/feed.xml</link>
    <description>Sorry I can&amp;#039;t answer the phone right now, I am outside feeding yogurt to the clowns.</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:55:47 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Time to go</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/time-to-go</link>
      <pubDate>Mon, 05 Nov 2007 16:37:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/11/05/time-to-go/</guid>
      <description><![CDATA[After 111/2 years, I have decided that I need to take a little time away from work and will be...]]></description>
      <content:encoded><![CDATA[<P>After 11<SUP>1/2</SUP> years, I have decided that I need to take a little time away from work and will be leaving Microsoft. So on November 9th I will be walking out those Microsoft doors for the last time.</P>
<P>You can read more about this on my personal web site at <A class="" title=CraigSkibo.com href="https://www.craigskibo.com/" mce_href="https://www.craigskibo.com">CraigSkibo.com</A>.</P>
<P mce_keep="true">&nbsp;</P>
<P>Craig</P>]]></content:encoded>
    </item>
    <item>
      <title>Why C# and VB are not supported for VS Shell Isolated stubs</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/why-c-and-vb-are-not-supported-for-vs-shell-isolated-stubs</link>
      <pubDate>Wed, 19 Sep 2007 18:17:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/09/19/why-c-and-vb-are-not-supported-for-vs-shell-isolated-stubs/</guid>
      <description><![CDATA[I have been asked a few times why, when you run our wizard, we generate C++ code and not C# or VB....]]></description>
      <content:encoded><![CDATA[<P>I have been asked a few times why, when you run our wizard, we generate C++ code and not C# or VB. Some have even tried creating a C# or VB stub exe only to find errors when their program is run. Why does this happen?</P>
<P>A file that is&nbsp;put into the&nbsp;GAC&nbsp;when you install the VS Shell Isolated components is Microsoft.AppEnv.CustomLoader.dll. When a transition is made from your exe to appenvstub.dll a few things happen to get the VS Shell running; one of the first is loading and then modifying how the CLR will find and load components. When you run Visual Studio all the files are within a self contained directory, usually \Program Files\Microsoft Visual Studio 9\Common7\IDE or a sub directory. But when you run your program it can be installed anywhere, and most likely will not be in the same directory as devenv.exe. Because your code and our code will not be in the same place, packages and support code that we install will not be found, and not everything will work as expected. </P>
<P>To fix this, we created a custom loader. The .NET framework has the ability to modify how AppDomains are configured when created, and one of these configuration points is to allow a callback when an assembly cannot be found. The custom loader hooks this call back and, when an assembly cannot be found, calls our loader to help locate the assembly. The problem with this is that you need to set this callback before the AppDomain is created, and the properties of the AppDomain cannot be modified after creation. Since a majority of the Visual Studio&nbsp;.NET Framework&nbsp;code runs in the default AppDomain, you need to hook this callback before the default AppDomain has been created.</P>
<P>If you were to create a stub exe using C# or VB, just running your exe causes the default AppDomain to be created. Since there can be only one copy of the .NET Framework loaded into a single process and because the default AppDomain has been created (and cannot be destroyed), our custom loader will never have the chance to load. So while you could try to write a stub in C# or VB, you would find that shortly after running parts of your Shell would start to fail and not work properly because we could not find all the assemblies that we need to run.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Community Content Installer Power Toys - new location</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/community-content-installer-power-toys-new-location</link>
      <pubDate>Wed, 12 Sep 2007 15:10:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/09/12/community-content-installer-power-toys-new-location/</guid>
      <description><![CDATA[Since Got Dot Net was closed down, I have not&nbsp;uploaded the power toys to a new location. I have...]]></description>
      <content:encoded><![CDATA[<P>Since Got Dot Net was closed down, I have not&nbsp;uploaded the power toys to a new location. I have received a few mail messages asking where they can be found so&nbsp;I thought I would try out the new SkyDrive service, and uploaded it there. You can download from&nbsp;<SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><A href="https://cid-262f6eeac88c4916.skydrive.live.com/self.aspx/Public/Content%20Installer%20PowerToys.zip">https://cid-262f6eeac88c4916.skydrive.live.com/self.aspx/Public/Content%20Installer%20PowerToys.zip</A></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Shell architecture – Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/visual-studio-shell-architecture-part-1</link>
      <pubDate>Wed, 06 Jun 2007 15:52:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/06/06/visual-studio-shell-architecture-part-1/</guid>
      <description><![CDATA[Before getting into how this new Visual Studio Shell Isolated (let’s call it VSSI for short) thing...]]></description>
      <content:encoded><![CDATA[<P>Before getting into how this new Visual Studio Shell Isolated (let’s call it VSSI for short) thing works, I thought I would go into some background of how Visual Studio works, so you can better understand how your program will work.</P>
<P>When you click on the icon in the start menu to start Visual Studio, you run a program called devenv.exe. Devenv is a short version of development environment or developer environment depending who you talk to. This exe (we call it the stub) will then load a DLL named msenv.dll – and that is where the majority of the work is done. When you launch any other copy of Microsoft development tools, such as the Express editions, the exe name may change, but the same steps are performed. Some customizations are performed by the stub, for example, the splash screen is displayed by the stub (some users of msenv.dll do not display a splash, such as the Macros IDE used by VS) while other customizations, such as the name to show in the title bar, are passed between the stub and msenv.dll. These values are passed through by an exported function in msenv.dll and this function is responsible for creating the main window, starting the message pump for the window, and doing all the work that is common among all callers of msenv.dll.</P>
<P>When you install the next version of the VS SDK, a new Starter Kit and a couple DLLs will be installed onto your computer. The starter kit will create three projects for you, one project will create an exe which will be compiled into a program that loads and runs your customized version of VSSI. One project contains the “command used” data (we will discuss this in a future post), and a package that you can put code that is specific to your VSSI instance and not intended to in in, for example, Visual Studio. When you run the exe project it will look for a DLL named appenvstub.dll - AppEnv was the internal name before we spent a lot of time thinking up the name Visual Studio Shell Isolated, and the name of this DLL will probably change before we ship it. When appenvstub.dll is found it is loaded, then the exe will call one of three methods, Start, Setup, or Remove to either (shockingly) start the application running, setup registry data, or remove registry data. You will pass the command line switches and the name of your application to one of these three methods. Appenvstub.dll will then perform all the work that a program such as devenv.exe or csexpress.exe currently does, which is package up all the data necessary to send over to msenv.dll, display the splash screen, and then start things running. Packaging up this data and running is not easy to do, so Appenvstub.dll acts as a translator between your exe and msenv.dll by bringing in data stored in the registry. This data from the registry is found by the name passed to the functions exported by appenvstub.dll. </P>
<P>Just a few of the posts that I will be making in the future include (more will be added to this list over time):<BR>•&nbsp;The code generated by the template<BR>•&nbsp;How we create the registry (or how you install without installing)<BR>•&nbsp;Customizing your application<BR>•&nbsp;Command used files<BR>•&nbsp;Converting existing packages for VSSI<BR>•&nbsp;Installing Visual Studio Shell Integrated and Isolated<BR>•&nbsp;Choosing the right install model<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Indroducing Visual Studio Shell</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/indroducing-visual-studio-shell</link>
      <pubDate>Tue, 05 Jun 2007 18:05:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/06/05/indroducing-visual-studio-shell/</guid>
      <description><![CDATA[I have not been making too many posts here, mostly because I have had my head down working on some...]]></description>
      <content:encoded><![CDATA[<P>I have not been making too many posts here, mostly because I have had my head down working on some new, secret tools for the past few months. Now I can talk about them because today at TechEd we announced what that new tool is, Visual Studio Shell Isolated. That is one of those fancy, descriptive names that Microsoft marketing gives to something that is quite simple, but at the same time powerful. Over the years many people have been creating packages and Add-ins for Visual Studio, but if anybody wanted to use your package, they had to have a copy of Visual Studio (pro or above) installed on their computer or you had to license what we called the PPE (or “Premier Partner Edition” – another beautiful name) and it was not exactly cheap. </P>
<P>What I have been working on is allowing you to, by building a small exe program and editing an even smaller text file that looks like a .reg file, create your own application which consumes the Visual Studio shell. Your program is branded with your company name and&nbsp;logos in any way that you wish, the only place that any Microsoft logo appears is on the splash screen where on the bottom right we put the text “Powered By Visual Studio”. And best of all – it is free!!! You can also distribute the PPE version of Visual Studio Shell, for free!!!</P>
<P>Over the next few posts I will be making a series of postings about how to get started, the tools available, how to distribute your applications, architecture, which version is best for you, etc. <BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Making Add-in development easier</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/making-add-in-development-easier</link>
      <pubDate>Thu, 03 May 2007 17:13:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/05/03/making-add-in-development-easier/</guid>
      <description><![CDATA[One complaint that we have received about creating Add-ins is about the .addin file. Specifically,...]]></description>
      <content:encoded><![CDATA[<P>One complaint that we have received about creating Add-ins is about the .addin file. Specifically, why are there two of them? If you move the project file, check into source code control, etc. then the file no longer works or&nbsp;disappears. To make this easier I wrote a small tool found at&nbsp;<A href="https://workspaces.gotdotnet.com/VSExtTools">https://workspaces.gotdotnet.com/VSExtTools</A>&nbsp;under the name .addin Helper. When added as a build rule, it will open the .addin file, modify the path to point to the just built DLL, then save it under the My Documents\Visual Studio 2005\Addins directory.</P>
<P>To use the file, save it into your install directory (C:\Program Files\Microsoft Visual Studio 8\Common7\IDE) then add this as your build rule for C# or J#:</P>
<P>"$(DevEnvDir)AddinHelper.exe" "-XmlFile:$(ProjectDir)$(ProjectName).AddIn" "-Assembly:$(TargetDir)$(TargetFileName)" -q</P>
<P>&nbsp;For VB, you will need to modify the project file. Find the &lt;PostBuildEvent&gt;&lt;/PostBuildEvent&gt; tag, and change it to:</P>
<P>&lt;PostBuildEvent&gt;"$(DevEnvDir)AddinHelper.exe" "-XmlFile:$(ProjectDir)$(ProjectName).AddIn" "-Assembly:$(TargetDir)$(TargetFileName)" -q&lt;/PostBuildEvent&gt;</P>
<P>For C++/CLR projects, use this command line (be sure to set it for both Debug and Release configurations):</P>
<P>"$(VSInstallDir)Common7\IDE\AddinHelper.exe" "-XmlFile:$(ProjectDir)$(ProjectName).AddIn" "-Assembly:$(TargetDir)$(TargetFileName)" -q</P>
<P>Now, as long as all users of your project has the AddinHelper.exe tool in the correct location, the .addin file will be updated with the correct path to the .dll.</P>]]></content:encoded>
    </item>
    <item>
      <title>Hello old, new friend</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/hello-old-new-friend</link>
      <pubDate>Thu, 15 Mar 2007 13:25:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/03/15/hello-old-new-friend/</guid>
      <description><![CDATA[For the past few years, Carlos Quintero has been the MVP working with the automation model. Last...]]></description>
      <content:encoded><![CDATA[For the past few years, Carlos Quintero has been the MVP working with the automation model. Last night we finally got to meet over dinner for the first time during the Microsoft MVP Summit. I would like to take this time to thank Carlos for all his hard work on the Yahoo! group, the MSDN Forums, his web site which provides many automation resources (<A href="https://www.mztools.com/">https://www.mztools.com</A>), and the other ways he has helped the community over the years. And hopefully there will be many more.]]></content:encoded>
    </item>
    <item>
      <title>Now taking requests</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/now-taking-requests</link>
      <pubDate>Mon, 26 Feb 2007 15:39:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/02/26/now-taking-requests/</guid>
      <description><![CDATA[Samples and tools are a big part of the VS SDK, but what we decide are good samples and tools are...]]></description>
      <content:encoded><![CDATA[<P>Samples and tools are a big part of the VS SDK, but what we decide are good samples and tools are not always what you need. So here is your chance to let us know what you would like to see. Always feel free to send us mail directly if you do have a suggestion, but&nbsp;here is a forum for you to discuss ideas.&nbsp;I am not talking about something simple like "I need an example of how to get to the X service", but real, substantial samples and tool ideas. I cannot make any promises as to which ones we will do or when they will be available, but we will try our best.</P>
<P mce_keep="true">&nbsp;</P>
<P>Edit: To cut down on blog spam I had comments turned off. I reenabled comments.</P>]]></content:encoded>
    </item>
    <item>
      <title>Time for a change</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/time-for-a-change</link>
      <pubDate>Fri, 05 Jan 2007 17:57:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2007/01/05/time-for-a-change/</guid>
      <description><![CDATA[If you have not noticed I have not posted to this blog in a while. There are many reasons for this,...]]></description>
      <content:encoded><![CDATA[<P>If you have not noticed I have not posted to this blog in a while. There are many reasons for this, a few of which led me to decide to leave my current position in Visual Studio. For the past year I have not done much with extensibility and instead have spent most of my time working on things that, to me,&nbsp;were not very exciting. </P>
<P>So where am I going next? Not too far - just down the hallway. Starting January 15th, I will be working on the Visual Studio SDK team where I will be spending a lot of time working on the MSDN forums, writing blog posts (so you should see more from me here in the future), writing samples, cool tools, etc. </P>]]></content:encoded>
    </item>
    <item>
      <title>New book now available</title>
      <link>https://docs.microsoft.com/archive/blogs/craigskibo/new-book-now-available</link>
      <pubDate>Mon, 12 Jun 2006 13:14:00 GMT</pubDate>
      <dc:creator><![CDATA[CraigSkibo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/craigskibo/2006/06/12/new-book-now-available/</guid>
      <description><![CDATA[I know it has been a while, but I just wanted to drop a note that our latest book, Working With...]]></description>
      <content:encoded><![CDATA[I know it has been a while, but I just wanted to drop a note that our latest book, <STRONG>Working With Microsoft Visual Studio 2005</STRONG>, is now available in paperback. If you need a copy, you can pick one up from places such as <A href="https://www.buy.com/prod/Working_with_Microsoft_r_Visual_Studio_r_2005/q/loc/106/202553179.html">Buy.com</A>, <A href="https://www.amazon.com/gp/product/0735623155/002-2675317-9059236">Amazon</A>, etc.]]></content:encoded>
    </item>
  </channel>
</rss>