From dd4fefa410fed07d5be4c521f9635b99f47f9ecb Mon Sep 17 00:00:00 2001 From: Static <210101922+Static-Codes@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:49:11 -0500 Subject: [PATCH 1/2] Push to .NET 10 + removed .NET standard support due to incompatibilities with my host system. Tested on Linux Mint 22.3 --- .gitignore | 3 +- NativeFileDialogSharp.sln | 2 - .../Native/NativeFunctions.cs | 116 +++++++++++------- .../NativeFileDialogSharp.csproj | 4 +- NativeFileDialogSharp/NativeWrappers.cs | 41 +++---- .../NativeFileDialogSharpSandbox.csproj | 2 +- NativeFileDialogSharpSandbox/Program.cs | 61 +++++++-- .../App.config | 6 - ...eFileDialogSharpSandboxNetFramework.csproj | 102 --------------- .../Program.cs | 26 ---- .../Properties/AssemblyInfo.cs | 36 ------ .../nfd.dll | Bin 17920 -> 0 bytes .../nfd_x86.dll | Bin 14336 -> 0 bytes .../packages.config | 4 - 14 files changed, 148 insertions(+), 255 deletions(-) delete mode 100644 NativeFileDialogSharpSandboxNetFramework/App.config delete mode 100644 NativeFileDialogSharpSandboxNetFramework/NativeFileDialogSharpSandboxNetFramework.csproj delete mode 100644 NativeFileDialogSharpSandboxNetFramework/Program.cs delete mode 100644 NativeFileDialogSharpSandboxNetFramework/Properties/AssemblyInfo.cs delete mode 100644 NativeFileDialogSharpSandboxNetFramework/nfd.dll delete mode 100644 NativeFileDialogSharpSandboxNetFramework/nfd_x86.dll delete mode 100644 NativeFileDialogSharpSandboxNetFramework/packages.config diff --git a/.gitignore b/.gitignore index add57be..68fa935 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ bin/ obj/ /packages/ riderModule.iml -/_ReSharper.Caches/ \ No newline at end of file +/_ReSharper.Caches/ +.vscode/ \ No newline at end of file diff --git a/NativeFileDialogSharp.sln b/NativeFileDialogSharp.sln index db33b15..39284c4 100644 --- a/NativeFileDialogSharp.sln +++ b/NativeFileDialogSharp.sln @@ -7,8 +7,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NativeFileDialogSharp", "Na EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NativeFileDialogSharpSandbox", "NativeFileDialogSharpSandbox\NativeFileDialogSharpSandbox.csproj", "{427E5F76-8418-4EA3-9AA3-C1DBFDE0478F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NativeFileDialogSharpSandboxNetFramework", "NativeFileDialogSharpSandboxNetFramework\NativeFileDialogSharpSandboxNetFramework.csproj", "{0FD91168-D8F5-4776-8D91-CB9B9C55AA1B}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/NativeFileDialogSharp/Native/NativeFunctions.cs b/NativeFileDialogSharp/Native/NativeFunctions.cs index 9b702ea..f8ab492 100644 --- a/NativeFileDialogSharp/Native/NativeFunctions.cs +++ b/NativeFileDialogSharp/Native/NativeFunctions.cs @@ -10,88 +10,110 @@ public struct nfdpathset_t public UIntPtr count; } - public enum nfdresult_t + public enum Nfdresult_t { NFD_ERROR, NFD_OKAY, NFD_CANCEL } - public static class NativeFunctions + public static partial class NativeFunctions { public const string LibraryName = "nfd"; - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_OpenDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_OpenDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_OpenDialogMultiple(byte* filterList, byte* defaultPath, + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_OpenDialogMultiple(byte* filterList, byte* defaultPath, nfdpathset_t* outPaths); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_SaveDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_SaveDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_PickFolder(byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_PickFolder(byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe byte* NFD_GetError(); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial byte* NFD_GetError(); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe UIntPtr NFD_PathSet_GetCount(nfdpathset_t* pathSet); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial UIntPtr NFDPathSetGetCount(nfdpathset_t* pathSet); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe byte* NFD_PathSet_GetPath(nfdpathset_t* pathSet, UIntPtr index); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial byte* NFDPathSetGetPath(nfdpathset_t* pathSet, UIntPtr index); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_PathSet_Free(nfdpathset_t* pathSet); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFDPathSetFree(nfdpathset_t* pathSet); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_Dummy(); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFD_Dummy(); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe IntPtr NFD_Malloc(UIntPtr bytes); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial IntPtr NFD_Malloc(UIntPtr bytes); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_Free(IntPtr ptr); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFD_Free(IntPtr ptr); } - public static class NativeFunctions32 + public static partial class NativeFunctions32 { public const string LibraryName = "nfd_x86"; - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_OpenDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_OpenDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_OpenDialogMultiple(byte* filterList, byte* defaultPath, + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_OpenDialogMultiple(byte* filterList, byte* defaultPath, nfdpathset_t* outPaths); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_SaveDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_SaveDialog(byte* filterList, byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe nfdresult_t NFD_PickFolder(byte* defaultPath, out IntPtr outPath); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial Nfdresult_t NFD_PickFolder(byte* defaultPath, out IntPtr outPath); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe byte* NFD_GetError(); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial byte* NFD_GetError(); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe UIntPtr NFD_PathSet_GetCount(nfdpathset_t* pathSet); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial UIntPtr NFD_PathSet_GetCount(nfdpathset_t* pathSet); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe byte* NFD_PathSet_GetPath(nfdpathset_t* pathSet, UIntPtr index); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial byte* NFD_PathSet_GetPath(nfdpathset_t* pathSet, UIntPtr index); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_PathSet_Free(nfdpathset_t* pathSet); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFD_PathSet_Free(nfdpathset_t* pathSet); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_Dummy(); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFD_Dummy(); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe IntPtr NFD_Malloc(UIntPtr bytes); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial IntPtr NFD_Malloc(UIntPtr bytes); - [DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern unsafe void NFD_Free(IntPtr ptr); + [LibraryImport(LibraryName)] + [UnmanagedCallConv(CallConvs = [typeof(System.Runtime.CompilerServices.CallConvCdecl)])] + public static unsafe partial void NFD_Free(IntPtr ptr); } } \ No newline at end of file diff --git a/NativeFileDialogSharp/NativeFileDialogSharp.csproj b/NativeFileDialogSharp/NativeFileDialogSharp.csproj index bbfcf40..0bafb16 100644 --- a/NativeFileDialogSharp/NativeFileDialogSharp.csproj +++ b/NativeFileDialogSharp/NativeFileDialogSharp.csproj @@ -1,8 +1,8 @@ - 7.3 0.5.0 + enable disable true Zlib @@ -10,7 +10,7 @@ https://github.com/milleniumbug/NativeFileDialogSharp https://github.com/milleniumbug/NativeFileDialogSharp Cross-platform native file dialog controls for Windows, Linux and macOS - netstandard2.0 + net10.0 diff --git a/NativeFileDialogSharp/NativeWrappers.cs b/NativeFileDialogSharp/NativeWrappers.cs index 54f41d4..5b9d21d 100644 --- a/NativeFileDialogSharp/NativeWrappers.cs +++ b/NativeFileDialogSharp/NativeWrappers.cs @@ -18,7 +18,7 @@ private static bool Is32BitWindowsOnNetFramework() try { // we call a function that does nothing just to test if we can load it properly - NativeFileDialogSharp.Native.NativeFunctions.NFD_Dummy(); + NativeFunctions.NFD_Dummy(); return false; } catch @@ -26,7 +26,7 @@ private static bool Is32BitWindowsOnNetFramework() // a call to a default library failed, let's attempt the other one try { - NativeFileDialogSharp.Native.NativeFunctions32.NFD_Dummy(); + NativeFunctions32.NFD_Dummy(); return true; } catch @@ -77,15 +77,14 @@ public static unsafe DialogResult FileOpen(string filterList = null, string defa { string path = null; string errorMessage = null; - IntPtr outPathIntPtr; - var result = need32bit - ? NativeFunctions32.NFD_OpenDialog(filterListNts, defaultPathNts, out outPathIntPtr) + var result = need32bit + ? NativeFunctions32.NFD_OpenDialog(filterListNts, defaultPathNts, out nint outPathIntPtr) : NativeFunctions.NFD_OpenDialog(filterListNts, defaultPathNts, out outPathIntPtr); - if (result == nfdresult_t.NFD_ERROR) + if (result == Nfdresult_t.NFD_ERROR) { errorMessage = FromUtf8(NativeFunctions.NFD_GetError()); } - else if (result == nfdresult_t.NFD_OKAY) + else if (result == Nfdresult_t.NFD_OKAY) { var outPathNts = (byte*)outPathIntPtr.ToPointer(); path = FromUtf8(outPathNts); @@ -107,11 +106,11 @@ public static unsafe DialogResult FileSave(string filterList = null, string defa var result = need32bit ? NativeFunctions32.NFD_SaveDialog(filterListNts, defaultPathNts, out outPathIntPtr) : NativeFunctions.NFD_SaveDialog(filterListNts, defaultPathNts, out outPathIntPtr); - if (result == nfdresult_t.NFD_ERROR) + if (result == Nfdresult_t.NFD_ERROR) { errorMessage = FromUtf8(NativeFunctions.NFD_GetError()); } - else if (result == nfdresult_t.NFD_OKAY) + else if (result == Nfdresult_t.NFD_OKAY) { var outPathNts = (byte*)outPathIntPtr.ToPointer(); path = FromUtf8(outPathNts); @@ -132,11 +131,11 @@ public static unsafe DialogResult FolderPicker(string defaultPath = null) var result = need32bit ? NativeFunctions32.NFD_PickFolder(defaultPathNts, out outPathIntPtr) : NativeFunctions.NFD_PickFolder(defaultPathNts, out outPathIntPtr); - if (result == nfdresult_t.NFD_ERROR) + if (result == Nfdresult_t.NFD_ERROR) { errorMessage = FromUtf8(NativeFunctions.NFD_GetError()); } - else if (result == nfdresult_t.NFD_OKAY) + else if (result == Nfdresult_t.NFD_OKAY) { var outPathNts = (byte*)outPathIntPtr.ToPointer(); path = FromUtf8(outPathNts); @@ -158,20 +157,20 @@ public static unsafe DialogResult FileOpenMultiple(string filterList = null, str var result = need32bit ? NativeFunctions32.NFD_OpenDialogMultiple(filterListNts, defaultPathNts, &pathSet) : NativeFunctions.NFD_OpenDialogMultiple(filterListNts, defaultPathNts, &pathSet); - if (result == nfdresult_t.NFD_ERROR) + if (result == Nfdresult_t.NFD_ERROR) { errorMessage = FromUtf8(NativeFunctions.NFD_GetError()); } - else if (result == nfdresult_t.NFD_OKAY) + else if (result == Nfdresult_t.NFD_OKAY) { - var pathCount = (int)NativeFunctions.NFD_PathSet_GetCount(&pathSet).ToUInt32(); + var pathCount = (int)NativeFunctions.NFDPathSetGetCount(&pathSet).ToUInt32(); paths = new List(pathCount); for (int i = 0; i < pathCount; i++) { - paths.Add(FromUtf8(NativeFunctions.NFD_PathSet_GetPath(&pathSet, new UIntPtr((uint)i)))); + paths.Add(FromUtf8(NativeFunctions.NFDPathSetGetPath(&pathSet, new UIntPtr((uint)i)))); } - NativeFunctions.NFD_PathSet_Free(&pathSet); + NativeFunctions.NFDPathSetFree(&pathSet); } return new DialogResult(result, null, paths, errorMessage); @@ -181,21 +180,21 @@ public static unsafe DialogResult FileOpenMultiple(string filterList = null, str public class DialogResult { - private readonly nfdresult_t result; + private readonly Nfdresult_t result; public string Path { get; } public IReadOnlyList Paths { get; } - public bool IsError => result == nfdresult_t.NFD_ERROR; + public bool IsError => result == Nfdresult_t.NFD_ERROR; public string ErrorMessage { get; } - public bool IsCancelled => result == nfdresult_t.NFD_CANCEL; + public bool IsCancelled => result == Nfdresult_t.NFD_CANCEL; - public bool IsOk => result == nfdresult_t.NFD_OKAY; + public bool IsOk => result == Nfdresult_t.NFD_OKAY; - internal DialogResult(nfdresult_t result, string path, IReadOnlyList paths, string errorMessage) + internal DialogResult(Nfdresult_t result, string path, IReadOnlyList paths, string errorMessage) { this.result = result; Path = path; diff --git a/NativeFileDialogSharpSandbox/NativeFileDialogSharpSandbox.csproj b/NativeFileDialogSharpSandbox/NativeFileDialogSharpSandbox.csproj index 5f3b95e..5b94ef9 100644 --- a/NativeFileDialogSharpSandbox/NativeFileDialogSharpSandbox.csproj +++ b/NativeFileDialogSharpSandbox/NativeFileDialogSharpSandbox.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net10.0 enable enable diff --git a/NativeFileDialogSharpSandbox/Program.cs b/NativeFileDialogSharpSandbox/Program.cs index f0a57a1..58fb361 100644 --- a/NativeFileDialogSharpSandbox/Program.cs +++ b/NativeFileDialogSharpSandbox/Program.cs @@ -1,19 +1,19 @@ using NativeFileDialogSharp; -using System; namespace NativeFileDialogSharpSandbox { internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { - PrintResult(Dialog.FileOpenMultiple("pdf", null)); - PrintResult(Dialog.FileOpen(null)); - PrintResult(Dialog.FileSave(null)); - PrintResult(Dialog.FolderPicker(null)); + RunTest(); + // PrintResult(Dialog.FileOpenMultiple("pdf", null)); + // PrintResult(Dialog.FileOpen(null)); + // PrintResult(Dialog.FileSave(null)); + // PrintResult(Dialog.FolderPicker(null)); } - static void PrintResult(DialogResult result) + private static void PrintResult(DialogResult result) { Console.WriteLine($"Path: {result.Path}, IsError {result.IsError}, IsOk {result.IsOk}, IsCancelled {result.IsCancelled}, ErrorMessage {result.ErrorMessage}"); if (result.Paths != null) @@ -22,5 +22,52 @@ static void PrintResult(DialogResult result) Console.WriteLine(string.Join("\n", result.Paths)); } } + + + private static DialogResult OpenDialog(string? filterList = null, string? defaultPath = null) + { + var dialogResult = Dialog.FileOpen(filterList, defaultPath); + return dialogResult; + } + + public static bool TryOpenDialog(out DialogResult? dialogResult, string? filterList = null, string? defaultPath = null) + { + dialogResult = OpenDialog(filterList, defaultPath); + return dialogResult.IsOk; + } + + private static void RunTest() + { + var desktopDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + var status = TryOpenDialog( + out DialogResult? dialogResult, + filterList: "bamc", + defaultPath: desktopDir + ); + + if (!status || dialogResult == null) + { + var cancelled = dialogResult?.IsCancelled ?? false; + var errored = dialogResult?.ErrorMessage != null; + var message = + cancelled ? "Operation cancelled." : + errored ? dialogResult!.ErrorMessage : + "Unspecified"; + + Console.WriteLine + ( + string.Join(Environment.NewLine, [ + "Unable to complete the OpenFileDialog process.", + "Error Log:", + message + ]) + ); + Environment.Exit(1); + } + + Console.WriteLine($"Selected file path: {dialogResult.Path}"); + } + + } } diff --git a/NativeFileDialogSharpSandboxNetFramework/App.config b/NativeFileDialogSharpSandboxNetFramework/App.config deleted file mode 100644 index e89424b..0000000 --- a/NativeFileDialogSharpSandboxNetFramework/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/NativeFileDialogSharpSandboxNetFramework/NativeFileDialogSharpSandboxNetFramework.csproj b/NativeFileDialogSharpSandboxNetFramework/NativeFileDialogSharpSandboxNetFramework.csproj deleted file mode 100644 index b460e14..0000000 --- a/NativeFileDialogSharpSandboxNetFramework/NativeFileDialogSharpSandboxNetFramework.csproj +++ /dev/null @@ -1,102 +0,0 @@ - - - - - Debug - AnyCPU - {0FD91168-D8F5-4776-8D91-CB9B9C55AA1B} - Exe - NativeFileDialogSharpSandboxNetFramework - NativeFileDialogSharpSandboxNetFramework - v4.6.2 - 512 - true - true - - - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - bin\x64\Debug\ - DEBUG;TRACE - full - x64 - 7.3 - prompt - true - - - bin\x64\Release\ - TRACE - true - pdbonly - x64 - 7.3 - prompt - true - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - 7.3 - prompt - true - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - 7.3 - prompt - true - - - - ..\packages\NativeFileDialogSharp.0.5.0\lib\netstandard2.0\NativeFileDialogSharp.dll - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/NativeFileDialogSharpSandboxNetFramework/Program.cs b/NativeFileDialogSharpSandboxNetFramework/Program.cs deleted file mode 100644 index 485a57f..0000000 --- a/NativeFileDialogSharpSandboxNetFramework/Program.cs +++ /dev/null @@ -1,26 +0,0 @@ -using NativeFileDialogSharp; -using System; - -namespace NativeFileDialogSharpSandboxNetFramework -{ - internal class Program - { - static void Main(string[] args) - { - PrintResult(Dialog.FileOpenMultiple("pdf", null)); - PrintResult(Dialog.FileOpen(null)); - PrintResult(Dialog.FileSave(null)); - PrintResult(Dialog.FolderPicker(null)); - } - - static void PrintResult(DialogResult result) - { - Console.WriteLine($"Path: {result.Path}, IsError {result.IsError}, IsOk {result.IsOk}, IsCancelled {result.IsCancelled}, ErrorMessage {result.ErrorMessage}"); - if (result.Paths != null) - { - Console.WriteLine("Paths"); - Console.WriteLine(string.Join("\n", result.Paths)); - } - } - } -} diff --git a/NativeFileDialogSharpSandboxNetFramework/Properties/AssemblyInfo.cs b/NativeFileDialogSharpSandboxNetFramework/Properties/AssemblyInfo.cs deleted file mode 100644 index ffd8a87..0000000 --- a/NativeFileDialogSharpSandboxNetFramework/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("NativeFileDialogSharpSandboxNetFramework")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("NativeFileDialogSharpSandboxNetFramework")] -[assembly: AssemblyCopyright("Copyright © 2021")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0fd91168-d8f5-4776-8d91-cb9b9c55aa1b")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NativeFileDialogSharpSandboxNetFramework/nfd.dll b/NativeFileDialogSharpSandboxNetFramework/nfd.dll deleted file mode 100644 index 76865ae218d304b8e5677041d7e4cfaa5a6e372c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17920 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 - - - \ No newline at end of file From 45b4708c2a54ad41c2fbf21682814af609c16574 Mon Sep 17 00:00:00 2001 From: Static <210101922+Static-Codes@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:57:14 -0500 Subject: [PATCH 2/2] Update README with .NET version changes and credits Updated the codebase from .NET 6 to .NET 10 and removed .NET Framework support. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b71a43a..fefc53f 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,7 @@ The library currently implements - Windows x86-64 - Linux x86-64 - macOS x86-64 + +All credits to [milleniumbug](https://github.com/milleniumbug/NativeFileDialogSharp) + +I simply updated the codebase from .NET 6 to .NET 10, and removed .NET Framework support due to it not fitting my project requirements.