System.Reflection.Metadata
7.0.2
See the version list below for details.
dotnet add package System.Reflection.Metadata --version 7.0.2
NuGet\Install-Package System.Reflection.Metadata -Version 7.0.2
<PackageReference Include="System.Reflection.Metadata" Version="7.0.2" />
paket add System.Reflection.Metadata --version 7.0.2
#r "nuget: System.Reflection.Metadata, 7.0.2"
// Install System.Reflection.Metadata as a Cake Addin
#addin nuget:?package=System.Reflection.Metadata&version=7.0.2
// Install System.Reflection.Metadata as a Cake Tool
#tool nuget:?package=System.Reflection.Metadata&version=7.0.2
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. |
.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 (246)
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/44555193fd1135b5d53a2099f76fec91e0d1ebde. |
|
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 |
|
System.Diagnostics.FileVersionInfo
Provides the System.Diagnostics.FileVersionInfo class, which allows access to Win32 version resource information for a physical file on disk. Commonly Used Types: System.Diagnostics.FileVersionInfo When using NuGet 3.x this package requires at least version 3.4. |
GitHub repositories (219)
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.
|
|
NancyFx/Nancy
Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono
|
Version | Downloads | Last updated | |
---|---|---|---|
8.0.0-rc.1.23419.4 | 498 | 9/12/2023 | |
8.0.0-preview.7.23375.6 | 1,174 | 8/8/2023 | |
8.0.0-preview.6.23329.7 | 667 | 7/11/2023 | |
8.0.0-preview.5.23280.8 | 674 | 6/13/2023 | |
8.0.0-preview.4.23259.5 | 445 | 5/16/2023 | |
8.0.0-preview.3.23174.8 | 978 | 4/11/2023 | |
8.0.0-preview.2.23128.3 | 5,595 | 3/14/2023 | |
8.0.0-preview.1.23110.8 | 827 | 2/21/2023 | |
7.0.2 | 205,595 | 6/13/2023 | |
7.0.1 | 267,523 | 3/14/2023 | |
7.0.0 | 2,427,619 | 11/7/2022 | |
7.0.0-rc.2.22472.3 | 16,727 | 10/11/2022 | |
7.0.0-rc.1.22426.10 | 875 | 9/14/2022 | |
7.0.0-preview.7.22375.6 | 2,626 | 8/9/2022 | |
7.0.0-preview.6.22324.4 | 813 | 7/12/2022 | |
7.0.0-preview.5.22301.12 | 531 | 6/14/2022 | |
7.0.0-preview.4.22229.4 | 11,320 | 5/10/2022 | |
7.0.0-preview.3.22175.4 | 635 | 4/13/2022 | |
7.0.0-preview.2.22152.2 | 1,608 | 3/14/2022 | |
7.0.0-preview.1.22076.8 | 675 | 2/17/2022 | |
6.0.2-mauipre.1.22102.15 | 341 | 2/15/2022 | |
6.0.2-mauipre.1.22054.8 | 1,158 | 1/19/2022 | |
6.0.1 | 4,842,925 | 3/8/2022 | |
6.0.0 | 15,743,794 | 11/8/2021 | |
6.0.0-rc.2.21480.5 | 1,090 | 10/12/2021 | |
6.0.0-rc.1.21451.13 | 1,802 | 9/14/2021 | |
6.0.0-preview.7.21377.19 | 1,391 | 8/10/2021 | |
6.0.0-preview.6.21352.12 | 962 | 7/14/2021 | |
6.0.0-preview.5.21301.5 | 895 | 6/15/2021 | |
6.0.0-preview.4.21253.7 | 640 | 5/24/2021 | |
6.0.0-preview.3.21201.4 | 4,517 | 4/8/2021 | |
6.0.0-preview.2.21154.6 | 1,368 | 3/11/2021 | |
6.0.0-preview.1.21102.12 | 869 | 2/12/2021 | |
5.0.0 | 137,306,229 | 11/9/2020 | |
5.0.0-rc.2.20475.5 | 9,809 | 10/13/2020 | |
5.0.0-rc.1.20451.14 | 8,774 | 9/14/2020 | |
5.0.0-preview.8.20407.11 | 265,629 | 8/25/2020 | |
5.0.0-preview.7.20364.11 | 4,260 | 7/21/2020 | |
5.0.0-preview.6.20305.6 | 1,648 | 6/25/2020 | |
5.0.0-preview.5.20278.1 | 1,208 | 6/10/2020 | |
5.0.0-preview.4.20251.6 | 2,651 | 5/18/2020 | |
5.0.0-preview.3.20214.6 | 1,753 | 4/23/2020 | |
5.0.0-preview.2.20160.6 | 10,996 | 4/2/2020 | |
5.0.0-preview.1.20120.5 | 7,895 | 3/16/2020 | |
1.8.1 | 9,483,591 | 5/12/2020 | |
1.8.0 | 7,608,010 | 12/3/2019 | |
1.8.0-preview3.19551.4 | 1,917 | 11/13/2019 | |
1.8.0-preview2.19523.17 | 1,052 | 11/1/2019 | |
1.8.0-preview1.19504.10 | 2,142 | 10/15/2019 | |
1.7.0 | 6,217,614 | 9/23/2019 | |
1.7.0-rc1.19456.4 | 3,292 | 9/16/2019 | |
1.7.0-preview9.19421.4 | 2,284 | 9/4/2019 | |
1.7.0-preview9.19416.11 | 710 | 9/4/2019 | |
1.7.0-preview8.19405.3 | 3,800 | 8/13/2019 | |
1.7.0-preview7.19362.9 | 3,177 | 7/23/2019 | |
1.7.0-preview6.19303.8 | 4,416 | 6/12/2019 | |
1.7.0-preview6.19264.9 | 727 | 9/4/2019 | |
1.7.0-preview5.19224.8 | 6,792 | 5/6/2019 | |
1.7.0-preview4.19212.13 | 7,138 | 4/18/2019 | |
1.7.0-preview3.19128.7 | 6,189 | 3/6/2019 | |
1.7.0-preview.19073.11 | 2,876 | 1/29/2019 | |
1.7.0-preview.18571.3 | 8,699 | 12/3/2018 | |
1.6.0 | 428,299,264 | 5/29/2018 | |
1.6.0-rc1 | 235,802 | 5/6/2018 | |
1.6.0-preview2-26406-04 | 207,363 | 4/10/2018 | |
1.6.0-preview1-26216-02 | 197,577 | 2/26/2018 | |
1.5.0 | 44,107,500 | 8/11/2017 | |
1.5.0-preview2-25405-01 | 5,252 | 6/27/2017 | |
1.5.0-preview1-25305-02 | 7,204 | 5/9/2017 | |
1.4.2 | 130,309,562 | 1/3/2017 | |
1.4.1 | 160,132,196 | 11/15/2016 | |
1.4.1-preview1-24530-04 | 94,948 | 10/24/2016 | |
1.4.1-beta-24430-01 | 526,923 | 10/13/2016 | |
1.4.1-beta-24227-04 | 226,924 | 6/30/2016 | |
1.3.0 | 255,035,324 | 6/27/2016 | |
1.3.0-rc2-24027 | 9,805,296 | 5/16/2016 | |
1.2.1-beta-23918 | 3,861 | 3/18/2016 | |
1.2.0 | 2,154,195 | 3/8/2016 | |
1.2.0-rc3-23811 | 23,992 | 3/5/2016 | |
1.2.0-rc2-23826 | 9,663 | 3/1/2016 | |
1.1.1-beta-23516 | 29,635 | 11/18/2015 | |
1.1.0 | 3,535,314 | 10/27/2015 | |
1.1.0-alpha-00015 | 3,760 | 10/9/2015 | |
1.1.0-alpha-00014 | 111,234 | 9/29/2015 | |
1.1.0-alpha-00012 | 3,815 | 9/24/2015 | |
1.1.0-alpha-00009 | 51,446 | 9/3/2015 | |
1.0.23-beta-23409 | 2,796 | 10/15/2015 | |
1.0.23-beta-23225 | 109,271 | 9/2/2015 | |
1.0.22 | 1,441,826 | 7/29/2015 | |
1.0.22-beta-23109 | 2,606 | 7/27/2015 | |
1.0.22-beta-23019 | 3,002 | 6/30/2015 | |
1.0.21 | 4,258,419 | 5/11/2015 | |
1.0.19-rc | 11,713 | 3/6/2015 | |
1.0.18-beta | 508,551 | 12/10/2014 | |
1.0.17-beta | 107,082 | 10/10/2014 |