VS2005 and isolated apps.

M

Marcel

Hi,

We're building an application consisting of an exe and several dlls
with VS2005 that needs to be xcopy installed.
VS2005 automatically embeds a manifest binding the app and dlls to the
assembly 'Microsoft.VC80.CRT' version 8.0.50608.0. Through a policy in
the GAC this version is redirected to version 8.0.50727.42 which is
deployed with the app.

But when deploying this to a machine not having this policy installed,
the .NET runtime cannot find the correct version of the assembly.
To correct this. I created an application configuration file like the
following to redirect to the new assembly version:

<?xml version ="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0"
newVersion="8.0.50727.42"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

This does not work and results in a 'The system cannot execute the
specified program' error.

The event log states: Syntax error in manifest or policy file "F:
\dv31\Microsoft.VC80.CRT.MANIFEST" on line 4.
This file is just a copy from the redist directory.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50608.0"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>

Anyone any idea how to get this working? The application config file
determines the binding context for all the DLLs it uses, right?
Why didn't MS just update the manifest files when they updated the
runtime DLLs?

TIA,
-- Marcel
 
N

Nathan Mates

We're building an application consisting of an exe and several dlls
with VS2005 that needs to be xcopy installed.
VS2005 automatically embeds a manifest binding the app and dlls to the
assembly 'Microsoft.VC80.CRT' version 8.0.50608.0. Through a policy in
the GAC this version is redirected to version 8.0.50727.42 which is
deployed with the app.

Why not just turn off the manifests? For the exe and DLLs,
right-click on the project, and there's a manifest setting under the
linker settings, as well as at the top level of properties. In both
settings, turn the manifest to off. That's worked far more reliably
for me than fighting XML hell -- the exe and dll are bit larger, but
hey, it works.

If they worked reliably right out of the box, manifests sound like
a nice idea. However, I'd put manifests under the typical Microsoft
paradigm of getting it right by v3.0 (approximately), but we're still
stuck at manifests v0.8beta4, though.

Nathan Mates
 
M

Marcel

Why not just turn off the manifests? For the exe and DLLs,
right-click on the project, and there's a manifest setting under the
linker settings, as well as at the top level of properties. In both
settings, turn the manifest to off. That's worked far more reliably
for me than fighting XML hell -- the exe and dll are bit larger, but
hey, it works.

If they worked reliably right out of the box, manifests sound like
a nice idea. However, I'd put manifests under the typical Microsoft
paradigm of getting it right by v3.0 (approximately), but we're still
stuck at manifests v0.8beta4, though.

Nathan Mates
--

That would be nice if it were an option. But the application uses
several COM controls that need the manifest in order to work without
registration.

There must be a way to make this work. I just don't know how!

-- Marcel
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top