|
-
February 21st, 2008, 05:28 AM
#1
dotnet assemblies
Recently I started looking into visual studio utilties such as dumpbin.exe and ildasm.exe to get a better understanding of assemblies in dotnet. A few questions came up and I'd appreciate some input.
Code:
// The executable is developed using vs 2005.
// dumpbin /all exename (copied only clr header section)
clr Header:
48 cb
2.05 runtime version
19930 [ F6E4] RVA [size] of MetaData Directory
1 flags
60000BC entry point token
CDB0 [ CB80] RVA [size] of Resources Directory
0 [ 0] RVA [size] of StrongNameSignature Directory
0 [ 0] RVA [size] of CodeManagerTable Directory
0 [ 0] RVA [size] of VTableFixups Directory
0 [ 0] RVA [size] of ExportAddressTableJumps Directory
0 [ 0] RVA [size] of ManagedNativeHeader Directory
// The executable is developed using vs 2002.
// dumpbin /all exename (copied only clr header section)
clr Header:
48 cb
2.00 runtime version
BC14 [ B82C] RVA [size] of MetaData Directory
1 flags
6000004 entry point token
A358 [ 18BC] RVA [size] of Resources Directory
0 [ 0] RVA [size] of StrongNameSignature Directory
0 [ 0] RVA [size] of CodeManagerTable Directory
0 [ 0] RVA [size] of VTableFixups Directory
0 [ 0] RVA [size] of ExportAddressTableJumps Directory
0 [ 0] RVA [size] of ManagedNativeHeader Directory
The following 1.0.3705, 1.1.4322, 2.0.50727 .NET versions are installed on my computer.
1. Why does the CLR header operate with runtime version 2.00 and 2.05? I would expect the application built with vs2002 to use .NET 1.1 and the project built with vs2005 to use .NET version 2.0. The above information does not make sence to me.
2. Does mscoree.dll use the runtime version info in the clr header to determine which clr to use?
Code:
// The executable is developed using vs 2005.
// ildasm exefile (copied only first section of manifest)
// Metadata version: v2.0.50727
.module extern user32.dll
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System.Drawing
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:0:0:0
}
.assembly extern System.Windows.Forms
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
3. In the above output all .NET assemblies ref to verion 2.0.0.0. None of these files exist on my computer with version 2.0.0.0. They all use 2.0.50727. How does this work?
Last edited by laasunde; February 21st, 2008 at 05:56 AM.
Reason: Decreased the length of the post
Before post, make an effort yourself, try googling or search here.
When posting, give a proper description of your problem, include code* and error messages.
*All code should include code tags
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|