System.Reflection.Metadata
7.0.1
Prefix Reserved
See the version list below for details.
dotnet add package System.Reflection.Metadata --version 7.0.1
NuGet\Install-Package System.Reflection.Metadata -Version 7.0.1
<PackageReference Include="System.Reflection.Metadata" Version="7.0.1" />
paket add System.Reflection.Metadata --version 7.0.1
#r "nuget: System.Reflection.Metadata, 7.0.1"
// Install System.Reflection.Metadata as a Cake Addin #addin nuget:?package=System.Reflection.Metadata&version=7.0.1 // Install System.Reflection.Metadata as a Cake Tool #tool nuget:?package=System.Reflection.Metadata&version=7.0.1
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 (294)
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-rc.2.24473.5 | 3,846 | 10/8/2024 | |
9.0.0-rc.1.24431.7 | 3,197 | 9/10/2024 | |
9.0.0-preview.7.24405.7 | 2,046 | 8/13/2024 | |
9.0.0-preview.6.24327.7 | 3,468 | 7/9/2024 | |
9.0.0-preview.5.24306.7 | 1,662 | 6/11/2024 | |
9.0.0-preview.4.24266.19 | 715 | 5/21/2024 | |
9.0.0-preview.3.24172.9 | 1,602 | 4/11/2024 | |
9.0.0-preview.2.24128.5 | 1,421 | 3/12/2024 | |
9.0.0-preview.1.24080.9 | 1,750 | 2/13/2024 | |
8.0.1 | 127,496 | 10/8/2024 | |
8.0.0 | 12,037,834 | 11/14/2023 | |
8.0.0-rc.2.23479.6 | 2,992 | 10/10/2023 | |
8.0.0-rc.1.23419.4 | 3,351 | 9/12/2023 | |
8.0.0-preview.7.23375.6 | 1,891 | 8/8/2023 | |
8.0.0-preview.6.23329.7 | 2,409 | 7/11/2023 | |
8.0.0-preview.5.23280.8 | 2,719 | 6/13/2023 | |
8.0.0-preview.4.23259.5 | 1,318 | 5/16/2023 | |
8.0.0-preview.3.23174.8 | 1,527 | 4/11/2023 | |
8.0.0-preview.2.23128.3 | 6,808 | 3/14/2023 | |
8.0.0-preview.1.23110.8 | 2,114 | 2/21/2023 | |
7.0.2 | 989,888 | 6/13/2023 | |
7.0.1 | 587,693 | 3/14/2023 | |
7.0.0 | 33,480,034 | 11/7/2022 | |
7.0.0-rc.2.22472.3 | 32,237 | 10/11/2022 | |
7.0.0-rc.1.22426.10 | 1,589 | 9/14/2022 | |
7.0.0-preview.7.22375.6 | 4,704 | 8/9/2022 | |
7.0.0-preview.6.22324.4 | 1,526 | 7/12/2022 | |
7.0.0-preview.5.22301.12 | 1,007 | 6/14/2022 | |
7.0.0-preview.4.22229.4 | 11,765 | 5/10/2022 | |
7.0.0-preview.3.22175.4 | 986 | 4/13/2022 | |
7.0.0-preview.2.22152.2 | 2,614 | 3/14/2022 | |
7.0.0-preview.1.22076.8 | 1,070 | 2/17/2022 | |
6.0.1 | 60,092,951 | 3/8/2022 | |
6.0.0 | 31,052,617 | 11/8/2021 | |
6.0.0-rc.2.21480.5 | 1,348 | 10/12/2021 | |
6.0.0-rc.1.21451.13 | 2,266 | 9/14/2021 | |
6.0.0-preview.7.21377.19 | 1,670 | 8/10/2021 | |
6.0.0-preview.6.21352.12 | 1,220 | 7/14/2021 | |
6.0.0-preview.5.21301.5 | 1,158 | 6/15/2021 | |
6.0.0-preview.4.21253.7 | 880 | 5/24/2021 | |
6.0.0-preview.3.21201.4 | 5,637 | 4/8/2021 | |
6.0.0-preview.2.21154.6 | 1,721 | 3/11/2021 | |
6.0.0-preview.1.21102.12 | 1,196 | 2/12/2021 | |
5.0.0 | 240,214,043 | 11/9/2020 | |
5.0.0-rc.2.20475.5 | 15,850 | 10/13/2020 | |
5.0.0-rc.1.20451.14 | 9,162 | 9/14/2020 | |
5.0.0-preview.8.20407.11 | 274,767 | 8/25/2020 | |
5.0.0-preview.7.20364.11 | 4,828 | 7/21/2020 | |
5.0.0-preview.6.20305.6 | 1,892 | 6/25/2020 | |
5.0.0-preview.5.20278.1 | 1,422 | 6/10/2020 | |
5.0.0-preview.4.20251.6 | 2,893 | 5/18/2020 | |
5.0.0-preview.3.20214.6 | 1,983 | 4/23/2020 | |
5.0.0-preview.2.20160.6 | 11,611 | 4/2/2020 | |
5.0.0-preview.1.20120.5 | 10,531 | 3/16/2020 | |
1.8.1 | 12,627,041 | 5/12/2020 | |
1.8.0 | 9,876,958 | 12/3/2019 | |
1.8.0-preview3.19551.4 | 2,195 | 11/13/2019 | |
1.8.0-preview2.19523.17 | 1,293 | 11/1/2019 | |
1.8.0-preview1.19504.10 | 2,364 | 10/15/2019 | |
1.7.0 | 6,843,461 | 9/23/2019 | |
1.7.0-rc1.19456.4 | 3,516 | 9/16/2019 | |
1.7.0-preview9.19421.4 | 2,497 | 9/4/2019 | |
1.7.0-preview9.19416.11 | 926 | 9/4/2019 | |
1.7.0-preview8.19405.3 | 4,046 | 8/13/2019 | |
1.7.0-preview7.19362.9 | 3,400 | 7/23/2019 | |
1.7.0-preview6.19303.8 | 4,802 | 6/12/2019 | |
1.7.0-preview6.19264.9 | 948 | 9/4/2019 | |
1.7.0-preview5.19224.8 | 7,150 | 5/6/2019 | |
1.7.0-preview4.19212.13 | 8,342 | 4/18/2019 | |
1.7.0-preview3.19128.7 | 8,891 | 3/6/2019 | |
1.7.0-preview.19073.11 | 3,161 | 1/29/2019 | |
1.7.0-preview.18571.3 | 11,053 | 12/3/2018 | |
1.6.0 | 699,047,851 | 5/29/2018 | |
1.6.0-rc1 | 332,496 | 5/6/2018 | |
1.6.0-preview2-26406-04 | 380,793 | 4/10/2018 | |
1.6.0-preview1-26216-02 | 290,445 | 2/26/2018 | |
1.5.0 | 51,661,145 | 8/11/2017 | |
1.5.0-preview2-25405-01 | 7,178 | 6/27/2017 | |
1.5.0-preview1-25305-02 | 9,161 | 5/9/2017 | |
1.4.2 | 180,476,101 | 1/3/2017 | |
1.4.1 | 213,383,048 | 11/15/2016 | |
1.4.1-preview1-24530-04 | 107,949 | 10/24/2016 | |
1.4.1-beta-24430-01 | 562,402 | 10/13/2016 | |
1.4.1-beta-24227-04 | 274,479 | 6/30/2016 | |
1.3.0 | 313,995,229 | 6/27/2016 | |
1.3.0-rc2-24027 | 11,211,212 | 5/16/2016 | |
1.2.1-beta-23918 | 5,685 | 3/18/2016 | |
1.2.0 | 2,290,864 | 3/8/2016 | |
1.2.0-rc3-23811 | 46,348 | 3/5/2016 | |
1.2.0-rc2-23826 | 19,096 | 3/1/2016 | |
1.1.1-beta-23516 | 31,387 | 11/18/2015 | |
1.1.0 | 3,629,828 | 10/27/2015 | |
1.1.0-alpha-00015 | 5,428 | 10/9/2015 | |
1.1.0-alpha-00014 | 137,934 | 9/29/2015 | |
1.1.0-alpha-00012 | 5,486 | 9/24/2015 | |
1.1.0-alpha-00009 | 63,199 | 9/3/2015 | |
1.0.23-beta-23409 | 4,603 | 10/15/2015 | |
1.0.23-beta-23225 | 136,741 | 9/2/2015 | |
1.0.22 | 1,537,847 | 7/29/2015 | |
1.0.22-beta-23109 | 4,401 | 7/27/2015 | |
1.0.22-beta-23019 | 4,837 | 6/30/2015 | |
1.0.21 | 6,669,315 | 5/11/2015 | |
1.0.19-rc | 13,454 | 3/6/2015 | |
1.0.18-beta | 668,864 | 12/10/2014 | |
1.0.17-beta | 153,236 | 10/10/2014 |