Tweaked r# settings and applied to View and ViewLayout.cs

This commit is contained in:
Tig
2024-03-08 08:11:43 -07:00
parent e026520b6d
commit 550a263155
5 changed files with 904 additions and 878 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -73,7 +73,8 @@ namespace Terminal.Gui;
/// a View can be accessed with the <see cref="SuperView"/> property.
/// </para>
/// <para>
/// To flag a region of the View's <see cref="Bounds"/> to be redrawn call <see cref="SetNeedsDisplay(Rectangle)"/>.
/// To flag a region of the View's <see cref="Bounds"/> to be redrawn call <see cref="SetNeedsDisplay(Rectangle)"/>
/// .
/// To flag the entire view for redraw call <see cref="SetNeedsDisplay()"/>.
/// </para>
/// <para>
@@ -113,14 +114,7 @@ namespace Terminal.Gui;
public partial class View : Responder, ISupportInitializeNotification
{
private bool _oldEnabled;
/// <summary>Gets or sets whether a view is cleared if the <see cref="Visible"/> property is <see langword="false"/>.</summary>
public bool ClearOnVisibleFalse { get; set; } = true;
/// <summary>Gets or sets arbitrary data for the view.</summary>
/// <remarks>This property is not used internally.</remarks>
public object Data { get; set; }
#region Constructors and Initialization
/// <summary>
/// Points to the current driver in use by the view, it is a convenience property for simplifying the development
@@ -128,6 +122,170 @@ public partial class View : Responder, ISupportInitializeNotification
/// </summary>
public static ConsoleDriver Driver => Application.Driver;
/// <summary>Initializes a new instance of <see cref="View"/>.</summary>
/// <remarks>
/// <para>
/// Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
/// control the size and location of the view. The <see cref="View"/> will be created using
/// <see cref="LayoutStyle.Absolute"/> coordinates. The initial size ( <see cref="View.Frame"/>) will be adjusted
/// to fit the contents of <see cref="Text"/>, including newlines ('\n') for multiple lines.
/// </para>
/// <para>If <see cref="Height"/> is greater than one, word wrapping is provided.</para>
/// <para>
/// This constructor initialize a View with a <see cref="LayoutStyle"/> of <see cref="LayoutStyle.Absolute"/>.
/// Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
/// control the size and location of the view, changing it to <see cref="LayoutStyle.Computed"/>.
/// </para>
/// </remarks>
public View ()
{
HotKeySpecifier = (Rune)'_';
TitleTextFormatter.HotKeyChanged += TitleTextFormatter_HotKeyChanged;
TextDirection = TextDirection.LeftRight_TopBottom;
Text = string.Empty;
CanFocus = false;
TabIndex = -1;
TabStop = false;
AddCommands ();
Margin = CreateAdornment (typeof (Margin)) as Margin;
Border = CreateAdornment (typeof (Border)) as Border;
Padding = CreateAdornment (typeof (Padding)) as Padding;
}
/// <summary>
/// Event called only once when the <see cref="View"/> is being initialized for the first time. Allows
/// configurations and assignments to be performed before the <see cref="View"/> being shown. This derived from
/// <see cref="ISupportInitializeNotification"/> to allow notify all the views that are being initialized.
/// </summary>
public event EventHandler Initialized;
/// <summary>
/// Get or sets if the <see cref="View"/> has been initialized (via <see cref="ISupportInitialize.BeginInit"/>
/// and <see cref="ISupportInitialize.EndInit"/>).
/// </summary>
/// <para>
/// If first-run-only initialization is preferred, overrides to
/// <see cref="ISupportInitializeNotification.IsInitialized"/> can be implemented, in which case the
/// <see cref="ISupportInitialize"/> methods will only be called if
/// <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
/// <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on first
/// run, instead of on every run.
/// </para>
public virtual bool IsInitialized { get; set; }
/// <summary>Signals the View that initialization is starting. See <see cref="ISupportInitialize"/>.</summary>
/// <remarks>
/// <para>
/// Views can opt-in to more sophisticated initialization by implementing overrides to
/// <see cref="ISupportInitialize.BeginInit"/> and <see cref="ISupportInitialize.EndInit"/> which will be called
/// when the <see cref="SuperView"/> is initialized.
/// </para>
/// <para>
/// If first-run-only initialization is preferred, overrides to <see cref="ISupportInitializeNotification"/> can
/// be implemented too, in which case the <see cref="ISupportInitialize"/> methods will only be called if
/// <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
/// <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on
/// first run, instead of on every run.
/// </para>
/// </remarks>
public virtual void BeginInit ()
{
if (IsInitialized)
{
throw new InvalidOperationException ("The view is already initialized.");
}
_oldCanFocus = CanFocus;
_oldTabIndex = _tabIndex;
if (_subviews?.Count > 0)
{
foreach (View view in _subviews)
{
if (!view.IsInitialized)
{
view.BeginInit ();
}
}
}
}
// TODO: Implement logic that allows EndInit to throw if BeginInit has not been called
// TODO: See EndInit_Called_Without_BeginInit_Throws test.
/// <summary>Signals the View that initialization is ending. See <see cref="ISupportInitialize"/>.</summary>
/// <remarks>
/// <para>Initializes all Subviews and Invokes the <see cref="Initialized"/> event.</para>
/// </remarks>
public virtual void EndInit ()
{
if (IsInitialized)
{
throw new InvalidOperationException ("The view is already initialized.");
}
IsInitialized = true;
// TODO: Move these into ViewText.cs as EndInit_Text() to consolodate.
// TODO: Verify UpdateTextDirection really needs to be called here.
// These calls were moved from BeginInit as they access Bounds which is indeterminate until EndInit is called.
UpdateTextDirection (TextDirection);
UpdateTextFormatterText ();
OnResizeNeeded ();
if (_subviews is { })
{
foreach (View view in _subviews)
{
if (!view.IsInitialized)
{
view.EndInit ();
}
}
}
Initialized?.Invoke (this, EventArgs.Empty);
}
#endregion Constructors and Initialization
/// <summary>Gets or sets an identifier for the view;</summary>
/// <value>The identifier.</value>
/// <remarks>The id should be unique across all Views that share a SuperView.</remarks>
public string Id { get; set; } = "";
/// <summary>Gets or sets arbitrary data for the view.</summary>
/// <remarks>This property is not used internally.</remarks>
public object Data { get; set; }
/// <summary>
/// Cancelable event fired when the <see cref="Command.Accept"/> command is invoked. Set
/// <see cref="CancelEventArgs.Cancel"/>
/// to cancel the event.
/// </summary>
public event EventHandler<CancelEventArgs> Accept;
/// <summary>
/// Called when the <see cref="Command.Accept"/> command is invoked. Fires the <see cref="Accept"/>
/// event.
/// </summary>
/// <returns>If <see langword="true"/> the event was canceled.</returns>
protected bool? OnAccept ()
{
var args = new CancelEventArgs ();
Accept?.Invoke (this, args);
return args.Cancel;
}
#region Visibility
private bool _oldEnabled;
/// <inheritdoc/>
public override bool Enabled
{
@@ -176,13 +334,13 @@ public partial class View : Responder, ISupportInitializeNotification
}
}
/// <summary>Gets or sets an identifier for the view;</summary>
/// <value>The identifier.</value>
/// <remarks>The id should be unique across all Views that share a SuperView.</remarks>
public string Id { get; set; } = "";
/// <summary>Event fired when the <see cref="Enabled"/> value is being changed.</summary>
public event EventHandler EnabledChanged;
/// <inheritdoc/>
public override void OnEnabledChanged () { EnabledChanged?.Invoke (this, EventArgs.Empty); }
/// <inheritdoc/>
/// >
public override bool Visible
{
get => base.Visible;
@@ -211,63 +369,15 @@ public partial class View : Responder, ISupportInitializeNotification
}
}
/// <summary>Event fired when the <see cref="Enabled"/> value is being changed.</summary>
public event EventHandler EnabledChanged;
/// <inheritdoc/>
public override void OnEnabledChanged () { EnabledChanged?.Invoke (this, EventArgs.Empty); }
/// <inheritdoc/>
public override void OnVisibleChanged () { VisibleChanged?.Invoke (this, EventArgs.Empty); }
/// <summary>Pretty prints the View</summary>
/// <returns></returns>
public override string ToString () { return $"{GetType ().Name}({Id}){Frame}"; }
/// <summary>Gets or sets whether a view is cleared if the <see cref="Visible"/> property is <see langword="false"/>.</summary>
public bool ClearOnVisibleFalse { get; set; } = true;
/// <summary>Event fired when the <see cref="Visible"/> value is being changed.</summary>
public event EventHandler VisibleChanged;
/// <summary>
/// Cancelable event fired when the <see cref="Command.Accept"/> command is invoked. Set <see cref="CancelEventArgs.Cancel"/>
/// to cancel the event.
/// </summary>
public event EventHandler<CancelEventArgs> Accept;
/// <summary>
/// Called when the <see cref="Command.Accept"/> command is invoked. Fires the <see cref="Accept"/>
/// event.
/// </summary>
/// <returns>If <see langword="true"/> the event was canceled.</returns>
protected bool? OnAccept ()
{
var args = new CancelEventArgs ();
Accept?.Invoke (this, args);
return args.Cancel;
}
/// <inheritdoc/>
protected override void Dispose (bool disposing)
{
LineCanvas.Dispose ();
Margin?.Dispose ();
Margin = null;
Border?.Dispose ();
Border = null;
Padding?.Dispose ();
Padding = null;
for (int i = InternalSubviews.Count - 1; i >= 0; i--)
{
View subview = InternalSubviews [i];
Remove (subview);
subview.Dispose ();
}
base.Dispose (disposing);
Debug.Assert (InternalSubviews.Count == 0);
}
private bool CanBeVisible (View view)
{
if (!view.Visible)
@@ -286,6 +396,8 @@ public partial class View : Responder, ISupportInitializeNotification
return true;
}
#endregion Visibility
#region Title
private string _title = string.Empty;
@@ -382,129 +494,30 @@ public partial class View : Responder, ISupportInitializeNotification
#endregion
#region Constructors and Initialization
/// <summary>Pretty prints the View</summary>
/// <returns></returns>
public override string ToString () { return $"{GetType ().Name}({Id}){Frame}"; }
/// <summary>Initializes a new instance of <see cref="View"/>.</summary>
/// <remarks>
/// <para>
/// Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
/// control the size and location of the view. The <see cref="View"/> will be created using
/// <see cref="LayoutStyle.Absolute"/> coordinates. The initial size ( <see cref="View.Frame"/>) will be adjusted
/// to fit the contents of <see cref="Text"/>, including newlines ('\n') for multiple lines.
/// </para>
/// <para>If <see cref="Height"/> is greater than one, word wrapping is provided.</para>
/// <para>
/// This constructor initialize a View with a <see cref="LayoutStyle"/> of <see cref="LayoutStyle.Absolute"/>.
/// Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
/// control the size and location of the view, changing it to <see cref="LayoutStyle.Computed"/>.
/// </para>
/// </remarks>
public View ()
/// <inheritdoc/>
protected override void Dispose (bool disposing)
{
HotKeySpecifier = (Rune)'_';
TitleTextFormatter.HotKeyChanged += TitleTextFormatter_HotKeyChanged;
LineCanvas.Dispose ();
TextDirection = TextDirection.LeftRight_TopBottom;
Text = string.Empty;
Margin?.Dispose ();
Margin = null;
Border?.Dispose ();
Border = null;
Padding?.Dispose ();
Padding = null;
CanFocus = false;
TabIndex = -1;
TabStop = false;
for (int i = InternalSubviews.Count - 1; i >= 0; i--)
{
View subview = InternalSubviews [i];
Remove (subview);
subview.Dispose ();
}
AddCommands ();
Margin = CreateAdornment (typeof (Margin)) as Margin;
Border = CreateAdornment (typeof (Border)) as Border;
Padding = CreateAdornment (typeof (Padding)) as Padding;
base.Dispose (disposing);
Debug.Assert (InternalSubviews.Count == 0);
}
/// <summary>
/// Get or sets if the <see cref="View"/> has been initialized (via <see cref="ISupportInitialize.BeginInit"/>
/// and <see cref="ISupportInitialize.EndInit"/>).
/// </summary>
/// <para>
/// If first-run-only initialization is preferred, overrides to
/// <see cref="ISupportInitializeNotification.IsInitialized"/> can be implemented, in which case the
/// <see cref="ISupportInitialize"/> methods will only be called if
/// <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
/// <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on first
/// run, instead of on every run.
/// </para>
public virtual bool IsInitialized { get; set; }
/// <summary>Signals the View that initialization is starting. See <see cref="ISupportInitialize"/>.</summary>
/// <remarks>
/// <para>
/// Views can opt-in to more sophisticated initialization by implementing overrides to
/// <see cref="ISupportInitialize.BeginInit"/> and <see cref="ISupportInitialize.EndInit"/> which will be called
/// when the <see cref="SuperView"/> is initialized.
/// </para>
/// <para>
/// If first-run-only initialization is preferred, overrides to <see cref="ISupportInitializeNotification"/> can
/// be implemented too, in which case the <see cref="ISupportInitialize"/> methods will only be called if
/// <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
/// <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on
/// first run, instead of on every run.
/// </para>
/// </remarks>
public virtual void BeginInit ()
{
if (IsInitialized)
{
throw new InvalidOperationException ("The view is already initialized.");
}
_oldCanFocus = CanFocus;
_oldTabIndex = _tabIndex;
if (_subviews?.Count > 0)
{
foreach (View view in _subviews)
{
if (!view.IsInitialized)
{
view.BeginInit ();
}
}
}
}
// TODO: Implement logic that allows EndInit to throw if BeginInit has not been called
// TODO: See EndInit_Called_Without_BeginInit_Throws test.
/// <summary>Signals the View that initialization is ending. See <see cref="ISupportInitialize"/>.</summary>
/// <remarks>
/// <para>Initializes all Subviews and Invokes the <see cref="Initialized"/> event.</para>
/// </remarks>
public virtual void EndInit ()
{
if (IsInitialized)
{
throw new InvalidOperationException ("The view is already initialized.");
}
IsInitialized = true;
// TODO: Move these into ViewText.cs as EndInit_Text() to consolodate.
// TODO: Verify UpdateTextDirection really needs to be called here.
// These calls were moved from BeginInit as they access Bounds which is indeterminate until EndInit is called.
UpdateTextDirection (TextDirection);
UpdateTextFormatterText ();
OnResizeNeeded ();
if (_subviews is { })
{
foreach (View view in _subviews)
{
if (!view.IsInitialized)
{
view.EndInit ();
}
}
}
Initialized?.Invoke (this, EventArgs.Empty);
}
#endregion Constructors and Initialization
}

View File

@@ -1,4 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeEditing/GenerateMemberBody/AccessorImplementationKind/@EntryValue">BackingField</s:String>
<s:String x:Key="/Default/CodeEditing/GenerateMemberBody/DocumentationGenerationKind/@EntryValue">Inherit</s:String>
<s:Boolean x:Key="/Default/CodeEditing/GenerateMemberBody/PlaceBackingFieldAboveProperty/@EntryValue">True</s:Boolean>
<s:Int64 x:Key="/Default/CodeEditing/NullCheckPatterns/PatternTypeNamesToPriority/=JetBrains_002EReSharper_002EFeature_002EServices_002ECSharp_002ENullChecking_002EArgumentNullExceptionThrowIfNullPattern/@EntryIndexedValue">5000</s:Int64>
<s:Int64 x:Key="/Default/CodeEditing/NullCheckPatterns/PatternTypeNamesToPriority/=JetBrains_002EReSharper_002EFeature_002EServices_002ECSharp_002ENullChecking_002EIfThenThrowPattern/@EntryIndexedValue">1000</s:Int64>
@@ -37,11 +39,13 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=TabsAreDisallowed/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnnecessaryWhitespace/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseThrowIfNullMethod/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=File_0020Layout/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="File Layout"&gt;&lt;CSCodeStyleAttributes /&gt;&lt;CSOptimizeUsings&gt;&lt;/CSOptimizeUsings&gt;&lt;XAMLCollapseEmptyTags&gt;False&lt;/XAMLCollapseEmptyTags&gt;&lt;CSReorderTypeMembers&gt;True&lt;/CSReorderTypeMembers&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Full_0020Cleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="Full Cleanup"&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;CSCodeStyleAttributes ArrangeVarStyle="True" ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" ArrangeArgumentsStyle="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeCodeBodyStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" ArrangeNamespaces="True" ArrangeNullCheckingPattern="True" /&gt;&lt;RemoveCodeRedundanciesVB&gt;True&lt;/RemoveCodeRedundanciesVB&gt;&lt;Xaml.RedundantFreezeAttribute&gt;True&lt;/Xaml.RedundantFreezeAttribute&gt;&lt;Xaml.RemoveRedundantModifiersAttribute&gt;True&lt;/Xaml.RemoveRedundantModifiersAttribute&gt;&lt;Xaml.RemoveRedundantNameAttribute&gt;True&lt;/Xaml.RemoveRedundantNameAttribute&gt;&lt;Xaml.RemoveRedundantResource&gt;True&lt;/Xaml.RemoveRedundantResource&gt;&lt;Xaml.RemoveRedundantCollectionProperty&gt;True&lt;/Xaml.RemoveRedundantCollectionProperty&gt;&lt;Xaml.RemoveRedundantAttachedPropertySetter&gt;True&lt;/Xaml.RemoveRedundantAttachedPropertySetter&gt;&lt;Xaml.RemoveRedundantStyledValue&gt;True&lt;/Xaml.RemoveRedundantStyledValue&gt;&lt;Xaml.RemoveRedundantNamespaceAlias&gt;True&lt;/Xaml.RemoveRedundantNamespaceAlias&gt;&lt;Xaml.RemoveForbiddenResourceName&gt;True&lt;/Xaml.RemoveForbiddenResourceName&gt;&lt;Xaml.RemoveRedundantGridDefinitionsAttribute&gt;True&lt;/Xaml.RemoveRedundantGridDefinitionsAttribute&gt;&lt;Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;True&lt;/Xaml.RemoveRedundantUpdateSourceTriggerAttribute&gt;&lt;Xaml.RemoveRedundantBindingModeAttribute&gt;True&lt;/Xaml.RemoveRedundantBindingModeAttribute&gt;&lt;Xaml.RemoveRedundantGridSpanAttribut&gt;True&lt;/Xaml.RemoveRedundantGridSpanAttribut&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;VBOptimizeImports&gt;True&lt;/VBOptimizeImports&gt;&lt;VBShortenReferences&gt;True&lt;/VBShortenReferences&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;VBReformatCode&gt;True&lt;/VBReformatCode&gt;&lt;VBFormatDocComments&gt;True&lt;/VBFormatDocComments&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Built-in: Full Cleanup</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Full Cleanup</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/APPLY_ON_COMPLETION/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
@@ -267,7 +271,7 @@
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;/TypePattern&gt;&#xD;
&lt;TypePattern DisplayName="Default Pattern"&gt;&#xD;
&lt;TypePattern DisplayName="Default Pattern" Priority="100"&gt;&#xD;
&lt;Entry DisplayName="Public Delegates" Priority="100"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;And&gt;&#xD;
@@ -306,6 +310,15 @@
&lt;Name /&gt;&#xD;
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;Entry DisplayName="Constructors"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;Kind Is="Constructor" /&gt;&#xD;
&lt;/Entry.Match&gt;&#xD;
&lt;Entry.SortBy&gt;&#xD;
&lt;Static /&gt;&#xD;
&lt;Access Is="0" /&gt;&#xD;
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;Entry DisplayName="Fields"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;And&gt;&#xD;
@@ -318,16 +331,6 @@
&lt;Entry.SortBy&gt;&#xD;
&lt;Access Is="0" /&gt;&#xD;
&lt;Readonly /&gt;&#xD;
&lt;Name /&gt;&#xD;
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;Entry DisplayName="Constructors"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;Kind Is="Constructor" /&gt;&#xD;
&lt;/Entry.Match&gt;&#xD;
&lt;Entry.SortBy&gt;&#xD;
&lt;Static /&gt;&#xD;
&lt;Access Is="0" /&gt;&#xD;
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;Property DisplayName="Properties w/ Backing Field" Priority="100"&gt;&#xD;
@@ -342,18 +345,6 @@
&lt;/Entry.Match&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;/Property&gt;&#xD;
&lt;Entry DisplayName="Properties, Indexers"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;Or&gt;&#xD;
&lt;Kind Is="Property" /&gt;&#xD;
&lt;Kind Is="Indexer" /&gt;&#xD;
&lt;/Or&gt;&#xD;
&lt;/Entry.Match&gt;&#xD;
&lt;Entry.SortBy&gt;&#xD;
&lt;Access Is="0" /&gt;&#xD;
&lt;Name /&gt;&#xD;
&lt;/Entry.SortBy&gt;&#xD;
&lt;/Entry&gt;&#xD;
&lt;Entry DisplayName="Interface Implementations" Priority="100"&gt;&#xD;
&lt;Entry.Match&gt;&#xD;
&lt;And&gt;&#xD;

View File

@@ -29,8 +29,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.2" />
<PackageReference Include="CsvHelper" Version="31.0.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.3" />
<PackageReference Include="CsvHelper" Version="31.0.2" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
</ItemGroup>

View File

@@ -30,7 +30,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="ReportGenerator" Version="5.2.1" />
<PackageReference Include="ReportGenerator" Version="5.2.2" />
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="20.0.15" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Xunit.Combinatorial" Version="1.6.24" />