Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Yes, look msdn has you covered please look <a href="http://msdn.microsoft.com/en-us/library/system.attribute.aspx#inheritanceContinued" rel="nofollow noreferrer">here</a>.</p> <p>EDIT: This link only answer sucked. Here is a working extractor for all loadable types (gac) that have Attribute in the name. </p> <pre><code>using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var process = new Process(); //your path may vary process.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe"; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.UseShellExecute = false; process.StartInfo.Arguments = "/l"; process.Start(); var consoleOutput = process.StandardOutput; var assemblyList = new List&lt;string&gt;(); var startAdding = false; while (consoleOutput.EndOfStream == false) { var line = consoleOutput.ReadLine(); if (line.IndexOf("The Global Assembly Cache contains the following assemblies", StringComparison.OrdinalIgnoreCase) &gt;= 0) { startAdding = true; continue; } if (startAdding == false) { continue; } //add any other filter conditions (framework version, etc) if (line.IndexOf("System.", StringComparison.OrdinalIgnoreCase) &lt; 0) { continue; } assemblyList.Add(line.Trim()); } var collectedRecords = new List&lt;string&gt;(); var failedToLoad = new List&lt;string&gt;(); Console.WriteLine($"Found {assemblyList.Count} assemblies"); var currentItem = 1; foreach (var gacAssemblyInfo in assemblyList) { Console.SetCursorPosition(0, 2); Console.WriteLine($"On {currentItem} of {assemblyList.Count} "); Console.SetCursorPosition(0, 3); Console.WriteLine($"Loading {gacAssemblyInfo}"); currentItem++; try { var asm = Assembly.Load(gacAssemblyInfo); foreach (Type t in asm.GetTypes()) { if (t.Name.EndsWith("Attribute", StringComparison.OrdinalIgnoreCase)) { collectedRecords.Add($"{t.FullName} - {t.Assembly.FullName}"); } } } catch (Exception ex) { failedToLoad.Add($"FAILED to load {gacAssemblyInfo} - {ex}"); Console.SetCursorPosition(1, 9); Console.WriteLine($"Failure to load count: {failedToLoad.Count}"); Console.SetCursorPosition(4, 10); Console.WriteLine($"Last Fail: {gacAssemblyInfo}"); } } var fileBase = System.IO.Path.GetRandomFileName(); var goodFile = $"{fileBase}_good.txt"; var failFile = $"{fileBase}_failedToLoad.txt"; System.IO.File.WriteAllLines(goodFile, collectedRecords); System.IO.File.WriteAllLines(failFile, failedToLoad); Console.SetCursorPosition(0, 15); Console.WriteLine($"Matching types: {goodFile}"); Console.WriteLine($"Failures: {failFile}"); Console.WriteLine("Press ENTER to exit"); Console.ReadLine(); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload