Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge NetFrameworkVersionProvider and CompilationExtensions.IsNetFrameworkTarget #6751

Open
martin-strecker-sonarsource opened this issue Feb 13, 2023 · 1 comment
Labels
Area: C# C# rules related issues. Area: VB.NET VB.NET rules related issues. Type: Improvement Making existing code better.

Comments

@martin-strecker-sonarsource
Copy link
Contributor

There is a functional overlap between

public static bool IsNetFrameworkTarget(this Compilation compilation) =>

and
public class NetFrameworkVersionProvider : INetFrameworkVersionProvider
{
public NetFrameworkVersion GetDotNetFrameworkVersion(Compilation compilation)

Both implementations should be merged.
We also should take a test for the PublicKeyToken of mscorlib in GetDotNetFrameworkVersion into account to distinguish between Framework and NetStandard.

See also #6726 (comment)

@martin-strecker-sonarsource
Copy link
Contributor Author

  • Targetframework 48:
    • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\mscorlib.dll is passed as reference.
    • PublicKeyToken is b77a5c561934e089 (sn.exe -Tp)
    • ildasm.exe AssemblyFileVersionAttribute: 4.8.3761.0
  • TargetFramework 7.0
    • C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.2\ref\net7.0\mscorlib.dll is passed.
    • PublicKeyToken is b77a5c561934e089
    • ildasm.exe AssemblyFileVersionAttribute: 7.0.222.60605
  • TargetFramework netstandard 2.1
    • C:\Program Files\dotnet\packs\NETStandard.Library.Ref\2.1.0\ref\netstandard2.1\mscorlib.dll is passed.
    • PublicKeyToken is b77a5c561934e089
    • ildasm.exe AssemblyFileVersionAttribute: 4.700.19.4620

ilasm output

net48

// Metadata version: v4.0.30319
.module extern kernel32.dll
.module extern oleaut32.dll
.module extern advapi32.dll
.module extern ole32.dll
.module extern user32.dll
.module extern shell32.dll
.module extern secur32.dll
.module extern bcrypt.dll
.module extern clr.dll
.module extern ntdll.dll
.module extern combase.dll
.module extern QCall
.module extern advapi32
.module extern mscoree.dll
.module extern 'api-ms-win-core-winrt-error-l1-1-1.dll'
.module extern 'api-ms-win-core-winrt-string-l1-1-0.dll'
.assembly noplatform mscorlib
{
  .custom instance void System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) 
  .custom instance void System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 

  // --- The following custom attribute is added automatically, do not uncomment -------
  //  .custom instance void System.Diagnostics.DebuggableAttribute::.ctor(valuetype System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) 

  .custom instance void System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 42 45 44 37 46 34 45 41 2D 31 41 39 36   // ..$BED7F4EA-1A96
                                                                                        2D 31 31 64 32 2D 38 46 30 38 2D 30 30 41 30 43   // -11d2-8F08-00A0C
                                                                                        39 41 36 31 38 36 44 00 00 )                      // 9A6186D..
  .custom instance void System.Runtime.InteropServices.ComCompatibleVersionAttribute::.ctor(int32,
                                                                                            int32,
                                                                                            int32,
                                                                                            int32) = ( 01 00 01 00 00 00 00 00 00 00 E4 0C 00 00 00 00 
                                                                                                       00 00 00 00 ) 
  .custom instance void System.Runtime.InteropServices.TypeLibVersionAttribute::.ctor(int32,
                                                                                      int32) = ( 01 00 02 00 00 00 04 00 00 00 00 00 ) 
  .custom instance void System.Runtime.CompilerServices.DefaultDependencyAttribute::.ctor(valuetype System.Runtime.CompilerServices.LoadHint) = ( 01 00 01 00 00 00 00 00 ) 
  .custom instance void System.Runtime.CompilerServices.StringFreezingAttribute::.ctor() = ( 01 00 00 00 ) 
  .custom instance void System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 
  .custom instance void System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
  .custom instance void System.Security.AllowPartiallyTrustedCallersAttribute::.ctor() = ( 01 00 00 00 ) 
  .custom instance void System.Security.SecurityRulesAttribute::.ctor(valuetype System.Security.SecurityRuleSet) = ( 01 00 02 01 00 54 02 1B 53 6B 69 70 56 65 72 69   // .....T..SkipVeri
                                                                                                                     66 69 63 61 74 69 6F 6E 49 6E 46 75 6C 6C 54 72   // ficationInFullTr
                                                                                                                     75 73 74 01 )                                     // ust.
  .custom instance void System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 0C 6D 73 63 6F 72 6C 69 62 2E 64 6C 6C 00   // ...mscorlib.dll.
                                                                                    00 ) 
  .custom instance void System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 0C 6D 73 63 6F 72 6C 69 62 2E 64 6C 6C 00   // ...mscorlib.dll.
                                                                                          00 ) 
  .custom instance void System.Reflection.AssemblyDefaultAliasAttribute::.ctor(string) = ( 01 00 0C 6D 73 63 6F 72 6C 69 62 2E 64 6C 6C 00   // ...mscorlib.dll.
                                                                                           00 ) 
  .custom instance void System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72   // ...Microsoft Cor
                                                                                      70 6F 72 61 74 69 6F 6E 00 00 )                   // poration..
  .custom instance void System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 1A 4D 69 63 72 6F 73 6F 66 74 C2 AE 20 2E   // ...Microsoft.. .
                                                                                      4E 45 54 20 46 72 61 6D 65 77 6F 72 6B 00 00 )    // NET Framework..
  .custom instance void System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2F C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20   // ../.. Microsoft 
                                                                                        43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 20 41 6C   // Corporation.  Al
                                                                                        6C 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65   // l rights reserve
                                                                                        64 2E 00 00 )                                     // d...
  .custom instance void System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0A 34 2E 38 2E 33 37 36 31 2E 30 00 00 )    // ...4.8.3761.0..
  .custom instance void System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 0A 34 2E 38 2E 33 37 36 31 2E 30 00 00 )    // ...4.8.3761.0..
  .custom instance void System.Resources.SatelliteContractVersionAttribute::.ctor(string) = ( 01 00 07 34 2E 30 2E 30 2E 30 00 00 )             // ...4.0.0.0..
  .custom instance void System.Resources.NeutralResourcesLanguageAttribute::.ctor(string) = ( 01 00 05 65 6E 2D 55 53 00 00 )                   // ...en-US..
  .custom instance void System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
  .custom instance void System.Reflection.AssemblyKeyFileAttribute::.ctor(string) = ( 01 00 24 66 3A 5C 64 64 5C 74 6F 6F 6C 73 5C 64   // ..$f:\dd\tools\d
                                                                                      65 76 64 69 76 5C 45 63 6D 61 50 75 62 6C 69 63   // evdiv\EcmaPublic
                                                                                      4B 65 79 2E 73 6E 6B 00 00 )                      // Key.snk..
  .custom instance void System.Reflection.AssemblySignatureKeyAttribute::.ctor(string,
                                                                               string) = ( 01 00 82 40 30 30 32 34 30 30 30 30 30 63 38 30   // ...@002400000c80
                                                                                           30 30 30 30 31 34 30 31 30 30 30 30 30 36 30 32   // 0000140100000602
                                                                                           30 30 30 30 30 30 32 34 30 30 30 30 35 32 35 33   // 0000002400005253
                                                                                           34 31 33 31 30 30 30 38 30 30 30 30 30 31 30 30   // 4131000800000100
                                                                                           30 31 30 30 36 31 33 33 39 39 61 66 66 31 38 65   // 0100613399aff18e
                                                                                           66 31 61 32 63 32 35 31 34 61 32 37 33 61 34 32   // f1a2c2514a273a42
                                                                                           64 39 30 34 32 62 37 32 33 32 31 66 31 37 35 37   // d9042b72321f1757
                                                                                           31 30 32 64 66 39 65 62 61 64 61 36 39 39 32 33   // 102df9ebada69923
                                                                                           65 32 37 33 38 34 30 36 63 32 31 65 35 62 38 30   // e2738406c21e5b80
                                                                                           31 35 35 32 61 62 38 64 32 30 30 61 36 35 61 32   // 1552ab8d200a65a2
                                                                                           33 35 65 30 30 31 61 63 39 61 64 63 32 35 66 32   // 35e001ac9adc25f2
                                                                                           64 38 31 31 65 62 30 39 34 39 36 61 34 63 36 61   // d811eb09496a4c6a
                                                                                           35 39 64 34 36 31 39 35 38 39 63 36 39 66 35 62   // 59d4619589c69f5b
                                                                                           61 66 30 63 34 31 37 39 61 34 37 33 31 31 64 39   // af0c4179a47311d9
                                                                                           32 35 35 35 63 64 30 30 36 61 63 63 38 62 35 39   // 2555cd006acc8b59
                                                                                           35 39 66 32 62 64 36 65 31 30 65 33 36 30 63 33   // 59f2bd6e10e360c3
                                                                                           34 35 33 37 61 31 64 32 36 36 64 61 38 30 38 35   // 4537a1d266da8085
                                                                                           38 35 36 35 38 33 63 38 35 64 38 31 64 61 37 66   // 856583c85d81da7f
                                                                                           33 65 63 30 31 65 64 39 35 36 34 63 35 38 64 39   // 3ec01ed9564c58d9
                                                                                           33 64 37 31 33 63 64 30 31 37 32 63 38 65 32 33   // 3d713cd0172c8e23
                                                                                           61 31 30 66 30 32 33 39 62 38 30 63 39 36 62 30   // a10f0239b80c96b0
                                                                                           37 37 33 36 66 35 64 38 62 30 32 32 35 34 32 61   // 7736f5d8b022542a
                                                                                           34 65 37 34 32 35 31 61 35 66 34 33 32 38 32 34   // 4e74251a5f432824
                                                                                           33 31 38 62 33 35 33 39 61 35 61 30 38 37 66 38   // 318b3539a5a087f8
                                                                                           65 35 33 64 32 66 31 33 35 66 39 63 61 34 37 66   // e53d2f135f9ca47f
                                                                                           33 62 62 32 65 31 30 61 66 66 30 61 66 30 38 34   // 3bb2e10aff0af084
                                                                                           39 35 30 34 66 62 37 63 65 61 33 66 66 31 39 32   // 9504fb7cea3ff192
                                                                                           64 63 38 64 65 30 65 64 61 64 36 34 63 36 38 65   // dc8de0edad64c68e
                                                                                           66 64 65 33 34 63 35 36 64 33 30 32 61 64 35 35   // fde34c56d302ad55
                                                                                           66 64 36 65 38 30 66 33 30 32 64 35 65 66 63 64   // fd6e80f302d5efcd
                                                                                           65 61 65 39 35 33 36 35 38 64 33 34 35 32 35 36   // eae953658d345256
                                                                                           31 62 35 66 33 36 63 35 34 32 65 66 64 62 64 64   // 1b5f36c542efdbdd
                                                                                           39 66 38 38 38 35 33 38 64 33 37 34 63 65 66 31   // 9f888538d374cef1
                                                                                           30 36 61 63 66 37 64 39 33 61 34 34 34 35 63 33   // 06acf7d93a4445c3
                                                                                           63 37 33 63 64 39 31 31 66 30 35 37 31 61 61 66   // c73cd911f0571aaf
                                                                                           33 64 35 34 64 61 31 32 62 31 31 64 64 65 63 33   // 3d54da12b11ddec3
                                                                                           37 35 62 33 81 00 61 35 61 38 36 36 65 31 65 65   // 75b3..a5a866e1ee
                                                                                           31 38 36 66 38 30 37 36 36 38 32 30 39 66 33 62   // 186f807668209f3b
                                                                                           31 31 32 33 36 61 63 65 35 65 32 31 66 31 31 37   // 11236ace5e21f117
                                                                                           38 30 33 61 33 31 34 33 61 62 62 31 32 36 64 64   // 803a3143abb126dd
                                                                                           30 33 35 64 37 64 32 66 38 37 36 62 36 39 33 38   // 035d7d2f876b6938
                                                                                           61 61 66 32 65 65 33 34 31 34 64 35 34 32 30 64   // aaf2ee3414d5420d
                                                                                           37 35 33 36 32 31 34 30 30 64 62 34 34 61 34 39   // 753621400db44a49
                                                                                           63 34 38 36 63 65 31 33 34 33 30 30 61 32 31 30   // c486ce134300a210
                                                                                           36 61 64 62 36 62 64 62 34 33 33 35 39 30 66 65   // 6adb6bdb433590fe
                                                                                           66 38 61 64 35 63 34 33 63 62 61 38 32 32 39 30   // f8ad5c43cba82290
                                                                                           64 63 34 39 35 33 30 65 66 66 64 38 36 35 32 33   // dc49530effd86523
                                                                                           64 39 34 38 33 63 30 30 66 34 35 38 61 66 34 36   // d9483c00f458af46
                                                                                           38 39 30 30 33 36 62 30 65 32 63 36 31 64 30 37   // 890036b0e2c61d07
                                                                                           37 64 37 66 62 61 63 34 36 37 61 35 30 36 65 62   // 7d7fbac467a506eb
                                                                                           61 32 39 65 34 36 37 61 38 37 31 39 38 62 30 35   // a29e467a87198b05
                                                                                           33 63 37 34 39 61 61 32 61 34 64 32 38 34 30 63   // 3c749aa2a4d2840c
                                                                                           37 38 34 65 36 64 00 00 )                         // 784e6d..
  .custom instance void System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                   63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .custom instance void System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute::.ctor(valuetype System.Runtime.InteropServices.DllImportSearchPath) = ( 01 00 02 08 00 00 00 00 ) 
  .custom instance void System.Runtime.CompilerServices.ReferenceAssemblyAttribute::.ctor() = ( 01 00 00 00 ) 
  .permissionset reqmin
             = {class 'System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' = {property bool 'SkipVerification' = bool(true)}}
  .publickey = (00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ) 
  .hash algorithm 0x00008004
  .ver 4:0:0:0
}

.module CommonLanguageRuntimeLibrary
// MVID: {6B144447-7C1D-41C6-92EF-6C02A8383085}
.custom instance void System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) 
.imagebase 0x79720000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000009    //  ILONLY
// Image base: 0x0B490000

net70

// Metadata version: v4.0.30319
.assembly extern System.Runtime
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 0:0:0:0
}
.assembly extern Microsoft.Win32.Registry
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 0:0:0:0
}
.assembly noplatform mscorlib
{
  .custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [System.Runtime]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                                   63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.

  // --- The following custom attribute is added automatically, do not uncomment -------
  //  .custom instance void [System.Runtime]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [System.Runtime]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) 

  .custom instance void [System.Runtime]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 18 2E 4E 45 54 43 6F 72 65 41 70 70 2C 56   // ....NETCoreApp,V
                                                                                                              65 72 73 69 6F 6E 3D 76 37 2E 30 01 00 54 0E 14   // ersion=v7.0..T..
                                                                                                              46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 79   // FrameworkDisplay
                                                                                                              4E 61 6D 65 08 2E 4E 45 54 20 37 2E 30 )          // Name..NET 7.0
  .custom instance void [System.Runtime]System.Runtime.CompilerServices.ReferenceAssemblyAttribute::.ctor() = ( 01 00 00 00 ) 
  .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string,
                                                                                           string) = ( 01 00 15 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B   // ....NETFramework
                                                                                                       41 73 73 65 6D 62 6C 79 00 00 00 )                // Assembly...
  .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string,
                                                                                           string) = ( 01 00 0B 53 65 72 76 69 63 65 61 62 6C 65 04 54   // ...Serviceable.T
                                                                                                       72 75 65 00 00 )                                  // rue..
  .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string,
                                                                                           string) = ( 01 00 0B 50 72 65 66 65 72 49 6E 62 6F 78 04 54   // ...PreferInbox.T
                                                                                                       72 75 65 00 00 )                                  // rue..
  .custom instance void [System.Runtime]System.Reflection.AssemblyDefaultAliasAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [System.Runtime]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
  .custom instance void [System.Runtime]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72   // ...Microsoft Cor
                                                                                                      70 6F 72 61 74 69 6F 6E 00 00 )                   // poration..
  .custom instance void [System.Runtime]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2E C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20   // ..... Microsoft 
                                                                                                        43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 41 6C 6C   // Corporation. All
                                                                                                        20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64   //  rights reserved
                                                                                                        2E 00 00 )                                        // ...
  .custom instance void [System.Runtime]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [System.Runtime]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0D 37 2E 30 2E 32 32 32 2E 36 30 36 30 35   // ...7.0.222.60605
                                                                                                          00 00 ) 
  .custom instance void [System.Runtime]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 2E 37 2E 30 2E 32 2B 64 30 33 37 65 30 37   // ...7.0.2+d037e07
                                                                                                                   30 65 62 65 35 63 38 33 38 33 38 34 34 33 66 38   // 0ebe5c83838443f8
                                                                                                                   36 39 64 35 38 30 30 37 35 32 62 30 66 63 62 31   // 69d5800752b0fcb1
                                                                                                                   33 00 00 )                                        // 3..
  .custom instance void [System.Runtime]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 10 4D 69 63 72 6F 73 6F 66 74 C2 AE 20 2E   // ...Microsoft.. .
                                                                                                      4E 45 54 00 00 )                                  // NET..
  .custom instance void [System.Runtime]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string,
                                                                                           string) = ( 01 00 0D 52 65 70 6F 73 69 74 6F 72 79 55 72 6C   // ...RepositoryUrl
                                                                                                       21 68 74 74 70 73 3A 2F 2F 67 69 74 68 75 62 2E   // !https://github.
                                                                                                       63 6F 6D 2F 64 6F 74 6E 65 74 2F 72 75 6E 74 69   // com/dotnet/runti
                                                                                                       6D 65 00 00 )                                     // me..
  .publickey = (00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ) 
  .hash algorithm 0x00008004
  .ver 4:0:0:0
}

.module mscorlib.dll
// MVID: {F8F2E29C-A7DF-4E9C-92CC-A3C5220376B4}
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000009    //  ILONLY
// Image base: 0x0B8A0000

netstandard

// Metadata version: v4.0.30319
.assembly extern netstandard
{
  .publickeytoken = (CC 7B 13 FF CD 2D DD 51 )                         // .{...-.Q
  .ver 2:1:0:0
}
.assembly extern Microsoft.Win32.Registry
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 4:1:0:0
}
.assembly extern System.Security.Principal.Windows
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 4:1:0:0
}
.assembly extern System.Security.AccessControl
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 4:1:0:0
}
.assembly noplatform mscorlib
{
  .custom instance void [netstandard]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [netstandard]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                                63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.

  // --- The following custom attribute is added automatically, do not uncomment -------
  //  .custom instance void [netstandard]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [netstandard]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) 

  .custom instance void [netstandard]System.Reflection.AssemblyDefaultAliasAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [netstandard]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72   // ...Microsoft Cor
                                                                                                   70 6F 72 61 74 69 6F 6E 00 00 )                   // poration..
  .custom instance void [netstandard]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2E C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20   // ..... Microsoft 
                                                                                                     43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 41 6C 6C   // Corporation. All
                                                                                                     20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64   //  rights reserved
                                                                                                     2E 00 00 )                                        // ...
  .custom instance void [netstandard]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [netstandard]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0E 34 2E 37 30 30 2E 31 39 2E 34 36 32 30   // ...4.700.19.4620
                                                                                                       35 00 00 )                                        // 5..
  .custom instance void [netstandard]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 2E 34 2E 37 2E 30 2B 61 35 62 35 66 32 65   // ...4.7.0+a5b5f2e
                                                                                                                31 65 33 36 39 39 37 32 63 38 66 66 31 65 32 31   // 1e369972c8ff1e21
                                                                                                                38 33 39 37 39 66 61 62 36 30 39 39 66 35 32 65   // 83979fab6099f52e
                                                                                                                66 00 00 )                                        // f..
  .custom instance void [netstandard]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 1A 4D 69 63 72 6F 73 6F 66 74 C2 AE 20 2E   // ...Microsoft.. .
                                                                                                   4E 45 54 20 46 72 61 6D 65 77 6F 72 6B 00 00 )    // NET Framework..
  .custom instance void [netstandard]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 08 6D 73 63 6F 72 6C 69 62 00 00 )          // ...mscorlib..
  .custom instance void [netstandard]System.Runtime.CompilerServices.ReferenceAssemblyAttribute::.ctor() = ( 01 00 00 00 ) 
  .custom instance void [netstandard]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
  .publickey = (00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ) 
  .hash algorithm 0x00008004
  .ver 4:0:0:0
}

.module mscorlib.dll
// MVID: {9142350E-27FD-4ABB-8254-52765B93BAD4}
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000009    //  ILONLY
// Image base: 0x0BAA0000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: C# C# rules related issues. Area: VB.NET VB.NET rules related issues. Type: Improvement Making existing code better.
Projects
None yet
Development

No branches or pull requests

1 participant