<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Assemblies Side by Side</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx</link><description>CLR today supports multiple versions of an assembly side by side, contrast to native loader. In the native world, when you call LoadLibrary(“foo.dll”) multiple times, you will only get one copy of foo.dll loaded. In CLR, since the assembly name includes</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>New and Notable 73</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#421728</link><pubDate>Wed, 25 May 2005 18:20:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:421728</guid><dc:creator>Sam Gentile's Blog</dc:creator><description /></item><item><title>re: Assemblies Side by Side</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#422025</link><pubDate>Thu, 26 May 2005 11:32:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:422025</guid><dc:creator>Anonymous</dc:creator><description>&amp;quot;CLR today supports multiple versions of an assembly side by side, contrast to native loader.&amp;quot;&lt;br&gt;&lt;br&gt;Huh? Then what is this all about: &lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp"&gt;http://msdn.microsoft.com/library/en-us/sbscs/setup/isolated_applications_and_side_by_side_assemblies_start_page.asp&lt;/a&gt;</description></item><item><title>re: Assemblies Side by Side</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#422158</link><pubDate>Thu, 26 May 2005 18:39:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:422158</guid><dc:creator>junfeng</dc:creator><description>Isolated application and assemblies means different applications can use different assemblies. But in the same application, only one version of assemblies is allowed. &lt;br&gt;&lt;br&gt;CLR does not have this restriction.</description></item><item><title>re: Assemblies Side by Side</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#424369</link><pubDate>Thu, 02 Jun 2005 19:50:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:424369</guid><dc:creator>mgrier</dc:creator><description>Two relevant points:&lt;br&gt;&lt;br&gt;1. For native sxs support, we took it as a basic requirement that we were not going to change all the myriad APIs which bind to objects based on names of some sort (file names, guids, whatever) and change the APIs to take additional parameters.  Thus, within any context (&amp;quot;activation context&amp;quot;), bindable names have to be unique and unambiguous.&lt;br&gt;&lt;br&gt;To avoid setting false expectations, we more simply refused to allow more than one assembly into a given context with the same name.  This restriction could be relaxed over time but still when someone calls CoCreateInstance() with some guid, it has to map unambiguously to exactly one COM server, so the apparent utility of loading multiple versions of the same component into a given context is pretty low since the versions would have had to change all the public bindable names (e.g. rename all the DLLs, reguid all the com servers, change all IIDs, change all progids, etc.).&lt;br&gt;&lt;br&gt;Personally I think that this is a much better solution than what CLR did in putting component identities on each type name reference.  It gives us a lot more agility and the restriction to not be able to load more than one version of a component into a given context simultaneously is not much of a restriction in practice.&lt;br&gt;&lt;br&gt;2. The real problem here is that &amp;quot;Elvis  friendly&amp;quot; type signatures are, in general, directly at odds with &amp;quot;compatibility friendly&amp;quot; type signatures.  I think this is just life and we need to stop our hand-wringing and wailing &amp;quot;surely something must be done!&amp;quot;.  There have been several grand experiments in this space and basically they all failed in their grandiose plans.  Either you get locked into compatibility on an API with a huge surface area or you end up breaking your clients all the time.  This dilemma is exactly why we invented sxs in the first place to give some flexibility here.</description></item><item><title>re: Assemblies Side by Side</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#424416</link><pubDate>Thu, 02 Jun 2005 21:06:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:424416</guid><dc:creator>junfeng</dc:creator><description>Thanks Mike. &lt;br&gt;&lt;br&gt;The CLR model is really no different from the native sxs model. Each type has a qualified assembly token, and the assembly token has the version number. In native sxs, the assembly token is implied by the containing manifest. The difference is really a binding policy. &lt;br&gt;&lt;br&gt;I certainly won't argue which one is better. They are just different.</description></item><item><title>Third party components and versioning conflicts in their shared dependencies</title><link>http://blogs.msdn.com/junfeng/archive/2005/05/25/421661.aspx#2878024</link><pubDate>Fri, 25 May 2007 21:40:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2878024</guid><dc:creator>Michael Christensen</dc:creator><description>&lt;p&gt;One of the important facets of successful solution design is realizing that the less code you develop&lt;/p&gt;
</description></item></channel></rss>