{"id":51,"date":"2007-06-20T06:55:43","date_gmt":"2007-06-20T11:55:43","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=51"},"modified":"2013-08-13T10:03:21","modified_gmt":"2013-08-13T08:03:21","slug":"redistributable-assemblies-winsxs-and-visualstudio-2005","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/","title":{"rendered":"Redistributable Assemblies, WinSxS and VisualStudio 2005"},"content":{"rendered":"<p>You might be interested in this topic if you experienced the following problem:<\/p>\n<ul>\n<li>developed your VC++ application with Visual Studio 2005, it worked ok on your computer and when you put it on another it does not run, or<\/li>\n<li>your application run both on your machine and other machines (without VS 2005 installed), but after installing SV 2005 SP1 and rebuild, it no longer worked.<\/li>\n<\/ul>\n<p>Let me start with the first: any application has dependencies on assemblies (DLLs). An MFC application (in a release build) depends at least on the CRT (msvcr80.dll, msvcp80.dll) and MFC (mfc80.dll or mfc80u.dll) assemblies. You have them on your machine because you have VS 2005 installed. But a machine without it, may not have them. In order to be able to run the application on such machines you have to redistribute them (notice you can only redistribute release builds of the assemblies).<\/p>\n<p>Visual C++ 2005 supports a new deployment model for Windows client applications based on <em>isolated applications<\/em> and <em>side-by-side assemblies<\/em>. Basically, assemblies can be:<\/p>\n<ul>\n<li><em>shared<\/em> (they are globally registered in the system, installed in the Global Assembly Cache &#8211; GAC folder in Windows &#8211; and available to all applications) or<\/li>\n<li><em>side-by-side<\/em>, described with a manifest, distributed with the application and available only to that application<\/li>\n<\/ul>\n<p>In Visual C++ 2005, library assemblies (such as MFC, ATL, CRT) have been rebuilt as <em>shared side-by-side<\/em> assemblies and installed in the native assembly cache, WinSxS folder in Windows. That means they are not globally registered in the system, but are globally available to the applications that specify a dependency with a manifest file.<\/p>\n<p>By default, Visual C++ 2005 builds all native C\/C++ applications as <em>isolated applications<\/em>; such an application is a self-describing one, that uses a manifest file to describe its dependencies. A manifest is an XML file that describes the application and its dependencies.<\/p>\n<p>Such a manifest should have the same name as the application and the extension &#8220;manifest&#8221; and should specify the version number of your assembly (executable or dynamic library), processor architecture, name of the assembly and platform type; a description of your assembly is also recommended. And example is shown bellow:<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?>\r\n&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>\r\n&lt;assemblyIdentity \r\n  version=\"1.0.0.0\" \r\n  processorArchitecture=\"X86\" \r\n  name=\"CompanyName.ProductName\" \r\n  type=\"win32\"\r\n \/> \r\n\r\n &lt;description>Description of your application.&lt;\/description>\r\n&lt;\/assembly>\r\n<\/pre>\n<p>You specify a dependency in the manifest file by adding a dependency element. If you want to specify the use of Win-XP styles for your controls, you need to add a dependency to Microsoft.Windows.Common-Controls:<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?>\r\n&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>\r\n&lt;assemblyIdentity \r\n  version=\"1.0.0.0\" \r\n  processorArchitecture=\"X86\" \r\n  name=\"CompanyName.ProductName\" \r\n  type=\"win32\"\r\n \/> \r\n\r\n &lt;description>Description of your application.&lt;\/description>\r\n\r\n&lt;dependency> \r\n  &lt;dependentAssembly> \r\n   &lt;assemblyIdentity \r\n    type=\"win32\" \r\n    name=\"Microsoft.Windows.Common-Controls\" \r\n    version=\"6.0.0.0\" \r\n    processorArchitecture=\"X86\" \r\n    publicKeyToken=\"6595b64144ccf1df\" \r\n    language=\"*\" \r\n   \/>\r\n  &lt;\/dependentAssembly> \r\n &lt;\/dependency>\r\n\r\n&lt;\/assembly>\r\n<\/pre>\n<p>Now, going back the to problem: in the first case you either install the Microsoft Visual C++ Redistributable Package on the target machine, so that the assemblies are made available to your application from the WinSxS folder, or you put them in the same folder with your application and use a manifest file to describe the dependencies.<\/p>\n<p>However, you have to notice that if the DLLs are also present in the WinSxS folder, the system will prefer these DLLs to the ones in the same folder with the application. This is different from the folder deployment model, that appear with Windows 2000, when the system first checked the working folder of the application and after that the system folder (system32).<\/p>\n<p>This is one of the causes of the second problems I mentioned above: you developed your application with VC++ 2005, deployed it as I explained above and it worked. But then, after installing VS 2005 SP1 and rebuilding and re-deploying the application no longer worked on the other machines. The root of the problem are the assemblies version: prior to SP1, the assemblies version was 8.0.50727.42. You deployed them on the target machine or had them installed with the redistributable package (downloadable from http:\/\/www.microsoft.com\/downloads\/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&amp;displaylang=en). But after SP1 on your machine a new version was avaiable: 8.0.50727.762. Your new builds now depends on this version of assemblies (CRT, MFC). If you run your application in debugger, you&#8217;ll see that the DLLs from WinSxS are loaded:<\/p>\n<pre class=\"console\">\r\n'testapp.exe': Loaded \r\n'C:WINDOWSWinSxSx86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4mfc80d.dll', Symbols loaded. \r\n\r\n'testapp.exe': Loaded \r\n'C:WINDOWSWinSxSx86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9fmsvcr80d.dll', Symbols loaded.\r\n<\/pre>\n<p>The listing shows that MFC80D.dll was loaded from folder x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4 in WinSxS and MSVCR80D.dll from x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f. These are the debug builds for MFC and CRT. The behaviour is the same with the release ones. The name of the folder includes the platform (x86), the assembly name (Microsoft.VC80.DebugMFC, Microsoft.VC80.DebugCRT), the public token (1fc8b3b9a1e18e3b) and the version number (8.0.50727.762). On a machines with VS 2005 SP1 you have both versions 8.0.50727.42 and 8.0.50727.762, but when you redistribute it to one without the later, the application does not run, unless:<\/p>\n<ul>\n<li>you provide the correct dependent assemblies in your application folder (assemblies with version 8.0.50727.762), or<\/li>\n<li>you install the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/downloads\/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displayLang=en\">Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)<\/a>. That installs the new assemblies in WinSxS.<\/li>\n<\/ul>\n<p>As I explained earlier, in case you have the required assemblies both in WinSxS and your application folder, the ones from WinSxS will be loaded. However, there is a workaround for that, as found by <a target=\"_blank\" href=\"http:\/\/www.codezone.de\/DetailPage.Codezone?GUID=187366d9-9311-4f1c-b2ce-b2d339ed9c9b\">Andre Stille<\/a>: removing the publicKeyToken attribute from the manifest files. For your application manifest that looked like this<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&gt;\r\n&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'&gt;\r\n&lt;assemblyIdentity  version=\"1.0.0.0\"\r\n  processorArchitecture=\"X86\"\r\n  name=\"CompanyName.ProductName\"\r\n  type=\"win32\"\r\n \/&gt;\r\n&lt;description&gt;Description of your application.&lt;\/description&gt;\r\n\r\n&lt;dependency>\r\n    &lt;dependentAssembly>\r\n      &lt;assemblyIdentity\r\n       type='win32'\r\n       name='Microsoft.VC80.CRT'\r\n       version='8.0.50727.762'\r\n       processorArchitecture='x86'\r\n       publicKeyToken='1fc8b3b9a1e18e3b' \/>\r\n    &lt;\/dependentAssembly>\r\n  &lt;\/dependency>   \r\n\r\n&lt;\/assembly&gt;\r\n<\/pre>\n<p>you have to change it to:<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&gt;\r\n&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'&gt;\r\n&lt;assemblyIdentity  version=\"1.0.0.0\"\r\n  processorArchitecture=\"X86\"\r\n  name=\"CompanyName.ProductName\"\r\n  type=\"win32\"\r\n \/&gt;\r\n&lt;description&gt;Description of your application.&lt;\/description&gt;\r\n\r\n&lt;dependency>\r\n    &lt;dependentAssembly>\r\n      &lt;assemblyIdentity\r\n       type='win32'\r\n       name='Microsoft.VC80.CRT'\r\n       version='8.0.50727.762'\r\n       processorArchitecture='x86' \/>\r\n    &lt;\/dependentAssembly>\r\n  &lt;\/dependency>   \r\n\r\n&lt;\/assembly&gt;\r\n<\/pre>\n<p>Also, the change is necessary for the CRT manifest, that originally looked like this:<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n&lt;assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\r\n    &lt;noInheritable>&lt;\/noInheritable>\r\n    &lt;assemblyIdentity type=\"win32\"\r\n      name=\"Microsoft.VC80.CRT\"\r\n      version=\"8.0.50727.762\"\r\n      processorArchitecture=\"x86\"\r\n      publicKeyToken=\"1fc8b3b9a1e18e3b\">\r\n    &lt;\/assemblyIdentity>\r\n    &lt;file name=\"msvcr80.dll\"\r\n          hash=\"10f4cb2831f1e9288a73387a8734a8b604e5beaa\"\r\n          hashalg=\"SHA1\">\r\n      &lt;asmv2:hash xmlns:asmv2=\"urn:schemas-microsoft-com:asm.v2\"\r\n          xmlns:dsig=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#\">\r\n        &lt;dsig:Transforms>\r\n          &lt;dsig:Transform Algorithm=\"urn:schemas-microsoft-com:HashTransforms.Identity\">\r\n          &lt;\/dsig:Transform>\r\n        &lt;\/dsig:Transforms>\r\n        &lt;dsig:DigestMethod Algorithm=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1\">\r\n        &lt;\/dsig:DigestMethod>\r\n        &lt;dsig:DigestValue>n9On8FItNsK\/DmT8UQxu6jYDtWQ=\r\n        &lt;\/dsig:DigestValue>\r\n      &lt;\/asmv2:hash>\r\n    &lt;\/file>\r\n    &lt;file name=\"msvcp80.dll\"\r\n          hash=\"b2082dfd3009365c5b287448dcb3b4e2158a6d26\"\r\n          hashalg=\"SHA1\">\r\n      &lt;asmv2:hash xmlns:asmv2=\"urn:schemas-microsoft-com:asm.v2\"\r\n          xmlns:dsig=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#\">\r\n        &lt;dsig:Transforms>\r\n          &lt;dsig:Transform Algorithm=\"urn:schemas-microsoft-com:HashTransforms.Identity\">\r\n          &lt;\/dsig:Transform>\r\n        &lt;\/dsig:Transforms>\r\n        &lt;dsig:DigestMethod Algorithm=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1\">\r\n        &lt;\/dsig:DigestMethod>\r\n        &lt;dsig:DigestValue>0KJ\/VTwP4OUHx98HlIW2AdW1kuY=\r\n        &lt;\/dsig:DigestValue>\r\n      &lt;\/asmv2:hash>\r\n    &lt;\/file>\r\n    &lt;file name=\"msvcm80.dll\"\r\n          hash=\"542490d0fcf8615c46d0ca487033ccaeb3941f0b\"\r\n          hashalg=\"SHA1\">\r\n      &lt;asmv2:hash xmlns:asmv2=\"urn:schemas-microsoft-com:asm.v2\"\r\n          xmlns:dsig=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#\">\r\n        &lt;dsig:Transforms>\r\n          &lt;dsig:Transform Algorithm=\"urn:schemas-microsoft-com:HashTransforms.Identity\">\r\n          &lt;\/dsig:Transform>\r\n        &lt;\/dsig:Transforms>\r\n        &lt;dsig:DigestMethod Algorithm=\"http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1\">\r\n        &lt;\/dsig:DigestMethod>\r\n        &lt;dsig:DigestValue>YJuB+9Os2oxW4mY+2oC\/r8lICZE=\r\n        &lt;\/dsig:DigestValue>\r\n      &lt;\/asmv2:hash>\r\n    &lt;\/file>\r\n&lt;\/assembly>\r\n<\/pre>\n<p>It should be modified to<\/p>\n<pre class=\"xml\" name=\"code\">\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n&lt;assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\r\n    &lt;noInheritable>&lt;\/noInheritable>\r\n    &lt;assemblyIdentity type=\"win32\"\r\n      name=\"Microsoft.VC80.CRT\"\r\n      version=\"8.0.50727.762\"\r\n      processorArchitecture=\"x86\"\r\n      publicKeyToken=\"1fc8b3b9a1e18e3b\">\r\n    &lt;\/assemblyIdentity>\r\n\r\n   &lt;file name=\"msvcr80.dll\"&gt;&lt;\/file&gt;\r\n   &lt;file name=\"msvcp80.dll\"&gt;&lt;\/file&gt;\r\n   &lt;file name=\"msvcm80.dll\"&gt;&lt;\/file&gt;\r\n&lt;\/assembly&gt;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>You might be interested in this topic if you experienced the following problem: developed your VC++ application with Visual Studio 2005, it worked ok on your computer and when you put it on another it does not run, or your application run both on your machine and other machines (without VS 2005 installed), but after &#8230; <a title=\"Redistributable Assemblies, WinSxS and VisualStudio 2005\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/\" aria-label=\"Read more about Redistributable Assemblies, WinSxS and VisualStudio 2005\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[10,8],"tags":[340,372,55,459,371],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-visual-studio","category-windows-programming","tag-assemblies","tag-manifest","tag-visualstudio","tag-windows","tag-winxsx"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"assemblies,manifest,visualstudio,windows,winxsx\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Redistributable Assemblies, WinSxS and VisualStudio 2005\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2007-06-20T11:55:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2013-08-13T08:03:21+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Redistributable Assemblies, WinSxS and VisualStudio 2005\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#article\",\"name\":\"Redistributable Assemblies, WinSxS and VisualStudio 2005\",\"headline\":\"Redistributable Assemblies, WinSxS and VisualStudio 2005\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"datePublished\":\"2007-06-20T06:55:43+02:00\",\"dateModified\":\"2013-08-13T10:03:21+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":16,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#webpage\"},\"articleSection\":\"Visual Studio, Windows Programming, assemblies, manifest, VisualStudio, Windows, winxsx\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/windows-programming\\\/#listItem\",\"name\":\"Windows Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/windows-programming\\\/#listItem\",\"position\":4,\"name\":\"Windows Programming\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/windows-programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#listItem\",\"name\":\"Redistributable Assemblies, WinSxS and VisualStudio 2005\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#listItem\",\"position\":5,\"name\":\"Redistributable Assemblies, WinSxS and VisualStudio 2005\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/windows-programming\\\/#listItem\",\"name\":\"Windows Programming\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/\",\"name\":\"Redistributable Assemblies, WinSxS and VisualStudio 2005\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/06\\\/20\\\/redistributable-assemblies-winsxs-and-visualstudio-2005\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2007-06-20T06:55:43+02:00\",\"dateModified\":\"2013-08-13T10:03:21+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Redistributable Assemblies, WinSxS and VisualStudio 2005","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/","robots":"max-image-preview:large","keywords":"assemblies,manifest,visualstudio,windows,winxsx","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#article","name":"Redistributable Assemblies, WinSxS and VisualStudio 2005","headline":"Redistributable Assemblies, WinSxS and VisualStudio 2005","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"datePublished":"2007-06-20T06:55:43+02:00","dateModified":"2013-08-13T10:03:21+02:00","inLanguage":"en-US","commentCount":16,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#webpage"},"articleSection":"Visual Studio, Windows Programming, assemblies, manifest, VisualStudio, Windows, winxsx"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/#listItem","name":"Windows Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/#listItem","position":4,"name":"Windows Programming","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#listItem","name":"Redistributable Assemblies, WinSxS and VisualStudio 2005"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#listItem","position":5,"name":"Redistributable Assemblies, WinSxS and VisualStudio 2005","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/#listItem","name":"Windows Programming"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/","name":"Redistributable Assemblies, WinSxS and VisualStudio 2005","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2007-06-20T06:55:43+02:00","dateModified":"2013-08-13T10:03:21+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Redistributable Assemblies, WinSxS and VisualStudio 2005","og:url":"https:\/\/mariusbancila.ro\/blog\/2007\/06\/20\/redistributable-assemblies-winsxs-and-visualstudio-2005\/","article:published_time":"2007-06-20T11:55:43+00:00","article:modified_time":"2013-08-13T08:03:21+00:00","twitter:card":"summary","twitter:title":"Redistributable Assemblies, WinSxS and VisualStudio 2005"},"aioseo_meta_data":{"post_id":"51","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:06:01","updated":"2025-12-12 07:11:10","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":16,"uagb_excerpt":"You might be interested in this topic if you experienced the following problem: developed your VC++ application with Visual Studio 2005, it worked ok on your computer and when you put it on another it does not run, or your application run both on your machine and other machines (without VS 2005 installed), but after&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">Windows Programming<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Visual Studio<\/span>","<span class=\"advgb-post-tax-term\">Windows Programming<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">assemblies<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">manifest<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">VisualStudio<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">Windows<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">winxsx<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">assemblies<\/span>","<span class=\"advgb-post-tax-term\">manifest<\/span>","<span class=\"advgb-post-tax-term\">VisualStudio<\/span>","<span class=\"advgb-post-tax-term\">Windows<\/span>","<span class=\"advgb-post-tax-term\">winxsx<\/span>"]}},"comment_count":"16","relative_dates":{"created":"Posted 19 years ago","modified":"Updated 13 years ago"},"absolute_dates":{"created":"Posted on June 20, 2007","modified":"Updated on August 13, 2013"},"absolute_dates_time":{"created":"Posted on June 20, 2007 6:55 am","modified":"Updated on August 13, 2013 10:03 am"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-P","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":2,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":1628,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions\/1628"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}