System.Reflection.Metadata
7.0.0
Prefix Reserved
See the version list below for details.
dotnet add package System.Reflection.Metadata --version 7.0.0
NuGet\Install-Package System.Reflection.Metadata -Version 7.0.0
<PackageReference Include="System.Reflection.Metadata" Version="7.0.0" />
paket add System.Reflection.Metadata --version 7.0.0
#r "nuget: System.Reflection.Metadata, 7.0.0"
// Install System.Reflection.Metadata as a Cake Addin #addin nuget:?package=System.Reflection.Metadata&version=7.0.0 // Install System.Reflection.Metadata as a Cake Tool #tool nuget:?package=System.Reflection.Metadata&version=7.0.0
About
This package provides a low-level .NET (ECMA-335) metadata reader and writer. It's geared for performance and is the ideal choice for building higher-level libraries that intend to provide their own object model, such as compilers. The metadata format is defined by the ECMA-335 - Common Language Infrastructure (CLI) specification and its amendments.
The System.Reflection.Metadata
library is built-in as part of the shared framework in .NET Runtime. The package can be installed when you need to use it in other target frameworks.
For more information, see the documentation:
- System.Reflection.Metadata.MetadataReader
- System.Reflection.PortableExecutable.PEReader
- System.Reflection.Metadata.Ecma335.MetadataBuilder
- System.Reflection.PortableExecutable.PEBuilder
- System.Reflection.PortableExecutable.ManagedPEBuilder
Example
The following example shows how to read assembly information using PEReader and MetadataReader.
using System;
using System.IO;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
class Program
{
static void Main()
{
// Open the Portable Executable (PE) file
using var fs = new FileStream("Example.dll", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using var peReader = new PEReader(fs);
// Display PE header information
PEHeader header = peReader.PEHeaders.PEHeader;
Console.WriteLine($"Image base: 0x{header.ImageBase.ToString("X")}");
Console.WriteLine($"File alignment: 0x{header.FileAlignment.ToString("X")}");
Console.WriteLine($"Subsystem: {header.Subsystem}");
// Display .NET metadata information
if (!peReader.HasMetadata)
{
Console.WriteLine("Image does not contain .NET metadata");
return;
}
MetadataReader mr = peReader.GetMetadataReader();
AssemblyDefinition ad = mr.GetAssemblyDefinition();
Console.WriteLine($"Assembly name: {ad.GetAssemblyName().ToString()}");
Console.WriteLine();
Console.WriteLine("Assembly attributes:");
foreach (CustomAttributeHandle attrHandle in ad.GetCustomAttributes())
{
CustomAttribute attr = mr.GetCustomAttribute(attrHandle);
// Display the attribute type full name
if (attr.Constructor.Kind == HandleKind.MethodDefinition)
{
MethodDefinition mdef = mr.GetMethodDefinition((MethodDefinitionHandle)attr.Constructor);
TypeDefinition tdef = mr.GetTypeDefinition(mdef.GetDeclaringType());
Console.WriteLine($"{mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
else if (attr.Constructor.Kind == HandleKind.MemberReference)
{
MemberReference mref = mr.GetMemberReference((MemberReferenceHandle)attr.Constructor);
if (mref.Parent.Kind == HandleKind.TypeReference)
{
TypeReference tref = mr.GetTypeReference((TypeReferenceHandle)mref.Parent);
Console.WriteLine($"{mr.GetString(tref.Namespace)}.{mr.GetString(tref.Name)}");
}
else if (mref.Parent.Kind == HandleKind.TypeDefinition)
{
TypeDefinition tdef = mr.GetTypeDefinition((TypeDefinitionHandle)mref.Parent);
Console.WriteLine($"{mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
}
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- System.Collections.Immutable (>= 7.0.0)
- System.Memory (>= 4.5.5)
-
.NETStandard 2.0
- System.Collections.Immutable (>= 7.0.0)
- System.Memory (>= 4.5.5)
-
net6.0
- System.Collections.Immutable (>= 7.0.0)
-
net7.0
- System.Collections.Immutable (>= 7.0.0)
NuGet packages (297)
Showing the top 5 NuGet packages that depend on System.Reflection.Metadata:
Package | Downloads |
---|---|
Microsoft.TestPlatform.ObjectModel
The Microsoft Test Platform Object Model. |
|
Microsoft.CodeAnalysis.Common
A shared package used by the Microsoft .NET Compiler Platform ("Roslyn"). Do not install this package manually, it will be added as a prerequisite by other packages that require it. More details at https://aka.ms/roslyn-packages This package was built from the source at https://github.com/dotnet/roslyn/commit/bde21ee2b98b775b010d01a93f81ef587fe80962. |
|
Microsoft.CodeAnalysis.CSharp
.NET Compiler Platform ("Roslyn") support for C#, Microsoft.CodeAnalysis.CSharp.dll. More details at https://aka.ms/roslyn-packages This package was built from the source at https://github.com/dotnet/roslyn/commit/bde21ee2b98b775b010d01a93f81ef587fe80962. |
|
System.Diagnostics.StackTrace
Provides the System.Diagnostics.StackTrace class, which allows interaction with local and remote processes. Commonly Used Types: System.Diagnostics.StackFrame System.Diagnostics.StackTrace When using NuGet 3.x this package requires at least version 3.4. |
|
Microsoft.AspNetCore.Hosting
ASP.NET Core hosting infrastructure and startup logic for web applications. This package was built from the source code at https://github.com/aspnet/AspNetCore/tree/be0a4a7f4cf06cbd6ec714bd1d9afee6bdb040a8 |
GitHub repositories (238)
Showing the top 5 popular GitHub repositories that depend on System.Reflection.Metadata:
Repository | Stars |
---|---|
icsharpcode/ILSpy
.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
|
|
dotnet/roslyn
The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
|
|
dotnet/runtime
.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
|
|
winsw/winsw
A wrapper executable that can run any executable as a Windows service, in a permissive license.
|
|
chocolatey/choco
Chocolatey - the package manager for Windows
|
Version | Downloads | Last updated | |
---|---|---|---|
9.0.0 | 5,735 | 11/12/2024 | |
9.0.0-rc.2.24473.5 | 4,347 | 10/8/2024 | |
9.0.0-rc.1.24431.7 | 3,340 | 9/10/2024 | |
9.0.0-preview.7.24405.7 | 2,079 | 8/13/2024 | |
9.0.0-preview.6.24327.7 | 3,502 | 7/9/2024 | |
9.0.0-preview.5.24306.7 | 1,681 | 6/11/2024 | |
9.0.0-preview.4.24266.19 | 717 | 5/21/2024 | |
9.0.0-preview.3.24172.9 | 1,609 | 4/11/2024 | |
9.0.0-preview.2.24128.5 | 1,426 | 3/12/2024 | |
9.0.0-preview.1.24080.9 | 1,841 | 2/13/2024 | |
8.0.1 | 150,053 | 10/8/2024 | |
8.0.0 | 12,461,069 | 11/14/2023 | |
8.0.0-rc.2.23479.6 | 2,996 | 10/10/2023 | |
8.0.0-rc.1.23419.4 | 3,361 | 9/12/2023 | |
8.0.0-preview.7.23375.6 | 1,894 | 8/8/2023 | |
8.0.0-preview.6.23329.7 | 2,424 | 7/11/2023 | |
8.0.0-preview.5.23280.8 | 2,723 | 6/13/2023 | |
8.0.0-preview.4.23259.5 | 1,321 | 5/16/2023 | |
8.0.0-preview.3.23174.8 | 1,530 | 4/11/2023 | |
8.0.0-preview.2.23128.3 | 6,811 | 3/14/2023 | |
8.0.0-preview.1.23110.8 | 2,117 | 2/21/2023 | |
7.0.2 | 995,013 | 6/13/2023 | |
7.0.1 | 590,486 | 3/14/2023 | |
7.0.0 | 34,062,829 | 11/7/2022 | |
7.0.0-rc.2.22472.3 | 32,279 | 10/11/2022 | |
7.0.0-rc.1.22426.10 | 1,592 | 9/14/2022 | |
7.0.0-preview.7.22375.6 | 4,715 | 8/9/2022 | |
7.0.0-preview.6.22324.4 | 1,528 | 7/12/2022 | |
7.0.0-preview.5.22301.12 | 1,009 | 6/14/2022 | |
7.0.0-preview.4.22229.4 | 11,771 | 5/10/2022 | |
7.0.0-preview.3.22175.4 | 988 | 4/13/2022 | |
7.0.0-preview.2.22152.2 | 2,619 | 3/14/2022 | |
7.0.0-preview.1.22076.8 | 1,072 | 2/17/2022 | |
6.0.2 | 219 | 11/12/2024 | |
6.0.1 | 61,463,015 | 3/8/2022 | |
6.0.0 | 31,161,607 | 11/8/2021 | |
6.0.0-rc.2.21480.5 | 1,350 | 10/12/2021 | |
6.0.0-rc.1.21451.13 | 2,268 | 9/14/2021 | |
6.0.0-preview.7.21377.19 | 1,673 | 8/10/2021 | |
6.0.0-preview.6.21352.12 | 1,222 | 7/14/2021 | |
6.0.0-preview.5.21301.5 | 1,161 | 6/15/2021 | |
6.0.0-preview.4.21253.7 | 883 | 5/24/2021 | |
6.0.0-preview.3.21201.4 | 5,639 | 4/8/2021 | |
6.0.0-preview.2.21154.6 | 1,724 | 3/11/2021 | |
6.0.0-preview.1.21102.12 | 1,198 | 2/12/2021 | |
5.0.0 | 241,511,595 | 11/9/2020 | |
5.0.0-rc.2.20475.5 | 15,855 | 10/13/2020 | |
5.0.0-rc.1.20451.14 | 9,165 | 9/14/2020 | |
5.0.0-preview.8.20407.11 | 274,889 | 8/25/2020 | |
5.0.0-preview.7.20364.11 | 4,835 | 7/21/2020 | |
5.0.0-preview.6.20305.6 | 1,894 | 6/25/2020 | |
5.0.0-preview.5.20278.1 | 1,426 | 6/10/2020 | |
5.0.0-preview.4.20251.6 | 2,896 | 5/18/2020 | |
5.0.0-preview.3.20214.6 | 1,985 | 4/23/2020 | |
5.0.0-preview.2.20160.6 | 11,642 | 4/2/2020 | |
5.0.0-preview.1.20120.5 | 10,548 | 3/16/2020 | |
1.8.1 | 12,662,221 | 5/12/2020 | |
1.8.0 | 9,912,147 | 12/3/2019 | |
1.8.0-preview3.19551.4 | 2,197 | 11/13/2019 | |
1.8.0-preview2.19523.17 | 1,296 | 11/1/2019 | |
1.8.0-preview1.19504.10 | 2,366 | 10/15/2019 | |
1.7.0 | 6,849,255 | 9/23/2019 | |
1.7.0-rc1.19456.4 | 3,518 | 9/16/2019 | |
1.7.0-preview9.19421.4 | 2,500 | 9/4/2019 | |
1.7.0-preview9.19416.11 | 929 | 9/4/2019 | |
1.7.0-preview8.19405.3 | 4,049 | 8/13/2019 | |
1.7.0-preview7.19362.9 | 3,402 | 7/23/2019 | |
1.7.0-preview6.19303.8 | 4,804 | 6/12/2019 | |
1.7.0-preview6.19264.9 | 951 | 9/4/2019 | |
1.7.0-preview5.19224.8 | 7,155 | 5/6/2019 | |
1.7.0-preview4.19212.13 | 8,362 | 4/18/2019 | |
1.7.0-preview3.19128.7 | 8,959 | 3/6/2019 | |
1.7.0-preview.19073.11 | 3,164 | 1/29/2019 | |
1.7.0-preview.18571.3 | 11,099 | 12/3/2018 | |
1.6.0 | 702,719,142 | 5/29/2018 | |
1.6.0-rc1 | 332,653 | 5/6/2018 | |
1.6.0-preview2-26406-04 | 380,804 | 4/10/2018 | |
1.6.0-preview1-26216-02 | 290,469 | 2/26/2018 | |
1.5.0 | 51,732,229 | 8/11/2017 | |
1.5.0-preview2-25405-01 | 7,183 | 6/27/2017 | |
1.5.0-preview1-25305-02 | 9,163 | 5/9/2017 | |
1.4.2 | 181,046,953 | 1/3/2017 | |
1.4.1 | 213,956,007 | 11/15/2016 | |
1.4.1-preview1-24530-04 | 107,954 | 10/24/2016 | |
1.4.1-beta-24430-01 | 562,408 | 10/13/2016 | |
1.4.1-beta-24227-04 | 274,481 | 6/30/2016 | |
1.3.0 | 314,568,893 | 6/27/2016 | |
1.3.0-rc2-24027 | 11,227,212 | 5/16/2016 | |
1.2.1-beta-23918 | 5,687 | 3/18/2016 | |
1.2.0 | 2,291,720 | 3/8/2016 | |
1.2.0-rc3-23811 | 46,351 | 3/5/2016 | |
1.2.0-rc2-23826 | 19,098 | 3/1/2016 | |
1.1.1-beta-23516 | 31,389 | 11/18/2015 | |
1.1.0 | 3,630,478 | 10/27/2015 | |
1.1.0-alpha-00015 | 5,430 | 10/9/2015 | |
1.1.0-alpha-00014 | 137,999 | 9/29/2015 | |
1.1.0-alpha-00012 | 5,489 | 9/24/2015 | |
1.1.0-alpha-00009 | 63,204 | 9/3/2015 | |
1.0.23-beta-23409 | 4,606 | 10/15/2015 | |
1.0.23-beta-23225 | 136,970 | 9/2/2015 | |
1.0.22 | 1,538,415 | 7/29/2015 | |
1.0.22-beta-23109 | 4,404 | 7/27/2015 | |
1.0.22-beta-23019 | 4,856 | 6/30/2015 | |
1.0.21 | 6,706,443 | 5/11/2015 | |
1.0.19-rc | 13,457 | 3/6/2015 | |
1.0.18-beta | 669,123 | 12/10/2014 | |
1.0.17-beta | 153,245 | 10/10/2014 |