Merge branch 'v1_develop' into v1_release

This commit is contained in:
Tig
2025-04-24 06:21:11 -06:00
8 changed files with 135 additions and 139 deletions

View File

@@ -11,7 +11,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="ReactiveUI.Fody" Version="19.5.41" /> <PackageReference Include="ReactiveUI.Fody" Version="19.5.41" />
<PackageReference Include="ReactiveUI" Version="20.1.1" /> <PackageReference Include="ReactiveUI" Version="20.2.45" />
<PackageReference Include="ReactiveMarbles.ObservableEvents.SourceGenerator" Version="1.3.1" PrivateAssets="all" /> <PackageReference Include="ReactiveMarbles.ObservableEvents.SourceGenerator" Version="1.3.1" PrivateAssets="all" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -18,6 +18,7 @@ namespace Terminal.Gui {
public const int STD_ERROR_HANDLE = -12; public const int STD_ERROR_HANDLE = -12;
internal IntPtr InputHandle, OutputHandle; internal IntPtr InputHandle, OutputHandle;
IntPtr screenBuffer;
readonly uint originalConsoleMode; readonly uint originalConsoleMode;
CursorVisibility? initialCursorVisibility = null; CursorVisibility? initialCursorVisibility = null;
CursorVisibility? currentCursorVisibility = null; CursorVisibility? currentCursorVisibility = null;
@@ -39,47 +40,47 @@ namespace Terminal.Gui {
public bool WriteToConsole (Size size, CharInfo [] charInfoBuffer, Coord coords, SmallRect window) public bool WriteToConsole (Size size, CharInfo [] charInfoBuffer, Coord coords, SmallRect window)
{ {
//if (OutputHandle == IntPtr.Zero) { if (!IsWindowsTerminal && screenBuffer == IntPtr.Zero) {
// ReadFromConsoleOutput (size, coords, ref window); ReadFromConsoleOutput (size, coords, ref window);
//} }
return WriteConsoleOutput (OutputHandle, charInfoBuffer, coords, new Coord () { X = window.Left, Y = window.Top }, ref window); if (!initialCursorVisibility.HasValue && GetCursorVisibility (out CursorVisibility visibility)) {
initialCursorVisibility = visibility;
}
return WriteConsoleOutput (IsWindowsTerminal ? OutputHandle : screenBuffer, charInfoBuffer, coords, new Coord () { X = window.Left, Y = window.Top }, ref window);
} }
//public void ReadFromConsoleOutput (Size size, Coord coords, ref SmallRect window) public void ReadFromConsoleOutput (Size size, Coord coords, ref SmallRect window)
//{ {
// OutputHandle = CreateConsoleScreenBuffer ( screenBuffer = CreateConsoleScreenBuffer (
// DesiredAccess.GenericRead | DesiredAccess.GenericWrite, DesiredAccess.GenericRead | DesiredAccess.GenericWrite,
// ShareMode.FileShareRead | ShareMode.FileShareWrite, ShareMode.FileShareRead | ShareMode.FileShareWrite,
// IntPtr.Zero, IntPtr.Zero,
// 1, 1,
// IntPtr.Zero IntPtr.Zero
// ); );
// if (ScreenBuffer == INVALID_HANDLE_VALUE) { if (screenBuffer == INVALID_HANDLE_VALUE) {
// var err = Marshal.GetLastWin32Error (); var err = Marshal.GetLastWin32Error ();
// if (err != 0) if (err != 0)
// throw new System.ComponentModel.Win32Exception (err); throw new System.ComponentModel.Win32Exception (err);
// } }
// if (!initialCursorVisibility.HasValue && GetCursorVisibility (out CursorVisibility visibility)) { if (!SetConsoleActiveScreenBuffer (screenBuffer)) {
// initialCursorVisibility = visibility; throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// if (!SetConsoleActiveScreenBuffer (ScreenBuffer)) { OriginalStdOutChars = new CharInfo [size.Height * size.Width];
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// }
// OriginalStdOutChars = new CharInfo [size.Height * size.Width]; if (!ReadConsoleOutput (screenBuffer, OriginalStdOutChars, coords, new Coord () { X = 0, Y = 0 }, ref window)) {
throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// if (!ReadConsoleOutput (ScreenBuffer, OriginalStdOutChars, coords, new Coord () { X = 0, Y = 0 }, ref window)) { }
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); }
// }
//}
public bool SetCursorPosition (Coord position) public bool SetCursorPosition (Coord position)
{ {
return SetConsoleCursorPosition (OutputHandle, position); return SetConsoleCursorPosition (IsWindowsTerminal ? OutputHandle : screenBuffer, position);
} }
public void SetInitialCursorVisibility () public void SetInitialCursorVisibility ()
@@ -91,11 +92,11 @@ namespace Terminal.Gui {
public bool GetCursorVisibility (out CursorVisibility visibility) public bool GetCursorVisibility (out CursorVisibility visibility)
{ {
if (OutputHandle == IntPtr.Zero) { if ((IsWindowsTerminal ? OutputHandle : screenBuffer) == IntPtr.Zero) {
visibility = CursorVisibility.Invisible; visibility = CursorVisibility.Invisible;
return false; return false;
} }
if (!GetConsoleCursorInfo (OutputHandle, out ConsoleCursorInfo info)) { if (!GetConsoleCursorInfo (IsWindowsTerminal ? OutputHandle : screenBuffer, out ConsoleCursorInfo info)) {
var err = Marshal.GetLastWin32Error (); var err = Marshal.GetLastWin32Error ();
if (err != 0) { if (err != 0) {
throw new System.ComponentModel.Win32Exception (err); throw new System.ComponentModel.Win32Exception (err);
@@ -148,7 +149,7 @@ namespace Terminal.Gui {
bVisible = ((uint)visibility & 0xFF00) != 0 bVisible = ((uint)visibility & 0xFF00) != 0
}; };
if (!SetConsoleCursorInfo (OutputHandle, ref info)) if (!SetConsoleCursorInfo (IsWindowsTerminal ? OutputHandle : screenBuffer, ref info))
return false; return false;
currentCursorVisibility = visibility; currentCursorVisibility = visibility;
@@ -164,28 +165,28 @@ namespace Terminal.Gui {
} }
ConsoleMode = originalConsoleMode; ConsoleMode = originalConsoleMode;
//if (!SetConsoleActiveScreenBuffer (OutputHandle)) { if (!SetConsoleActiveScreenBuffer (OutputHandle)) {
// var err = Marshal.GetLastWin32Error (); var err = Marshal.GetLastWin32Error ();
// Console.WriteLine ("Error: {0}", err); Console.WriteLine ("Error: {0}", err);
//} }
//if (ScreenBuffer != IntPtr.Zero) { if (screenBuffer != IntPtr.Zero) {
// CloseHandle (ScreenBuffer); CloseHandle (screenBuffer);
//} }
//ScreenBuffer = IntPtr.Zero; screenBuffer = IntPtr.Zero;
} }
internal Size GetConsoleBufferWindow (out Point position) internal Size GetConsoleBufferWindow (out Point position)
{ {
if (OutputHandle == IntPtr.Zero) { if ((IsWindowsTerminal ? OutputHandle : screenBuffer) == IntPtr.Zero) {
position = Point.Empty; position = Point.Empty;
return Size.Empty; return Size.Empty;
} }
var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX (); var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX ();
csbi.cbSize = (uint)Marshal.SizeOf (csbi); csbi.cbSize = (uint)Marshal.SizeOf (csbi);
if (!GetConsoleScreenBufferInfoEx (OutputHandle, ref csbi)) { if (!GetConsoleScreenBufferInfoEx ((IsWindowsTerminal ? OutputHandle : screenBuffer), ref csbi)) {
//throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); //throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
position = Point.Empty; position = Point.Empty;
return Size.Empty; return Size.Empty;
@@ -211,68 +212,70 @@ namespace Terminal.Gui {
return sz; return sz;
} }
//internal Size SetConsoleWindow (short cols, short rows) internal Size SetConsoleWindow (short cols, short rows)
//{ {
// var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX (); var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX ();
// csbi.cbSize = (uint)Marshal.SizeOf (csbi); csbi.cbSize = (uint)Marshal.SizeOf (csbi);
// if (!GetConsoleScreenBufferInfoEx (ScreenBuffer, ref csbi)) { if (!GetConsoleScreenBufferInfoEx (IsWindowsTerminal ? OutputHandle : screenBuffer, ref csbi)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// var maxWinSize = GetLargestConsoleWindowSize (ScreenBuffer); var maxWinSize = GetLargestConsoleWindowSize (IsWindowsTerminal ? OutputHandle : screenBuffer);
// var newCols = Math.Min (cols, maxWinSize.X); var newCols = Math.Min (cols, maxWinSize.X);
// var newRows = Math.Min (rows, maxWinSize.Y); var newRows = Math.Min (rows, maxWinSize.Y);
// csbi.dwSize = new Coord (newCols, Math.Max (newRows, (short)1)); csbi.dwSize = new Coord (newCols, Math.Max (newRows, (short)1));
// csbi.srWindow = new SmallRect (0, 0, newCols, newRows); csbi.srWindow = new SmallRect (0, 0, newCols, newRows);
// csbi.dwMaximumWindowSize = new Coord (newCols, newRows); csbi.dwMaximumWindowSize = new Coord (newCols, newRows);
// if (!SetConsoleScreenBufferInfoEx (ScreenBuffer, ref csbi)) { if (!SetConsoleScreenBufferInfoEx (IsWindowsTerminal ? OutputHandle : screenBuffer, ref csbi)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// var winRect = new SmallRect (0, 0, (short)(newCols - 1), (short)Math.Max (newRows - 1, 0)); var winRect = new SmallRect (0, 0, (short)(newCols - 1), (short)Math.Max (newRows - 1, 0));
// if (!SetConsoleWindowInfo (OutputHandle, true, ref winRect)) { if (!SetConsoleWindowInfo (OutputHandle, true, ref winRect)) {
// //throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); //throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// return new Size (cols, rows); return new Size (cols, rows);
// } }
// SetConsoleOutputWindow (csbi); SetConsoleOutputWindow (csbi);
// return new Size (winRect.Right + 1, newRows - 1 < 0 ? 0 : winRect.Bottom + 1); return new Size (winRect.Right + 1, newRows - 1 < 0 ? 0 : winRect.Bottom + 1);
//} }
//void SetConsoleOutputWindow (CONSOLE_SCREEN_BUFFER_INFOEX csbi) void SetConsoleOutputWindow (CONSOLE_SCREEN_BUFFER_INFOEX csbi)
//{ {
// if (ScreenBuffer != IntPtr.Zero && !SetConsoleScreenBufferInfoEx (ScreenBuffer, ref csbi)) { if ((IsWindowsTerminal ? OutputHandle : screenBuffer) != IntPtr.Zero && !SetConsoleScreenBufferInfoEx (IsWindowsTerminal ? OutputHandle : screenBuffer, ref csbi)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
//} }
//internal Size SetConsoleOutputWindow (out Point position) internal Size SetConsoleOutputWindow (out Point position)
//{ {
// if (ScreenBuffer == IntPtr.Zero) { if ((IsWindowsTerminal ? OutputHandle : screenBuffer) == IntPtr.Zero) {
// position = Point.Empty; position = Point.Empty;
// return Size.Empty; return Size.Empty;
// } }
// var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX (); var csbi = new CONSOLE_SCREEN_BUFFER_INFOEX ();
// csbi.cbSize = (uint)Marshal.SizeOf (csbi); csbi.cbSize = (uint)Marshal.SizeOf (csbi);
// if (!GetConsoleScreenBufferInfoEx (ScreenBuffer, ref csbi)) { if (!GetConsoleScreenBufferInfoEx (IsWindowsTerminal ? OutputHandle : screenBuffer, ref csbi)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// var sz = new Size (csbi.srWindow.Right - csbi.srWindow.Left + 1, var sz = new Size (csbi.srWindow.Right - csbi.srWindow.Left + 1,
// Math.Max (csbi.srWindow.Bottom - csbi.srWindow.Top + 1, 0)); Math.Max (csbi.srWindow.Bottom - csbi.srWindow.Top + 1, 0));
// position = new Point (csbi.srWindow.Left, csbi.srWindow.Top); position = new Point (csbi.srWindow.Left, csbi.srWindow.Top);
// SetConsoleOutputWindow (csbi); SetConsoleOutputWindow (csbi);
// var winRect = new SmallRect (0, 0, (short)(sz.Width - 1), (short)Math.Max (sz.Height - 1, 0)); var winRect = new SmallRect (0, 0, (short)(sz.Width - 1), (short)Math.Max (sz.Height - 1, 0));
// if (!SetConsoleScreenBufferInfoEx (OutputHandle, ref csbi)) { if (!SetConsoleScreenBufferInfoEx (OutputHandle, ref csbi)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// if (!SetConsoleWindowInfo (OutputHandle, true, ref winRect)) { if (!SetConsoleWindowInfo (OutputHandle, true, ref winRect)) {
// throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ()); throw new System.ComponentModel.Win32Exception (Marshal.GetLastWin32Error ());
// } }
// return sz; return sz;
//} }
//bool ContinueListeningForConsoleEvents = true; //bool ContinueListeningForConsoleEvents = true;
internal bool IsWindowsTerminal { get; set; }
public uint ConsoleMode { public uint ConsoleMode {
get { get {
GetConsoleMode (InputHandle, out uint v); GetConsoleMode (InputHandle, out uint v);
@@ -733,7 +736,7 @@ namespace Terminal.Gui {
WinConsole = new WindowsConsole (); WinConsole = new WindowsConsole ();
clipboard = new WindowsClipboard (); clipboard = new WindowsClipboard ();
isWindowsTerminal = Environment.GetEnvironmentVariable ("WT_SESSION") != null || Environment.GetEnvironmentVariable ("VSAPPIDNAME") != null; WinConsole.IsWindowsTerminal = isWindowsTerminal = Environment.GetEnvironmentVariable ("WT_SESSION") != null || Environment.GetEnvironmentVariable ("VSAPPIDNAME") != null;
} }
public override void PrepareToRun (MainLoop mainLoop, Action<KeyEvent> keyHandler, Action<KeyEvent> keyDownHandler, Action<KeyEvent> keyUpHandler, Action<MouseEvent> mouseHandler) public override void PrepareToRun (MainLoop mainLoop, Action<KeyEvent> keyHandler, Action<KeyEvent> keyDownHandler, Action<KeyEvent> keyUpHandler, Action<MouseEvent> mouseHandler)
@@ -747,28 +750,28 @@ namespace Terminal.Gui {
mLoop.ProcessInput = (e) => ProcessInput (e); mLoop.ProcessInput = (e) => ProcessInput (e);
//mLoop.WinChanged = (e) => { mLoop.WinChanged = (e) => {
// ChangeWin (e); ChangeWin (e);
//}; };
} }
//private void ChangeWin (Size e) private void ChangeWin (Size e)
//{ {
// var w = e.Width; var w = e.Width;
// if (w == cols - 3 && e.Height < rows) { if (w == cols - 3 && e.Height < rows) {
// w += 3; w += 3;
// } }
// var newSize = WinConsole.SetConsoleWindow ( var newSize = WinConsole.SetConsoleWindow (
// (short)Math.Max (w, 16), (short)Math.Max (e.Height, 0)); (short)Math.Max (w, 16), (short)Math.Max (e.Height, 0));
// left = 0; left = 0;
// top = 0; top = 0;
// cols = newSize.Width; cols = newSize.Width;
// rows = newSize.Height; rows = newSize.Height;
// ResizeScreen (); ResizeScreen ();
// UpdateOffScreen (); UpdateOffScreen ();
// TerminalResized.Invoke (); TerminalResized.Invoke ();
//} }
void ProcessInput (WindowsConsole.InputRecord inputEvent) void ProcessInput (WindowsConsole.InputRecord inputEvent)
{ {
@@ -892,14 +895,6 @@ namespace Terminal.Gui {
case WindowsConsole.EventType.Focus: case WindowsConsole.EventType.Focus:
keyModifiers = null; keyModifiers = null;
break; break;
case WindowsConsole.EventType.WindowBufferSize:
cols = inputEvent.WindowBufferSizeEvent.size.X;
rows = inputEvent.WindowBufferSizeEvent.size.Y;
ResizeScreen ();
TerminalResized.Invoke ();
break;
} }
} }

View File

@@ -166,6 +166,6 @@
<value>終える</value> <value>終える</value>
</data> </data>
<data name="wzNext" xml:space="preserve"> <data name="wzNext" xml:space="preserve">
<value>次に</value> <value>次に...</value>
</data> </data>
</root> </root>

View File

@@ -166,6 +166,6 @@
<value>Acabam_ento</value> <value>Acabam_ento</value>
</data> </data>
<data name="wzNext" xml:space="preserve"> <data name="wzNext" xml:space="preserve">
<value>S_eguir</value> <value>S_eguir...</value>
</data> </data>
</root> </root>

View File

@@ -20,7 +20,7 @@
<DebugType>portable</DebugType> <DebugType>portable</DebugType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net472;netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0</TargetFrameworks> <TargetFrameworks>net472;netstandard2.0;netstandard2.1;net6.0;net8.0</TargetFrameworks>
<RootNamespace>Terminal.Gui</RootNamespace> <RootNamespace>Terminal.Gui</RootNamespace>
<AssemblyName>Terminal.Gui</AssemblyName> <AssemblyName>Terminal.Gui</AssemblyName>
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage> <SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
@@ -30,7 +30,7 @@
<!-- =================================================================== --> <!-- =================================================================== -->
<ItemGroup> <ItemGroup>
<PackageReference Include="NStack.Core" Version="1.1.1" /> <PackageReference Include="NStack.Core" Version="1.1.1" />
<PackageReference Include="System.Management" Version="8.0.0" /> <PackageReference Include="System.Management" Version="9.0.4" />
<!-- Enable Nuget Source Link for github --> <!-- Enable Nuget Source Link for github -->
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" /> <PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
<InternalsVisibleTo Include="UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c135ca0dc72ed9549b7ebf23772eb9e3dc2dc9e4a4fb795fa88404a175cfbe230a3d5edb1802c7952b1b5edbeb8136dc16ea6ab03f3f6fed01e9937d8ef40378bee9a31502cd56bfc14adfb2858d438c66d87aea4c54c49bfad28a282bed869af33ac256fe9584b1c5b96479b52a0c95b5a400a7b833820faa272d16ce0586ed" /> <InternalsVisibleTo Include="UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c135ca0dc72ed9549b7ebf23772eb9e3dc2dc9e4a4fb795fa88404a175cfbe230a3d5edb1802c7952b1b5edbeb8136dc16ea6ab03f3f6fed01e9937d8ef40378bee9a31502cd56bfc14adfb2858d438c66d87aea4c54c49bfad28a282bed869af33ac256fe9584b1c5b96479b52a0c95b5a400a7b833820faa272d16ce0586ed" />

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
@@ -9,6 +9,8 @@
<!-- Do not modify these. --> <!-- Do not modify these. -->
<FileVersion>1.0.0.0</FileVersion> <FileVersion>1.0.0.0</FileVersion>
<Version>1.0.0</Version> <Version>1.0.0</Version>
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>UICatalog.snk</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
@@ -20,8 +22,7 @@
<None Update="./Scenarios/Spinning_globe_dark_small.gif" CopyToOutputDirectory="PreserveNewest" /> <None Update="./Scenarios/Spinning_globe_dark_small.gif" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" /> <PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
<PackageReference Include="CsvHelper" Version="33.0.1" /> <PackageReference Include="CsvHelper" Version="33.0.1" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" /> <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
</ItemGroup> </ItemGroup>

BIN
UICatalog/UICatalog.snk Normal file

Binary file not shown.

View File

@@ -18,15 +18,15 @@
<DefineConstants>TRACE;DEBUG_IDISPOSABLE</DefineConstants> <DefineConstants>TRACE;DEBUG_IDISPOSABLE</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="ReportGenerator" Version="5.3.8" /> <PackageReference Include="ReportGenerator" Version="5.4.5" />
<PackageReference Include="System.Collections" Version="4.3.0" /> <PackageReference Include="System.Collections" Version="4.3.0" />
<PackageReference Include="xunit" Version="2.9.0" /> <PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2"> <PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.2"> <PackageReference Include="coverlet.collector" Version="6.0.4">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>