/// <summary> /// The callback method, triggered once _trigger is disposed. /// When used @ aspect compile-time, it means that the .pssym file is generated! /// </summary> /// <param name="trigger">The trigger, not used for anything.</param> private static void OnPostCompile(PostCompileTrigger trigger) { // When no actions are queued, just return (no descriptions to add) if (_actions.Count == 0) { return; } // Calculate the path of the project' pssym file var pssymPath = Path.Combine(trigger.PathBin, trigger.AssemblyName + ".pssym"); // declare the local doc variable XDocument document; try { // pssym wasn't found - just return in that case if (!File.Exists(pssymPath)) { return; } // Attempt to load the pssym file (its XML) document = XDocument.Load(pssymPath); // Should not occur, but if we don't have a root, just return if (document.Root == null) { return; } // Create a new dictionary, to store the pssym mappings / current count var storage = new Dictionary <string, string>(); // Load the mappings (the core entries) from the pssym (if it fails, no new entries will be added) ExtractSymbols(document, storage); // Process all actions (each action is a description that should be added foreach (var a in _actions) { try { a(document, storage); } catch { // Silently ignore exceptions } } // Store the modified pssym document.Save(pssymPath); } catch { // Silently ignore exceptions } }
// ReSharper restore UnaccessedField.Local /// <summary> /// Create the PostCompileTrigger to trigger @ post compile /// </summary> static PostSharpDescription() { _trigger = new PostCompileTrigger { OnPostCompile = OnPostCompile }; if (!_trigger.HasProperties) { Message.Write(SeverityType.Warning, "PostSharpDescription(1)", "PostCompileTrigger was unable to extract one or more required properties. Did you update your PostSharp.targets/PostSharp.Custom.targets file? The added descriptions will not be available on-hover."); } }