System.Reflection.Metadata
7.0.1
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. |
.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 (232)
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/6544980c8335ce25d8959afd4b6ee308686fed53. |
|
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 (220)
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-preview.4.23259.5 | 346 | 5/16/2023 | |
8.0.0-preview.3.23174.8 | 799 | 4/11/2023 | |
8.0.0-preview.2.23128.3 | 3,244 | 3/14/2023 | |
8.0.0-preview.1.23110.8 | 729 | 2/21/2023 | |
7.0.1 | 147,264 | 3/14/2023 | |
7.0.0 | 639,527 | 11/7/2022 | |
7.0.0-rc.2.22472.3 | 8,006 | 10/11/2022 | |
7.0.0-rc.1.22426.10 | 820 | 9/14/2022 | |
7.0.0-preview.7.22375.6 | 2,030 | 8/9/2022 | |
7.0.0-preview.6.22324.4 | 713 | 7/12/2022 | |
7.0.0-preview.5.22301.12 | 495 | 6/14/2022 | |
7.0.0-preview.4.22229.4 | 11,268 | 5/10/2022 | |
7.0.0-preview.3.22175.4 | 589 | 4/13/2022 | |
7.0.0-preview.2.22152.2 | 1,436 | 3/14/2022 | |
7.0.0-preview.1.22076.8 | 641 | 2/17/2022 | |
6.0.2-mauipre.1.22102.15 | 299 | 2/15/2022 | |
6.0.2-mauipre.1.22054.8 | 926 | 1/19/2022 | |
6.0.1 | 3,147,135 | 3/8/2022 | |
6.0.0 | 10,707,199 | 11/8/2021 | |
6.0.0-rc.2.21480.5 | 1,053 | 10/12/2021 | |
6.0.0-rc.1.21451.13 | 1,729 | 9/14/2021 | |
6.0.0-preview.7.21377.19 | 1,350 | 8/10/2021 | |
6.0.0-preview.6.21352.12 | 922 | 7/14/2021 | |
6.0.0-preview.5.21301.5 | 854 | 6/15/2021 | |
6.0.0-preview.4.21253.7 | 613 | 5/24/2021 | |
6.0.0-preview.3.21201.4 | 4,244 | 4/8/2021 | |
6.0.0-preview.2.21154.6 | 1,316 | 3/11/2021 | |
6.0.0-preview.1.21102.12 | 836 | 2/12/2021 | |
5.0.0 | 113,158,281 | 11/9/2020 | |
5.0.0-rc.2.20475.5 | 9,721 | 10/13/2020 | |
5.0.0-rc.1.20451.14 | 8,724 | 9/14/2020 | |
5.0.0-preview.8.20407.11 | 262,974 | 8/25/2020 | |
5.0.0-preview.7.20364.11 | 4,191 | 7/21/2020 | |
5.0.0-preview.6.20305.6 | 1,618 | 6/25/2020 | |
5.0.0-preview.5.20278.1 | 1,171 | 6/10/2020 | |
5.0.0-preview.4.20251.6 | 2,612 | 5/18/2020 | |
5.0.0-preview.3.20214.6 | 1,720 | 4/23/2020 | |
5.0.0-preview.2.20160.6 | 10,965 | 4/2/2020 | |
5.0.0-preview.1.20120.5 | 7,068 | 3/16/2020 | |
1.8.1 | 8,465,985 | 5/12/2020 | |
1.8.0 | 7,013,936 | 12/3/2019 | |
1.8.0-preview3.19551.4 | 1,869 | 11/13/2019 | |
1.8.0-preview2.19523.17 | 1,011 | 11/1/2019 | |
1.8.0-preview1.19504.10 | 2,100 | 10/15/2019 | |
1.7.0 | 6,018,499 | 9/23/2019 | |
1.7.0-rc1.19456.4 | 3,260 | 9/16/2019 | |
1.7.0-preview9.19421.4 | 2,252 | 9/4/2019 | |
1.7.0-preview9.19416.11 | 679 | 9/4/2019 | |
1.7.0-preview8.19405.3 | 3,751 | 8/13/2019 | |
1.7.0-preview7.19362.9 | 3,143 | 7/23/2019 | |
1.7.0-preview6.19303.8 | 4,368 | 6/12/2019 | |
1.7.0-preview6.19264.9 | 698 | 9/4/2019 | |
1.7.0-preview5.19224.8 | 6,716 | 5/6/2019 | |
1.7.0-preview4.19212.13 | 6,775 | 4/18/2019 | |
1.7.0-preview3.19128.7 | 5,932 | 3/6/2019 | |
1.7.0-preview.19073.11 | 2,850 | 1/29/2019 | |
1.7.0-preview.18571.3 | 8,249 | 12/3/2018 | |
1.6.0 | 368,235,745 | 5/29/2018 | |
1.6.0-rc1 | 216,794 | 5/6/2018 | |
1.6.0-preview2-26406-04 | 179,177 | 4/10/2018 | |
1.6.0-preview1-26216-02 | 180,983 | 2/26/2018 | |
1.5.0 | 41,914,971 | 8/11/2017 | |
1.5.0-preview2-25405-01 | 4,752 | 6/27/2017 | |
1.5.0-preview1-25305-02 | 6,700 | 5/9/2017 | |
1.4.2 | 117,403,823 | 1/3/2017 | |
1.4.1 | 145,245,682 | 11/15/2016 | |
1.4.1-preview1-24530-04 | 91,193 | 10/24/2016 | |
1.4.1-beta-24430-01 | 518,557 | 10/13/2016 | |
1.4.1-beta-24227-04 | 216,360 | 6/30/2016 | |
1.3.0 | 238,982,242 | 6/27/2016 | |
1.3.0-rc2-24027 | 9,418,229 | 5/16/2016 | |
1.2.1-beta-23918 | 3,365 | 3/18/2016 | |
1.2.0 | 2,117,111 | 3/8/2016 | |
1.2.0-rc3-23811 | 18,730 | 3/5/2016 | |
1.2.0-rc2-23826 | 7,138 | 3/1/2016 | |
1.1.1-beta-23516 | 29,107 | 11/18/2015 | |
1.1.0 | 3,511,656 | 10/27/2015 | |
1.1.0-alpha-00015 | 3,249 | 10/9/2015 | |
1.1.0-alpha-00014 | 104,986 | 9/29/2015 | |
1.1.0-alpha-00012 | 3,355 | 9/24/2015 | |
1.1.0-alpha-00009 | 48,748 | 9/3/2015 | |
1.0.23-beta-23409 | 2,312 | 10/15/2015 | |
1.0.23-beta-23225 | 103,137 | 9/2/2015 | |
1.0.22 | 1,410,136 | 7/29/2015 | |
1.0.22-beta-23109 | 2,135 | 7/27/2015 | |
1.0.22-beta-23019 | 2,505 | 6/30/2015 | |
1.0.21 | 3,879,683 | 5/11/2015 | |
1.0.19-rc | 11,243 | 3/6/2015 | |
1.0.18-beta | 458,242 | 12/10/2014 | |
1.0.17-beta | 97,779 | 10/10/2014 |