<?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>Eugene Talagrand's MSDN blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/talagrand/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/talagrand/feed.xml</link>
    <description>A blog about stuff   SyntaxHighlighter.all()</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:44:33 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>A new package manager for open source applications on Windows</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/a-new-package-manager-for-open-source-applications-on-windows</link>
      <pubDate>Wed, 07 Apr 2010 11:01:00 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2010/04/07/a-new-package-manager-for-open-source-applications-on-windows/</guid>
      <description><![CDATA[My colleague Garrett Serack over at the Microsoft Open Source labs is trying to solve the deployment...]]></description>
      <content:encoded><![CDATA[<p>My colleague Garrett Serack over at the Microsoft Open Source labs is trying to solve the deployment problem for open source software on Windows. He’s building a new package management system to that effect called <a href="https://coapp.org/">CoApp</a> on top of the WinSxS store, along with a new ecosystem and set of best practices around it. Hopefully gone will be the days where different versions of zlib step on each other, and outdated binary dependencies (sometimes with <a href="https://blogs.msdn.com/larryosterman/archive/2004/05/04/126054.aspx">vulnerabilities</a>) are carried over from one project to the next. The news is causing a bit of a stir around here, and I wish the best to Garrett – I rarely meet a developer with quite the passion he has in his work. There’s more over at <a href="https://blogs.msdn.com/garretts/archive/2010/03/31/the-common-opensource-application-publishing-platform-coapp.aspx">his blog</a>.</p>  <p><strong>Update</strong>: <a href="https://blogs.zdnet.com/microsoft/?p=5762">ZDNet</a>, <a href="https://developers.slashdot.org/story/10/04/08/2343205/Microsofts-CoApp-To-Help-OSS-Development-Deployment">Slashdot</a> &amp; <a href="https://arstechnica.com/open-source/news/2010/04/microsoft-offers-much-needed-fix-for-windows-oss-development.ars">Ars Technica</a> have more.</p>]]></content:encoded>
    </item>
    <item>
      <title>Isolating a plugin into its own directory</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/isolating-a-plugin-into-its-own-directory</link>
      <pubDate>Mon, 08 Mar 2010 21:32:00 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2010/03/08/isolating-a-plugin-into-its-own-directory/</guid>
      <description><![CDATA[Let’s assume the following directory structure:...]]></description>
      <content:encoded><![CDATA[<p>Let’s assume the following directory structure:</p>  <pre class="brush: plain; gutter: false; class-name: &#39;code&#39;">appdir\host.exe
plugindir\plugin.dll
plugindir\plugindependency.dll
plugindir\pluginresource.txt</pre>

<p>where <code>host.exe</code> explicitly loads <code>plugindir\plugin.dll</code>, which in turn has a static dependency on <code>plugindependency.dll</code>. </p>

<p>As-is, this structure doesn't work, because the <a href="https://msdn.microsoft.com/en-us/library/ms682586.aspx">DLL search order</a> has the directory of the application <code>appdir</code> in the search path, but not <code>plugindir</code>. So <code>plugindependency.dll</code> won't be found. </p>

<p>This is solvable by isolating <code>plugin.dll</code>. The way to do this is to <a href="https://blogs.msdn.com/cheller/archive/2006/08/24/718757.aspx">embed a manifest</a> under the RT_MANIFEST section of its resources as ID 2&#160; (aka <a href="https://blogs.msdn.com/junfeng/archive/2007/06/26/rt-manifest-resource-and-isolation-aware-enabled.aspx">ISOLATION_AWARE_MANIFEST_RESOURCE_ID</a>.) E.g.:</p>

<pre class="brush: xml; gutter: false; class-name: &#39;code&#39;">&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&gt;
&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'&gt;
  &lt;file name=&quot;plugindependency.dll&quot; /&gt;
&lt;/assembly&gt;</pre>

<p>When <code>plugin.dll</code> is loaded, the loader automatically activates this manifest when resolving static dependencies and doing DllMain callouts. Files listed the manifest bypass the DLL search order and are directly loaded out of the directory of the manifest, in this case <code>plugindir</code>, which is what we want. Problem solved.</p>

<h6>Notes</h6>

<p>Beyond static imports, the embedded manifest isn't always active when code inside <code>plugin.dll</code> is executing. To have it be active, you either need to use ISOLATION_AWARE_ENABLED or manual activation/deactivation, as described in <a href="https://blogs.msdn.com/junfeng/archive/2007/06/26/rt-manifest-resource-and-isolation-aware-enabled.aspx">Junfeng’s post</a>, for example if you want LoadLibraryEx to be able to find <code>plugindependency.dll</code></p>

<p>Beyond dlls, you can also list all of your plugin's resource files in the manifest as well. They won't automatically be found, but <a href="https://msdn.microsoft.com/en-us/library/aa365527.aspx">SearchPath</a> with a NULL first parameter while the appropriate manifest is active <a href="https://msdn.microsoft.com/en-us/library/aa375986.aspx">will find them in the correct directory</a> (for files listed in the manifest, you can disregard the remarks section of the API documentation.) Unfortunately ISOLATION_AWARE_ENABLED doesn't wrap SearchPath, so you'll have to do manual activation/deactivation here.</p>

<p><strong>Caution</strong>: if <code>plugin.dll</code> depends on some external redistributable components, don't list them directly as <code>&lt;file&gt;</code> elements in the plugin's manifest file, because it will prevent them from being serviced in the future (listing dependencies on other side-by-side assemblies is fine.) For example, a Microsoft dll might get updated by installation into the system directory -- if the dll is listed in the manifest, your plugin won't pick up the serviced version, opening you up to security issues.</p>]]></content:encoded>
    </item>
    <item>
      <title>Checking for the Visual Studio runtime libraries</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/checking-for-the-visual-studio-runtime-libraries</link>
      <pubDate>Tue, 02 Mar 2010 13:26:00 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2010/03/02/checking-for-the-visual-studio-runtime-libraries/</guid>
      <description><![CDATA[Applications developed with Visual Studio 2005, 2008 and 2010 can make use of certain runtime...]]></description>
      <content:encoded><![CDATA[<p>Applications developed with Visual Studio 2005, 2008 and 2010 can make use of certain runtime libraries like the C/C++ runtimes, ATL, MFC and OpenMP.</p>  <p>Visual Studio 2005 &amp; 2008 runtimes are shipped as Windows Side-by-Side assemblies. Determining whether these are installed isn’t as straightforward as checking for file existence, <a href="https://blogs.msdn.com/talagrand/archive/2010/02/13/determining-if-a-windows-side-by-side-assembly-is-centrally-installed.aspx" mce_href="https://blogs.msdn.com/talagrand/archive/2010/02/13/determining-if-a-windows-side-by-side-assembly-is-centrally-installed.aspx">as outlined in this post</a>. I promised to put those techniques to use, which I’m doing here, along with a checker for the non-side-by-side 2010 runtimes.</p>  <p>To help understand the install state of the Visual Studio 2005/2008/2010 runtimes, I’ve written the creatively-named &quot;checkruntimes.exe&quot;, which you can find in the zip file attached at the bottom of this post.</p>  <h6>Usage:</h6>  <pre class="brush: plain; gutter: false; class-name: &#39;code&#39;">&gt; checkruntimes.exe –help

Installation checker for Visual Studio runtime libraries
By default checks for versions 8, 9 and 10 of the runtime libraries on
all architectures, both debug &amp; release

Usage:

  checkruntimes.exe [-quiet] [-help] [-8] [-9] [-10] [-debug] [-retail]
                [-x86] [-x64] [-ia64] [-crt] [-atl] [-openmp] [-mfc]

The command-line switches -8 -9 ... -x86 -mfc are restrictions. That is to say,
by default everything is searched, but if specified only those specific
libraries will be searched for.

The return value of the program is the number of libraries found.
If you pass the -quiet switch, no output is generated, so you can use this
program from a script to validate installation state of runtimes.

Examples:

  checkruntimes.exe -9 -retail -x86 -crt
  Check for the Visual C++ v9 (VS 2008) retail 32-bit runtime library.

  checkruntimes.exe -10 -x64
  Check for all Visual Studio version 10 (VS 2010) x64 runtime libraries.

  checkruntimes.exe -8 -ia64 -debug -quiet
  Check for all Visual Studio v8 (VS 2005) debug Itanium-architecture libraries,
  but don't display any output, only return the number found.</pre>

<h6>Samples:</h6>

<pre class="brush: plain; gutter: false; class-name: &#39;code&#39;">&gt; checkruntimes.exe -x86 -crt -8 -10</pre>

<p>When called with no arguments, it lists runtimes it can find – calling checkruntimes.exe with no arguments is equivalent to calling:</p>

<pre class="brush: plain; gutter: false; class-name: &#39;code&#39;">&gt; checkruntimes.exe -8 -9 -10 -debug -retail -x86 -x64 -ia64 -crt -atl -openmp -mfc</pre>

<p>Of note, the return code is the number of runtimes found of the machine. For example, suppose you were checking for the 32-bit release of the VS2008 CRT &amp; ATL. From a script you could invoke:</p>

<pre class="brush: batch; gutter: false; class-name: &#39;code&#39;">@echo off
checkruntimes -crt -atl -9 -retail -x86 -quiet
echo Found %ERRORLEVEL% libraries
if %ERRORLEVEL% NEQ 2 goto :LibrariesNotFound
echo Success!
goto :EOF
:LibrariesNotFound
echo Some of x86 crt and atl v9 retail not found</pre>

<h6>Notes:</h6>

<p>Visual Studio 2005 is referred to by the version number 8, VS 2008 likewise by the version number 9 and VS2010 by the version number 10. </p>

<p>Note also that while this program can check for their presence, the debug runtimes are not redistributable. You can find more information about those here: <a title="https://msdn.microsoft.com/en-us/library/aa985618.aspx" href="https://msdn.microsoft.com/en-us/library/aa985618.aspx" mce_href="https://msdn.microsoft.com/en-us/library/aa985618.aspx">https://msdn.microsoft.com/en-us/library/aa985618.aspx</a></p>

<p>For the Visual Studio 2005 &amp; 2008 runtimes, as they are side-by-side assemblies, there can be multiple versions of each assembly installed. This utility only displays the highest-version assembly installed, as dependencies on lower build/revision numbered assemblies can be satisfied by higher-versioned ones.</p>
<!-- <p>“x64” is the <a href="https://en.wikipedia.org/wiki/X86-64" mce_href="https://en.wikipedia.org/wiki/X86-64">term used for x86-64 bit processors</a> (the vast majority of 64-bit consumer processors), while “ia64” is used to designate <a href="https://en.wikipedia.org/wiki/Itanium" mce_href="https://en.wikipedia.org/wiki/Itanium">Itanium processors</a>. </p> -->

<h6>What about Visual Studio .NET 2002 and Visual Studio .NET 2003?</h6>

<p>While on a development machine these redistributables may be placed System32 by the development environment,&#160; they are not meant to be centrally installed on client machines. Instead, they must be included into each application’s local directory for private use by that application. For&#160; this reason, there’s nothing for this tool to check – the&#160; redistributables should never be centrally installed. For more information on redistribution policies for these versions of Visual Studio, please see here: <a title="https://support.microsoft.com/kb/326922" href="https://support.microsoft.com/kb/326922" mce_href="https://support.microsoft.com/kb/326922">https://support.microsoft.com/kb/326922</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/09/97/31/15/checkruntimes.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-97-31-15/checkruntimes.zip">checkruntimes.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Checking if a Windows Side-by-Side assembly is installed</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/checking-if-a-windows-side-by-side-assembly-is-installed</link>
      <pubDate>Sat, 13 Feb 2010 02:28:00 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2010/02/13/checking-if-a-windows-side-by-side-assembly-is-installed/</guid>
      <description><![CDATA[Centrally installed Windows Side-by-Side assemblies are located in the Windows\WinSxS directory....]]></description>
      <content:encoded><![CDATA[<p>Centrally installed Windows Side-by-Side assemblies are located in the Windows\WinSxS directory. This is called the &quot;Windows Side-by-Side Assembly Cache&quot;, a term that mirrors the Global Assembly Cache for managed assemblies. Let’s discuss how to check for files in this cache.</p>  <h6>Why not just probe the WinSxS directory for the expected files?</h6>  <p>The existence of files in this directory should not be taken as an indication that the operating system considers these files to be installed. True to its designation of &quot;cache&quot;, the directory may hold on to recently-installed or soon-to-be-installed files until they are installed or scavenged in bulk. Scavenging happens periodically, but it cannot be controlled or induced. It is important to note then, that uninstalling a Side-by-Side assembly may not immediately remove the associated files from the WinSxS directory. This is expected, and not a violation of Windows Logo requirements for clean uninstall.</p>  <p>Second, the internal layout of this directory is not documented as it changes with each release of Windows. For this reason, direct paths into this directory should not be hard-coded for probing anywhere. (They should not even be computed &amp; stored – if the user were to upgrade their OS since the time a path was computed the information would no longer be accurate.) </p>  <h6>Programmatically checking install state</h6>  <p>The easiest method to check whether an assembly is installed is to simply try to use it. While trying to run a program that depends on an assembly and checking for failure to launch is certainly a (heavy-handed) way of accomplishing this, perhaps the best approach is to use the <a href="https://msdn.microsoft.com/en-us/library/aa374166(VS.85).aspx">Activation Context APIs</a>.     <br />Given a manifest &quot;CheckMFC.manifest&quot;:     <br /></p>  <pre class="brush: xml; gutter: false; class-name: &#39;code&#39;">&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&gt; 
&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'&gt; 
  &lt;dependency&gt; 
    &lt;dependentAssembly&gt; 
      &lt;assemblyIdentity name=&quot;Microsoft.VC90.MFC&quot; 
                        version=&quot;9.0.30729.1&quot; 
                        processorArchitecture=&quot;x86&quot; 
                        publicKeyToken=&quot;1fc8b3b9a1e18e3b&quot; 
                        type=&quot;win32&quot; /&gt; 
    &lt;/dependentAssembly&gt; 
  &lt;/dependency&gt; 
&lt;/assembly&gt;</pre>

<p>Use the following code: </p>

<pre class="brush: cpp; gutter: false; class-name: &#39;code&#39;">BOOL fInstalled = FALSE; 
ACTCTXW acw = { sizeof(acw) }; 
acw.lpSource = L&quot;CheckMFC.manifest&quot;; 

HANDLE hActCtx = CreateActCtxW(&amp;acw); 
if (hActCtx != INVALID_HANDLE_VALUE) { 
    fInstalled = TRUE; 
    ReleaseActCtx(hActCtx); 
}</pre>

<p>Note that this code doesn’t check for version 9.0.30729.1 strictly – it will also flag success if there’s a compatible higher version installed (technically, if there is an installed assembly with a higher revision/build version that redirects 9.0.30729.1 through a publisher policy).</p>

<p>&#160;</p>

<p>A second way to check is to use the Assembly Cache APIs directly, notably <a href="https://msdn.microsoft.com/en-us/library/aa375163(VS.85).aspx">IAssemblyCache::QueryAssemblyInfo</a>. Note that in general, these APIs are supported only on Vista and later, and may not be available or work as intended on earlier OSes. The difference with this method is that it requires you to know the exact details of the assembly you are looking for, including the full version number, Major.Minor.Revision.Build, which is overly restrictive if the question is &quot;is there an installed assembly that will let my application run?&quot; </p>

<p>&#160;</p>

<p>In the next post, I will provide a simple tool to verify the installation of the Visual Studio redistributable assemblies.</p>]]></content:encoded>
    </item>
    <item>
      <title>Taking a Coffee Break with Windows</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/taking-a-coffee-break-with-windows</link>
      <pubDate>Mon, 21 Dec 2009 21:14:58 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2009/12/21/taking-a-coffee-break-with-windows/</guid>
      <description><![CDATA[If you’re in Paris before the end of December, you may want to stop at the Windows 7 Café. It’s...]]></description>
      <content:encoded><![CDATA[<p>If you’re in Paris before the end of December, you may want to stop at the Windows 7 Café.</p> <p>It’s filled with rooms describing each aspect of Windows, from multimedia to security to gaming, and large lounges where you can try out the latest computers.<br>Since I was wearing a Windows-logo scarf from the last company meeting, I was given the royal tour from the friendly staff (with nicknames like <em>Snap</em>man for <a href="https://blogs.msdn.com/e7/archive/2009/03/17/designing-aero-snap.aspx">Aero Snap</a> and <em>Peek</em>man for <a href="https://windows.microsoft.com/en-us/windows7/products/features/peek">Aero Peek</a>). Pictures below:</p> <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_8858" border="0" alt="IMG_8858" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8858_1.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8858_1.jpg" width="244" height="184"> <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_8863" border="0" alt="IMG_8863" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8863_1.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8863_1.jpg" width="304" height="229"> <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_8869" border="0" alt="IMG_8869" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8869_1.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8869_1.jpg" width="364" height="274">&nbsp;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_8868" border="0" alt="IMG_8868" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8868_2.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8868_2.jpg" width="184" height="244"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_8875" border="0" alt="IMG_8875" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8875_1.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8875_1.jpg" width="244" height="184">&nbsp;&nbsp; </p> <p><strong><font size="4">Moi je suis PC!</font></strong></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8883.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8883.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="IMG_8883" border="0" alt="IMG_8883" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8883_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/talagrand/WindowsLiveWriter/TakingaCoffeeBreakwithWindows_57CE/IMG_8883_thumb.jpg" width="644" height="484"></a> </p> <p>&nbsp;</p> <p>The Windows 7 Café is located at <a href="https://www.bing.com/maps/?v=2&amp;where1=47%20Boulevard%20de%20S%C3%A9bastopol%2C%2075001%20Paris&amp;encType=1 ">47 Boulevard de Sébastopol</a>, near the Châtelet.<br>Buying coffee is optional</p>]]></content:encoded>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://docs.microsoft.com/archive/blogs/talagrand/introduction</link>
      <pubDate>Thu, 28 Aug 2008 05:10:00 GMT</pubDate>
      <dc:creator><![CDATA[talagrand1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/talagrand/2008/08/28/introduction/</guid>
      <description><![CDATA[I created this blog several years ago; I think it's high time I wrote a "frist psot!!1!", no?I've...]]></description>
      <content:encoded><![CDATA[<P>I created this blog several years ago; I think it's high time I wrote a "frist psot!!1!", no?<BR><BR>I've worked on a number of teams, but mostly on one technology, Native/Win32&nbsp;"<A class="" title='Side-by-Side assemblies"' href="https://msdn.microsoft.com/en-us/library/aa375193(VS.85).aspx" mce_href="https://msdn.microsoft.com/en-us/library/aa375193(VS.85).aspx">Side-by-Side assemblies</A>", also called Fusion, so that's what I'll be documenting in subsequent posts. The best resources on this topic are <A class="" href="https://blogs.msdn.com/junfeng/archive/tags/Fusion/Win32/default.aspx" mce_href="https://blogs.msdn.com/junfeng/archive/tags/Fusion/Win32/default.aspx">Junfeng Zhang's</A>&nbsp;and <A class="" href="https://blogs.msdn.com/jonwis/" mce_href="https://blogs.msdn.com/jonwis/">Jon Wiswall's</A> blogs, so I'd recommend you start there first.</P>]]></content:encoded>
    </item>
  </channel>
</rss>