问题
I have an assembly with the following manifest embedded:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
On one of my machines this assembly doesn't work (the assembly fails to load). Opening this in dependency walker gives me the following error message:
Error: The Side-by-Side configuration information for "SomeAssembly.dll" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
The identical assembly works fine on another machine, and I get no error with dependency walker.
As far as I can work out the problem is due to the first machine missing a dependency of some sort (for example the MSVCR redistributable), however I've already checked and the Microsoft Visual C++ 2005 Redistributable is installed fine on both machines.
How do I go about figuring out what the missing dependency is?
The only thing I have noticed is that the WinSxS directory on the working machine has an additional entry:
x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
回答1:
Sorted!
Someone kindly pointed out to me that the '"SomeAssembly.dll"' mentioned in Dependency Walker was in fact a different dll from the one I opened in Dependency Walker! (Whoops!)
Looking at the manifest for this assembly I can see that the problem is due to the fact that Microsoft.VC80.CRT v8.0.50727.4053 is targetted, but not present on this machine. (Installed via a security update).
回答2:
After struggling with the same problem, I have noticed that the updates applied to development Visual Studio installation might address some target machine updates:
For example, the highlighted update above addresses this specific question.
回答3:
Instaed of relaying on side by side I would suggest you to don't include the "Manifest file" inside your assembly. Expecially because you cannot be sure that the PC you're going to install your software is updated to the version included in your manifest.
You can disable it setting the project property "Linker\Manifest File\Generate Manifest" to "No".
I hope this could help. Good luck
来源:https://stackoverflow.com/questions/1420629/side-by-side-configuration-error-microsoft-vc80-crt-v8-0-50608-0