From e9d4032bbbfc375fb10c13782a2d450fafd9bb80 Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Mon, 18 Sep 2023 13:28:20 -0500 Subject: [PATCH] Single Revertable Unit: Ditch .ABI completely? --- OpenConsole.sln | 31 +---------- build/config/esrp.build.batch.wpf.json | 2 +- .../templates-v2/job-build-project.yml | 2 +- doc/ORGANIZATION.md | 1 - .../dll/Microsoft.Terminal.Control.def | 24 ++++++++- .../dll/TerminalControl.vcxproj | 3 +- .../Microsoft.Terminal.Control.ABI.def | 22 -------- .../Microsoft.Terminal.Control.ABI.vcxproj | 54 ------------------- .../WpfTerminalControl/NativeMethods.cs | 40 +++++++------- .../WpfTerminalControl.csproj | 12 ++--- .../WpfTerminalTestNetCore.csproj | 4 +- 11 files changed, 56 insertions(+), 139 deletions(-) delete mode 100644 src/cascadia/TerminalControl/dll_abi/Microsoft.Terminal.Control.ABI.def delete mode 100644 src/cascadia/TerminalControl/dll_abi/Microsoft.Terminal.Control.ABI.vcxproj diff --git a/OpenConsole.sln b/OpenConsole.sln index b48261bd33f9..5c2b55ccd4b7 100644 --- a/OpenConsole.sln +++ b/OpenConsole.sln @@ -239,8 +239,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{89CDCC EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Types.Unit.Tests", "src\types\ut_types\Types.Unit.Tests.vcxproj", "{34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Control.ABI", "src\cascadia\TerminalControl\dll_abi\Microsoft.Terminal.Control.ABI.vcxproj", "{84848BFA-931D-42CE-9ADF-01EE54DE7890}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfTerminalControl", "src\cascadia\WpfTerminalControl\WpfTerminalControl.csproj", "{376FE273-6B84-4EB5-8B30-8DE9D21B022C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_TerminalApp", "src\cascadia\ut_app\TerminalApp.UnitTests.vcxproj", "{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}" @@ -334,7 +332,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "src\dep\fmt\fmt.vcxp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfTerminalTestNetCore", "src\cascadia\WpfTerminalTestNetCore\WpfTerminalTestNetCore.csproj", "{1588FD7C-241E-4E7D-9113-43735F3E6BAD}" ProjectSection(ProjectDependencies) = postProject - {84848BFA-931D-42CE-9ADF-01EE54DE7890} = {84848BFA-931D-42CE-9ADF-01EE54DE7890} + {CA5CAD1A-F542-4635-A069-7CAEFB930070} = {CA5CAD1A-F542-4635-A069-7CAEFB930070} {A22EC5F6-7851-4B88-AC52-47249D437A52} = {A22EC5F6-7851-4B88-AC52-47249D437A52} EndProjectSection EndProject @@ -1711,32 +1709,6 @@ Global {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x64.Build.0 = Release|x64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.ActiveCfg = Release|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.Build.0 = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|ARM64.Build.0 = Debug|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x64.ActiveCfg = Debug|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x64.Build.0 = Debug|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x86.ActiveCfg = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Debug|x86.Build.0 = Debug|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|Any CPU.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM64.ActiveCfg = Release|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|ARM64.Build.0 = Release|ARM64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x64.ActiveCfg = Release|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x64.Build.0 = Release|x64 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x86.ActiveCfg = Release|Win32 - {84848BFA-931D-42CE-9ADF-01EE54DE7890}.Release|x86.Build.0 = Release|Win32 {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|Any CPU.ActiveCfg = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.Build.0 = Debug|Any CPU @@ -2892,7 +2864,6 @@ Global {05500DEF-2294-41E3-AF9A-24E580B82836} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} {1E4A062E-293B-4817-B20D-BF16B979E350} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} - {84848BFA-931D-42CE-9ADF-01EE54DE7890} = {9921CA0A-320C-4460-8623-3A3196E7F4CB} {376FE273-6B84-4EB5-8B30-8DE9D21B022C} = {4DAF0299-495E-4CD1-A982-9BAC16A45932} {CA5CAD1A-9333-4D05-B12A-1905CBF112F9} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E} {CA5CAD1A-9A12-429C-B551-8562EC954746} = {59840756-302F-44DF-AA47-441A9D673202} diff --git a/build/config/esrp.build.batch.wpf.json b/build/config/esrp.build.batch.wpf.json index 10fbbc9ad67f..eee524991dae 100644 --- a/build/config/esrp.build.batch.wpf.json +++ b/build/config/esrp.build.batch.wpf.json @@ -1,7 +1,7 @@ [ { "MatchedPath": [ - "Microsoft.Terminal.Control.ABI.dll" + "Microsoft.Terminal.Control.dll" ], "SigningInfo": { "Operations": [ diff --git a/build/pipelines/templates-v2/job-build-project.yml b/build/pipelines/templates-v2/job-build-project.yml index 079daa92e5b9..39d5020c5c30 100644 --- a/build/pipelines/templates-v2/job-build-project.yml +++ b/build/pipelines/templates-v2/job-build-project.yml @@ -114,7 +114,7 @@ jobs: $SignFragments += "wpfdotnet" } If ([bool]::Parse("${{ parameters.buildWPF }}")) { - $BuildTargets += "Terminal\Control\Microsoft_Terminal_Control_ABI" + $BuildTargets += "Terminal\Control\Microsoft_Terminal_Control" $SignFragments += "wpf" } If ([bool]::Parse("${{ parameters.buildConPTY }}")) { diff --git a/doc/ORGANIZATION.md b/doc/ORGANIZATION.md index 52be7a01beb1..07a6e41ee7e0 100644 --- a/doc/ORGANIZATION.md +++ b/doc/ORGANIZATION.md @@ -29,7 +29,6 @@ * `/src/cascadia/TerminalSettings` - This is the DLL responsible for abstracting the settings for both the TerminalCore and the TerminalControl. This provides consumers of the TerminalControl a common interface for supplying settings to the Terminal. * `/src/cascadia/TerminalCore` - This LIB is responsible for the core implementation of a terminal instance. This defines one important class `Terminal` which is a complete terminal instance, with buffer, colors table, VT parsing, input handling, etc. It does _not_ prescribe any sort of UI implementation - it should be connected to code that can handle rendering its contents, and provide input to it. * `/src/cascadia/TerminalControl` - This DLL provides the UWP-XAML implementation of a `TermControl`, which can be embedded within an application to provide a terminal instance within the application. It contains a DX renderer for drawing text to the screen, and translates input to send to the core Terminal. It also receives settings to apply to both itself and the core Terminal. - * `/src/cascadia/TerminalControl/dll_abi` - Exposes a flat C API to the lower-level components of TerminalControl, but none of the WinRT stuff. * `/src/cascadia/TerminalApp` - This DLL represents the implementation of the Windows Terminal application. This includes parsing settings, hosting tabs & panes with Terminals in them, and displaying other UI elements. This DLL is almost entirely UWP-like code, and shouldn't be doing any Win32-like UI work. * `/src/cascadia/WindowsTerminal` - This EXE provides Win32 hosting for the TerminalApp. It will set up XAML islands, and is responsible for drawing the window, either as a standard window or with content in the titlebar (non-client area). * `/src/cascadia/CascadiaPackage` - This is a project for packaging the Windows Terminal and its dependencies into an .appx/.msix for deploying to the machine. diff --git a/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def b/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def index 4b5e7aef1da8..8500c457d68b 100644 --- a/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def +++ b/src/cascadia/TerminalControl/dll/Microsoft.Terminal.Control.def @@ -1,4 +1,26 @@ -; Microsoft.Terminal.Control.dll exposes only activatable WinRT classes EXPORTS + ; WinRT ABI DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE + + ; Flat C ABI + CreateTerminal + DestroyTerminal + TerminalBlinkCursor + TerminalCalculateResize + TerminalClearSelection + TerminalDpiChanged + TerminalGetSelection + TerminalIsSelectionActive + TerminalKillFocus + TerminalRegisterScrollCallback + TerminalRegisterWriteCallback + TerminalSendCharEvent + TerminalSendKeyEvent + TerminalSendOutput + TerminalSetCursorVisible + TerminalSetFocus + TerminalSetTheme + TerminalTriggerResize + TerminalTriggerResizeWithDimension + TerminalUserScroll diff --git a/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj b/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj index 82ef3b91658c..4116d986ea50 100644 --- a/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj +++ b/src/cascadia/TerminalControl/dll/TerminalControl.vcxproj @@ -89,7 +89,8 @@ - dwrite.lib;dxgi.lib;d2d1.lib;d3d11.lib;shcore.lib;winmm.lib;pathcch.lib;propsys.lib;uiautomationcore.lib;Shlwapi.lib;ntdll.lib;user32.lib;shell32.lib;kernel32.lib;%(AdditionalDependencies) + delayimp.lib;Uiautomationcore.lib;onecoreuap.lib;%(AdditionalDependencies) + uiautomationcore.dll;%(DelayLoadDLLs) - - - {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} - true - true - - - - - - delayimp.lib;Uiautomationcore.lib;onecoreuap.lib;%(AdditionalDependencies) - uiautomationcore.dll;%(DelayLoadDLLs) - - /INCLUDE:_DllMain@12 %(AdditionalOptions) - /INCLUDE:DllMain %(AdditionalOptions) - - - - - - - - - $([System.String]::Copy('$(PGODatabaseFileName)').Replace('.ABI.pgd', '.pgd')) - - - diff --git a/src/cascadia/WpfTerminalControl/NativeMethods.cs b/src/cascadia/WpfTerminalControl/NativeMethods.cs index 01a83ab66e57..96898df5dc7c 100644 --- a/src/cascadia/WpfTerminalControl/NativeMethods.cs +++ b/src/cascadia/WpfTerminalControl/NativeMethods.cs @@ -179,66 +179,66 @@ public enum SetWindowPosFlags : uint SWP_SHOWWINDOW = 0x0040, } - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] public static extern void CreateTerminal(IntPtr parent, out IntPtr hwnd, out IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSendOutput(IntPtr terminal, string lpdata); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] public static extern void TerminalTriggerResize(IntPtr terminal, int width, int height, out TilSize dimensions); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] public static extern void TerminalTriggerResizeWithDimension(IntPtr terminal, TilSize dimensions, out TilSize dimensionsInPixels); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = false)] public static extern void TerminalCalculateResize(IntPtr terminal, int width, int height, out TilSize dimensions); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalDpiChanged(IntPtr terminal, int newDpi); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalRegisterScrollCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)] ScrollCallback callback); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalRegisterWriteCallback(IntPtr terminal, [MarshalAs(UnmanagedType.FunctionPtr)] WriteCallback callback); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalUserScroll(IntPtr terminal, int viewTop); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalClearSelection(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] [return: MarshalAs(UnmanagedType.LPWStr)] public static extern string TerminalGetSelection(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool TerminalIsSelectionActive(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] public static extern void DestroyTerminal(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSendKeyEvent(IntPtr terminal, ushort vkey, ushort scanCode, ushort flags, bool keyDown); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSendCharEvent(IntPtr terminal, char ch, ushort scanCode, ushort flags); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSetTheme(IntPtr terminal, [MarshalAs(UnmanagedType.Struct)] TerminalTheme theme, string fontFamily, short fontSize, int newDpi); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalBlinkCursor(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSetCursorVisible(IntPtr terminal, bool visible); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalSetFocus(IntPtr terminal); - [DllImport("Microsoft.Terminal.Control.ABI.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] + [DllImport("Microsoft.Terminal.Control.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, PreserveSig = true)] public static extern void TerminalKillFocus(IntPtr terminal); [DllImport("user32.dll", SetLastError = true)] diff --git a/src/cascadia/WpfTerminalControl/WpfTerminalControl.csproj b/src/cascadia/WpfTerminalControl/WpfTerminalControl.csproj index 22d2858e8187..6581f1478b25 100644 --- a/src/cascadia/WpfTerminalControl/WpfTerminalControl.csproj +++ b/src/cascadia/WpfTerminalControl/WpfTerminalControl.csproj @@ -34,28 +34,28 @@ - + true runtimes\win-x86\native\ - + true runtimes\win-x64\native\ - + true runtimes\win-arm64\native\ - + true runtimes\win-x86\native\ - + true runtimes\win-x64\native\ - + true runtimes\win-arm64\native\ diff --git a/src/cascadia/WpfTerminalTestNetCore/WpfTerminalTestNetCore.csproj b/src/cascadia/WpfTerminalTestNetCore/WpfTerminalTestNetCore.csproj index 5189b4849470..b3b839c48557 100644 --- a/src/cascadia/WpfTerminalTestNetCore/WpfTerminalTestNetCore.csproj +++ b/src/cascadia/WpfTerminalTestNetCore/WpfTerminalTestNetCore.csproj @@ -9,7 +9,7 @@ - + false @@ -21,7 +21,7 @@ app.manifest - + PreserveNewest