Mombu the Programming Forum sponsored links

Go Back   Mombu the Programming Forum > Programming > msvcm80 version
User Name
Password
REGISTER NOW! Mark Forums Read

sponsored links


Reply
 
1 14th April 07:32
carlo folini~‰bž)þâè+¢êlž‹)j
External User
 
Posts: 1
Default msvcm80 version



We are migrating a project from 1.1 to 2.0 that includes some c++.
We are seeing some binding failure (investigated with the fusion logs).
It's quite difficult to sort out the problem so we need a clarification....

In the SxS dir there's something that seems strange....
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a 1e18e3b_8.0.50727.42_x-ww_0de06acd

from the dir it seems version 8.0.50727.42 with token 1fc8b3b9a1e18e3b.

Looking msvcm80.dll assemby the name is

msvcm80, Version=8.0.50608.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Is it correct?
--
Carlo Folini
  Reply With Quote


  sponsored links


2 14th April 07:32
richard grimes [mvp]
External User
 
Posts: 1
Default msvcm80 version



Yup. With 2.0 you do not get the choice, you have to use the native
assembly side-by-side cache. To prevent the binding errors make sure
that your C++ DLLs have the side-by-side manifest file bound as an
unmanaged resource. More details here:

http://www.grimes.demon.co.uk/workshops/fusWSThir****.htm

Richard
--
Fusion Tutorial: http://www.grimes.demon.co.uk/workshops/fusionWS.htm
Security Tutorial:
http://www.grimes.demon.co.uk/workshops/securityWS.htm
  Reply With Quote
3 15th April 16:29
v-yren
External User
 
Posts: 1
Default msvcm80 version


Hi Carlo,

Thanks for posting!

As Richard's mentiond, you can use the native assembly side-by-side. Just
for your reference:
http://blogs.msdn.com/martynl/archive/2005/10/13/480880.aspx

Regards,

Yuan Ren [MSFT]
Microsoft Online Support
  Reply With Quote
4 15th April 16:30
carlo folini~‰bž)þâè+¢êlž‹)j
External User
 
Posts: 1
Default msvcm80 version


Hi Richard,
your site it's incredibly usefull!

Below you can see the fuslogvw entry for my problem (at least I think the
problem lies there ;-)) and the ie log.

THe application lives in the browser, where we need to interact with a
scanner.
THis used to work in 1.1 and vs2003, but porting to 2.0 and vs2005 fails to
work.
We are using an assembly (WPX_Scanner.dll) in ie6 signed with full trust


written in managed c++, that wraps a dll written in c that is essentially a
driver for a scanner.

Where do we need to set the manifest?
The c# assembly, c++?

thanks in advance for your help

The ielog says
Microsoft.IE.SecureFactory: Trying to create instance of type
http://localhost/WPEXWeb/Assembly/WPX_Scanner.dll#it.creval.WPEX.WPX_Scanner.WPX_Scanner
Microsoft.IE.SecureFactory:
System.Runtime.Serialization.SerializationExceptio n: Type is not resolved for member
'<CrtImplementationDetails>.ModuleLoadExceptionHan dlerException,msvcm80,
Version=8.0.50608.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String
typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
at Microsoft.IE.SecureFactory.CreateInstanceWithSecur ity(Int32 dwFlag,
Int32 dwZone, String pURL, String uniqueIdString, String link, String
licenses)

*** Assembly Binder Log Entry (2/7/2006 @ 9:55:50 AM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\msco rwks.dll
Running under executable C:\Program Files\Internet Explorer\iexplore.exe
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: User = MYDOMAIN\MYUSER
LOG: DisplayName = msvcm80, Version=8.0.50608.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/Internet Explorer/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = iexplore.exe
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\conf ig\machine.config.
LOG: Post-policy reference: msvcm80, Version=8.0.50608.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
LOG: The same bind was seen before, and was failed with hr = 0x80070002.
ERR: Unrecoverable error occurred during pre-download check (hr = 0x80070002).

--
Carlo Folini


"Richard Grimes [MVP]" wrote:
  Reply With Quote
5 15th April 16:30
jetan
External User
 
Posts: 1
Default msvcm80 version


Hi folini,

Thanks for your feedback.

You can use manifest to instruct the assembly or dll which binds to
msvcm80.dll to look for this new version of msvcm80.dll.(We can believe
that this dll is backward compatible)

You can use Dependency Walker(depends.exe) to see which assembly or dll
directly binds to the msvcm80.dll. Then we can place a manifest together
with this assembly/dll.(We have the option to embed this manifest into the
assembly/dll as resource)

For more information, please refer to the link below:
"How To Build and Service Isolated Applications and Side-by-Side Assemblies
for Windows XP"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/
sidexsidewinxp.asp

Hope this helps!

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - http://www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
  Reply With Quote
6 15th April 16:30
carlo folini~‰bž)þâè+¢êlž‹)j
External User
 
Posts: 1
Default msvcm80 version


Hi Jeffrey,
using depends we see that WPX_Bancor.dll (the c++ assembly) correctly
references msvcm80.dll.
In this assembly there's a manifest embedded (see below).

Richard in a previous post told me to specify this manifest as an unmanaged
resource.
I didn't realize what he meaned :$

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn chemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT'
version='8.0.50608.0' processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>

--
Carlo Folini
  Reply With Quote
7 19th April 10:04
jetan
External User
 
Posts: 1
Default msvcm80 version


Hi Carlo ,

Thanks for your feedback.

Yes, this means the application manifest file binds with '8.0.50608.0'
version of 'Microsoft.VC80.DebugCRT'. We can provide a pulisher
configuration file or an application configuration file to perform a
binding redirection on a system basis or application basis. Please read the
"Servicing Shared Assemblies and Applications" section in the article I
provided in last reply. This section describes the steps and information in
details.

Hope this helps!

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - http://www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
  Reply With Quote
8 19th April 10:04
carlo folini~‰bž)þâè+¢êlž‹)j
External User
 
Posts: 1
Default msvcm80 version


Jeffrey,
the thing that seems strange to me is the message taken from the fuslogvw...

LOG: Post-policy reference: msvcm80, Version=8.0.50608.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
LOG: The same bind was seen before, and was failed with hr = 0x80070002.

There's already a policy file that redirects to the correct msvcm80. This
policy isn't used in our case?

We need to create another policy file?

--
Carlo Folini
  Reply With Quote
9 19th April 10:05
jetan
External User
 
Posts: 1
Default msvcm80 version


Hi Carlo ,

Thanks for your feedback.

I am not sure of it. However, if there is any policy applied, the policy
file should reside in the directory below:
C:\WINDOWS\WinSxS\Policies

You can check this directory to see if there is any policy file applies to
msvcm80. Thanks

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - http://www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
  Reply With Quote
10 19th April 10:06
carlo folini~‰bž)þâè+¢êlž‹)j
External User
 
Posts: 1
Default msvcm80 version


Hi Jeffrey,
yes there's a policy for this.
For some reason it seems that it isn't applied....

<?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">

<assemblyIdentity type="win32-policy"
name="policy.8.0.Microsoft.VC80.CRT" version="8.0.50727.42"
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<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>
</dependency>

</assembly>

Ciao
CArlo
--
Carlo Folini
  Reply With Quote
Reply


Thread Tools
Display Modes




Copyright © 2006 SmartyDevil.com - Dies Mies Jeschet Boenedoesef Douvema Enitemaus -
666