diff --git a/Bwg.Hardware/Bwg.Hardware.csproj b/Bwg.Hardware/Bwg.Hardware.csproj index 433d3353d..af04ddaae 100644 --- a/Bwg.Hardware/Bwg.Hardware.csproj +++ b/Bwg.Hardware/Bwg.Hardware.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 0.0.7.1 Bwg.Hardware Bwg.Hardware @@ -16,6 +16,10 @@ https://svn.code.sf.net/p/bwgburn/code/ svn BwgSoftware - - - + + + + + + + diff --git a/Bwg.Logging/Bwg.Logging.csproj b/Bwg.Logging/Bwg.Logging.csproj index 0527ed5f1..197f336a9 100644 --- a/Bwg.Logging/Bwg.Logging.csproj +++ b/Bwg.Logging/Bwg.Logging.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 0.0.7.1 Bwg.Logging Bwg.Logging diff --git a/Bwg.Scsi/Bwg.Scsi.csproj b/Bwg.Scsi/Bwg.Scsi.csproj index 87a3b9b77..b58b90fe5 100644 --- a/Bwg.Scsi/Bwg.Scsi.csproj +++ b/Bwg.Scsi/Bwg.Scsi.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 0.0.7.1 Bwg.Scsi Bwg.Scsi diff --git a/CUEControls/CUEControls.csproj b/CUEControls/CUEControls.csproj index e5cfe4453..452c8316e 100644 --- a/CUEControls/CUEControls.csproj +++ b/CUEControls/CUEControls.csproj @@ -1,23 +1,22 @@  - net47;net20 + net10.0-windows 2.2.6.0 CUEControls - CUEControls - CUETools + CUEControls + 7.0 + CUETools Library containing windows GUI controls for CUETools. Copyright (c) 2008-2025 Grigory Chudov Grigory Chudov - true + true + true + $(NoWarn);WFO1000 ..\bin\$(Configuration)\ https://github.com/gchudov/cuetools.net git - - - - - + diff --git a/CUEPlayer/CUEPlayer.csproj b/CUEPlayer/CUEPlayer.csproj index 4a6283749..af48efe6b 100644 --- a/CUEPlayer/CUEPlayer.csproj +++ b/CUEPlayer/CUEPlayer.csproj @@ -1,296 +1,46 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {04E59836-0C5A-4B9B-8899-848D56911758} - WinExe - Properties - CUEPlayer - CUEPlayer - v4.7 - 512 - false - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - true - AllRules.ruleset - false - - - - - - - - - - - - - - Form - - - Browser.cs - - - DataSet1.xsd - - - Form - - - Deck.cs - - - Form - - - frmCUEPlayer.cs - - - Form - - - Icecast.cs - - - Form - - - IcecastSettings.cs - - - Form - - - Output.cs - - - Form - - - Playlist.cs - - - - - Browser.cs - - - Deck.cs - - - frmCUEPlayer.cs - - - Icecast.cs - - - IcecastSettings.cs - - - Output.cs - - - Playlist.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - {CA4D64E6-6544-4A29-8BA5-7DB08D50D072} - CUEControls - False - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - False - - - {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A} - CUETools.Codecs.CoreAudio - - - {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7} - CUETools.Codecs.Icecast - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2} - CUETools.DSP.Mixer - - - {A6303861-CA06-4C2C-A104-BA9291538F6F} - CUETools.DSP.Resampler - - - {4911BD82-49EF-4858-8B51-5394F86739A4} - CUETools.Processor - False - - - {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1} - ProgressODoom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DataSet1.xsd - - - Designer - MSDataSetGenerator - - - DataSet1.xsd - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - False - SQL Server Compact 3.5 SP2 - true - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + net10.0-windows + WinExe + CUEPlayer + CUEPlayer + 7.0 + true + false + true + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\ + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + PreserveNewest + + + + diff --git a/CUEPlayer/DataSet1.cs b/CUEPlayer/DataSet1.cs index cbf14c209..d10133fc8 100644 --- a/CUEPlayer/DataSet1.cs +++ b/CUEPlayer/DataSet1.cs @@ -1,9 +1,229 @@ -namespace CUEPlayer { - - - public partial class DataSet1 { - partial class PlaylistDataTable - { - } - } -} +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; + +namespace CUEPlayer { + + + public partial class DataSet1 : DataSet { + private readonly PlaylistDataTable tablePlaylist; + + public DataSet1() + { + DataSetName = "DataSet1"; + tablePlaylist = new PlaylistDataTable(); + Tables.Add(tablePlaylist); + } + + public PlaylistDataTable Playlist + { + get { return tablePlaylist; } + } + + public partial class PlaylistDataTable : DataTable + { + private readonly DataColumn columnId; + private readonly DataColumn columnPath; + private readonly DataColumn columnArtist; + private readonly DataColumn columnTitle; + private readonly DataColumn columnAlbum; + private readonly DataColumn columnLength; + private readonly DataColumn columnTrack; + + public PlaylistDataTable() + : base("Playlist") + { + columnId = Columns.Add("id", typeof(int)); + columnId.AutoIncrement = true; + columnId.AutoIncrementSeed = -1; + columnId.AutoIncrementStep = -1; + columnPath = Columns.Add("path", typeof(string)); + columnArtist = Columns.Add("artist", typeof(string)); + columnTitle = Columns.Add("title", typeof(string)); + columnAlbum = Columns.Add("album", typeof(string)); + columnLength = Columns.Add("length", typeof(int)); + columnTrack = Columns.Add("track", typeof(int)); + PrimaryKey = new[] { columnId }; + } + + public PlaylistRow this[int index] + { + get { return (PlaylistRow)Rows[index]; } + } + + public PlaylistRow AddPlaylistRow(string path, string artist, string title, string album, int length, int track) + { + PlaylistRow row = (PlaylistRow)NewRow(); + row.path = path; + row.artist = artist; + row.title = title; + row.album = album; + row.length = length; + row.track = track; + Rows.Add(row); + return row; + } + + public IEnumerator GetEnumerator() + { + foreach (DataRow row in Rows) + if (row.RowState != DataRowState.Deleted) + yield return (PlaylistRow)row; + } + + protected override Type GetRowType() + { + return typeof(PlaylistRow); + } + + protected override DataRow NewRowFromBuilder(DataRowBuilder builder) + { + return new PlaylistRow(builder); + } + } + + public partial class PlaylistRow : DataRow + { + internal PlaylistRow(DataRowBuilder builder) + : base(builder) + { + } + + public int id + { + get { return FieldValue("id"); } + set { this["id"] = value; } + } + + public string path + { + get { return FieldValue("path"); } + set { this["path"] = value ?? (object)DBNull.Value; } + } + + public string artist + { + get { return FieldValue("artist"); } + set { this["artist"] = value ?? (object)DBNull.Value; } + } + + public string title + { + get { return FieldValue("title"); } + set { this["title"] = value ?? (object)DBNull.Value; } + } + + public string album + { + get { return FieldValue("album"); } + set { this["album"] = value ?? (object)DBNull.Value; } + } + + public int length + { + get { return FieldValue("length"); } + set { this["length"] = value; } + } + + public int track + { + get { return FieldValue("track"); } + set { this["track"] = value; } + } + + private T FieldValue(string columnName) + { + object value = this[columnName]; + if (value == DBNull.Value) + return default(T); + return (T)value; + } + } + } + + namespace DataSet1TableAdapters + { + public class PlaylistTableAdapter + { + private static string PlaylistFile + { + get + { + return Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + "CUEPlayer", + "playlist.xml"); + } + } + + public int Fill(DataSet1.PlaylistDataTable table) + { + table.Clear(); + if (!File.Exists(PlaylistFile)) + return 0; + + DataSet dataSet = new DataSet(); + dataSet.ReadXml(PlaylistFile); + if (!dataSet.Tables.Contains("Playlist")) + return 0; + + int count = 0; + foreach (DataRow row in dataSet.Tables["Playlist"].Rows) + { + DataSet1.PlaylistRow playlistRow = table.AddPlaylistRow( + ReadString(row, "path"), + ReadString(row, "artist"), + ReadString(row, "title"), + ReadString(row, "album"), + ReadInt32(row, "length"), + ReadInt32(row, "track")); + if (dataSet.Tables["Playlist"].Columns.Contains("id")) + playlistRow.id = ReadInt32(row, "id"); + count++; + } + table.AcceptChanges(); + return count; + } + + public int Update(DataSet1.PlaylistDataTable table) + { + string directory = Path.GetDirectoryName(PlaylistFile); + if (!Directory.Exists(directory)) + Directory.CreateDirectory(directory); + + DataTable copy = table.Clone(); + foreach (DataRow row in table.Rows) + { + if (row.RowState == DataRowState.Deleted) + continue; + DataRow newRow = copy.NewRow(); + foreach (DataColumn column in table.Columns) + newRow[column.ColumnName] = row[column, DataRowVersion.Current]; + copy.Rows.Add(newRow); + } + + DataSet dataSet = new DataSet("DataSet1"); + dataSet.Tables.Add(copy); + dataSet.WriteXml(PlaylistFile, XmlWriteMode.WriteSchema); + int count = copy.Rows.Count; + table.AcceptChanges(); + return count; + } + + private static string ReadString(DataRow row, string columnName) + { + if (!row.Table.Columns.Contains(columnName) || row[columnName] == DBNull.Value) + return null; + return Convert.ToString(row[columnName]); + } + + private static int ReadInt32(DataRow row, string columnName) + { + if (!row.Table.Columns.Contains(columnName) || row[columnName] == DBNull.Value) + return 0; + return Convert.ToInt32(row[columnName]); + } + } + } +} diff --git a/CUEPlayer/Deck.cs b/CUEPlayer/Deck.cs index 1ec726218..d001a4392 100644 --- a/CUEPlayer/Deck.cs +++ b/CUEPlayer/Deck.cs @@ -1,11 +1,12 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Threading; -using System.Windows.Forms; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Text; +using System.Threading; +using System.Windows.Forms; using CUETools.Codecs; using CUETools.Processor; using CUETools.DSP.Mixer; @@ -73,7 +74,7 @@ internal void UpdateDeck() textBoxAlbum.Text = playingRow < 0 ? "" : dataSet.Playlist[playingRow].album; textBoxTitle.Text = playingRow < 0 ? "" : dataSet.Playlist[playingRow].title; textBoxDuration.Text = ""; - pictureBox.Image = playingCue != null && playingCue.Cover != null ? playingCue.Cover : pictureBox.InitialImage; + pictureBox.Image = GetCoverImage(playingCue) ?? pictureBox.InitialImage; if (nextDeck != null && nextDeck.playingSource == null && playingRow >= 0 && playingRow < dataSet.Playlist.Rows.Count - 1) { @@ -88,8 +89,8 @@ internal void UpdateDeck() mediaSlider.Value = (int)(playingSource.Position - playingStart); } - private void mediaSliderA_ValueChanged(object sender, EventArgs e) - { + private void mediaSliderA_ValueChanged(object sender, EventArgs e) + { if (mediaSlider.Maximum == 1) return; TimeSpan len1 = TimeSpan.FromSeconds(mediaSlider.Maximum / 44100.0); TimeSpan len2 = TimeSpan.FromSeconds(mediaSlider.Value / 44100.0); @@ -97,10 +98,24 @@ private void mediaSliderA_ValueChanged(object sender, EventArgs e) string lenStr2 = string.Format("{0:d}.{1:d2}:{2:d2}:{3:d2}", len2.Days, len2.Hours, len2.Minutes, len2.Seconds).TrimStart('0', ':', '.'); lenStr1 = "0:00".Substring(0, Math.Max(0, 4 - lenStr1.Length)) + lenStr1; lenStr2 = "0:00".Substring(0, Math.Max(0, 4 - lenStr2.Length)) + lenStr2; - textBoxDuration.Text = lenStr2 + " / " + lenStr1; - } - - private int seekTo = -1; + textBoxDuration.Text = lenStr2 + " / " + lenStr1; + } + + private static Image GetCoverImage(CUESheet cueSheet) + { + if (cueSheet == null || cueSheet.AlbumArt == null) + return null; + var picture = cueSheet.AlbumArt.Find(x => x.Type == TagLib.PictureType.FrontCover) ?? + cueSheet.AlbumArt.Find(x => x.Type != TagLib.PictureType.NotAPicture); + if (picture == null) + return null; + using (MemoryStream imageStream = new MemoryStream(picture.Data.Data, 0, picture.Data.Count)) + try { return Image.FromStream(imageStream); } + catch { } + return null; + } + + private int seekTo = -1; private bool stopNow = false; private void PlayThread() diff --git a/CUEPlayer/Properties/Resources.Designer.cs b/CUEPlayer/Properties/Resources.Designer.cs index 5d5c3efe9..c27069a65 100644 --- a/CUEPlayer/Properties/Resources.Designer.cs +++ b/CUEPlayer/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace CUEPlayer.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUEPlayer/Properties/Settings.Designer.cs b/CUEPlayer/Properties/Settings.Designer.cs index ab8462056..3500a56d0 100644 --- a/CUEPlayer/Properties/Settings.Designer.cs +++ b/CUEPlayer/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace CUEPlayer.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CUEPlayer/app.config b/CUEPlayer/app.config index 26cdf92ef..b22c675f1 100644 --- a/CUEPlayer/app.config +++ b/CUEPlayer/app.config @@ -11,6 +11,6 @@ - + diff --git a/CUERipper.WPF/CUERipper.WPF.csproj b/CUERipper.WPF/CUERipper.WPF.csproj index ffdd9999c..f51ac2d4d 100644 --- a/CUERipper.WPF/CUERipper.WPF.csproj +++ b/CUERipper.WPF/CUERipper.WPF.csproj @@ -1,159 +1,39 @@ - - + + - Debug - AnyCPU - 9.0.30729 - 2.0 - {2D8D7A03-DFFA-44EF-9299-8BB56D122245} + net10.0-windows WinExe - Properties - CUERipper.WPF CUERipper.WPF - v4.7 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - - - - - - - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - false + CUERipper.WPF + 7.0 + true + true + false + ..\bin\$(Configuration)\ + - - 3.0 - - - 3.0 - - - - 3.5 - - - - - 3.5 - - - 3.5 - - - - + + + + - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - Window1.xaml - Code - + + + + + - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - + ResXFileCodeGenerator Resources.Designer.cs - - + SettingsSingleFileGenerator Settings.Designer.cs - - - - - {CA4D64E6-6544-4A29-8BA5-7DB08D50D072} - CUEControls - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - - - {4911BD82-49EF-4858-8B51-5394F86739A4} - CUETools.Processor - - - - - - - - - - - False - .NET Framework 3.5 SP1 - true - - - - \ No newline at end of file + + diff --git a/CUERipper.WPF/Properties/Resources.Designer.cs b/CUERipper.WPF/Properties/Resources.Designer.cs index 4fd0e16b7..6f4dfdb91 100644 --- a/CUERipper.WPF/Properties/Resources.Designer.cs +++ b/CUERipper.WPF/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace CUERipper.WPF.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUERipper.WPF/Properties/Settings.Designer.cs b/CUERipper.WPF/Properties/Settings.Designer.cs index 6269b8287..008c3faaa 100644 --- a/CUERipper.WPF/Properties/Settings.Designer.cs +++ b/CUERipper.WPF/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace CUERipper.WPF.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CUERipper.WPF/app.config b/CUERipper.WPF/app.config index 545e8d3eb..220b02fab 100644 --- a/CUERipper.WPF/app.config +++ b/CUERipper.WPF/app.config @@ -1,6 +1,6 @@ - + diff --git a/CUERipper/CUERipper.csproj b/CUERipper/CUERipper.csproj index 0fe5a3cfe..d9e2c08b9 100644 --- a/CUERipper/CUERipper.csproj +++ b/CUERipper/CUERipper.csproj @@ -1,278 +1,44 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C} - WinExe - Properties - CUERipper - CUERipper - - - 3.5 - - - cue2.ico - F89503BB83CA42A647C506D67956D6F32C1C6E7E - CUERipper_TemporaryKey.pfx - false - false - true - false - - - LocalIntranet - Properties\app.manifest - v4.7 - publish\ - true - Web - true - Background - 7 - Days - false - false - true - http://www.cuetools.net/install/cueripper/ - http://www.cuetools.net/ - CUERipper - Gregory S. Chudov - true - index.html - 0 - 1.0.0.%2a - false - true - true - - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - true - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AllRules.ruleset - false - - - - - - - - - - - - - - Form - - - frmCUERipper.cs - - - Form - - - frmFreedbSubmit.cs - - - Form - - - Options.cs - - - - - frmCUERipper.cs - - - Designer - frmCUERipper.cs - - - frmCUERipper.cs - - - frmFreedbSubmit.cs - - - frmFreedbSubmit.cs - - - frmFreedbSubmit.cs - - - Options.cs - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - - True - Resources.resx - True - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - {CA4D64E6-6544-4A29-8BA5-7DB08D50D072} - CUEControls - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {AA2A9A7E-45FB-4632-AD85-85B0E556F818} - CUETools.CTDB - - - {4911BD82-49EF-4858-8B51-5394F86739A4} - CUETools.Processor - - - {D2700165-3E77-4B28-928D-551F5FC11954} - CUETools.Ripper - - - {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} - Freedb - - - {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1} - ProgressODoom - - - {1219a514-d3fa-40db-bbb2-92ce05e35839} - TaglibSharp - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Visual C++ Runtime Libraries %28x64%29 - true - - - False - Visual C++ Runtime Libraries %28x86%29 - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + net10.0-windows + 2.2.6.0 + WinExe + CUERipper + CUERipper + cue2.ico + Properties\app.manifest + 7.0 + true + false + true + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\ + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + diff --git a/CUERipper/Program.cs b/CUERipper/Program.cs index 0e56cf1e5..69efe3e50 100644 --- a/CUERipper/Program.cs +++ b/CUERipper/Program.cs @@ -1,9 +1,8 @@ -using System; -using System.Deployment.Application; -using System.Globalization; -using System.Runtime.InteropServices; -using System.Threading; -using System.Windows.Forms; +using System; +using System.Globalization; +using System.Runtime.InteropServices; +using System.Threading; +using System.Windows.Forms; using CUETools.Processor; using CUETools.Processor.Settings; @@ -31,26 +30,10 @@ static void Main() Application.Run(new frmCUERipper()); } - static void GetSatelliteAssemblies(string groupName) - { - if (ApplicationDeployment.IsNetworkDeployed) - { - ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; - - if (deploy.IsFirstRun) - { - try - { - deploy.DownloadFileGroup(groupName); - } - catch (DeploymentException) - { - // Log error. Do not report this error to the user, because a satellite - // assembly may not exist if the user's culture and the application's - // default culture match. - } - } - } - } - } -} \ No newline at end of file + static void GetSatelliteAssemblies(string groupName) + { + // System.Deployment.Application is not available on .NET 10. + // Optional plugin file groups must be included by the publish/package step. + } + } +} diff --git a/CUERipper/Properties/Resources.Designer.cs b/CUERipper/Properties/Resources.Designer.cs index 18cec7edc..8b296b685 100644 --- a/CUERipper/Properties/Resources.Designer.cs +++ b/CUERipper/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace CUERipper.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUERipper/Properties/Settings.Designer.cs b/CUERipper/Properties/Settings.Designer.cs index ec1ef4e54..696701e66 100644 --- a/CUERipper/Properties/Settings.Designer.cs +++ b/CUERipper/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace CUERipper.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CUERipper/app.config b/CUERipper/app.config index b979734e5..8f8552c04 100644 --- a/CUERipper/app.config +++ b/CUERipper/app.config @@ -8,6 +8,6 @@ - + diff --git a/CUETools.ALACEnc/CUETools.ALACEnc.csproj b/CUETools.ALACEnc/CUETools.ALACEnc.csproj index e6288638d..b5645b86a 100644 --- a/CUETools.ALACEnc/CUETools.ALACEnc.csproj +++ b/CUETools.ALACEnc/CUETools.ALACEnc.csproj @@ -1,9 +1,7 @@  - net47;net20;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.ALACEnc CUETools.ALACEnc diff --git a/CUETools.ARCUE/CUETools.ARCUE.csproj b/CUETools.ARCUE/CUETools.ARCUE.csproj index 1075c0667..e96771d2f 100644 --- a/CUETools.ARCUE/CUETools.ARCUE.csproj +++ b/CUETools.ARCUE/CUETools.ARCUE.csproj @@ -1,9 +1,7 @@  - net47;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.ARCUE CUETools.ARCUE diff --git a/CUETools.AccurateRip/CUETools.AccurateRip.csproj b/CUETools.AccurateRip/CUETools.AccurateRip.csproj index fc2763575..f68e72078 100644 --- a/CUETools.AccurateRip/CUETools.AccurateRip.csproj +++ b/CUETools.AccurateRip/CUETools.AccurateRip.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.AccurateRip CUETools.AccurateRip diff --git a/CUETools.CDImage/CUETools.CDImage.csproj b/CUETools.CDImage/CUETools.CDImage.csproj index c103a5dca..1e49300c7 100644 --- a/CUETools.CDImage/CUETools.CDImage.csproj +++ b/CUETools.CDImage/CUETools.CDImage.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.CDImage CUETools.CDImage diff --git a/CUETools.CLParity/CLParity.cs b/CUETools.CLParity/CLParity.cs index 6a56349f9..218708cf4 100644 --- a/CUETools.CLParity/CLParity.cs +++ b/CUETools.CLParity/CLParity.cs @@ -111,7 +111,7 @@ public class CLParityWriter : IAudioDest bool inited = false; OpenCLManager OCLMan; - Program openCLProgram; + CLProgram openCLProgram; CLParityTask task1; CLParityTask task2; @@ -123,6 +123,7 @@ public class CLParityWriter : IAudioDest public CLParityWriter(string path, Stream IO, AudioPCMConfig pcm) { _pcm = pcm; + _encoderSettings = new CUETools.Codecs.WAV.EncoderSettings(pcm); if (pcm.BitsPerSample != 16) throw new Exception("Bits per sample must be 16."); if (pcm.ChannelCount != 2) @@ -137,6 +138,7 @@ public CLParityWriter(string path, AudioPCMConfig pcm) } internal CLParitySettings _settings = new CLParitySettings(); + private readonly IAudioEncoderSettings _encoderSettings; public object Settings { @@ -152,6 +154,8 @@ public object Settings } } + IAudioEncoderSettings IAudioDest.Settings => _encoderSettings; + //[DllImport("kernel32.dll")] //static extern bool GetThreadTimes(IntPtr hThread, out long lpCreationTime, out long lpExitTime, out long lpKernelTime, out long lpUserTime); //[DllImport("kernel32.dll")] @@ -388,7 +392,7 @@ public unsafe void do_output_frames(int strideCount) internal class CLParityTask { - Program openCLProgram; + CLProgram openCLProgram; public CommandQueue openCLCQ; public Kernel reedSolomonInit; public Kernel reedSolomonInitGx; @@ -432,7 +436,7 @@ internal class CLParityTask public CLParityWriter writer; public bool UseMappedMemory = false; - unsafe public CLParityTask(Program _openCLProgram, CLParityWriter writer, int groupSize, int npar, int stride, int maxStridesCount) + unsafe public CLParityTask(CLProgram _openCLProgram, CLParityWriter writer, int groupSize, int npar, int stride, int maxStridesCount) { this.UseMappedMemory = writer._settings.MappedMemory || writer._settings.DeviceType == OpenCLDeviceType.CPU; this.groupSize = groupSize; @@ -629,7 +633,6 @@ internal unsafe void EnqueueKernels() } } -#if LKJLKJLJK public static class OpenCLExtensions { public static void SetArgs(this Kernel kernel, params object[] args) @@ -660,5 +663,4 @@ public static void EnqueueNDRangeKernel(this CommandQueue queue, Kernel kernel, queue.EnqueueNDRangeKernel(kernel, 2, null, new long[] { localSizeX * globalSizeX, localSizeY * globalSizeY }, new long[] { localSizeX, localSizeY }); } } -#endif } diff --git a/CUETools.CLParity/CUETools.CLParity.csproj b/CUETools.CLParity/CUETools.CLParity.csproj index 7c131fcc9..363bc7022 100644 --- a/CUETools.CLParity/CUETools.CLParity.csproj +++ b/CUETools.CLParity/CUETools.CLParity.csproj @@ -1,128 +1,37 @@ - - + + - Debug - AnyCPU - 9.0.30729 - 2.0 - {D41FEFF9-9D43-4049-BF9B-B13D9AC7E192} + net10.0-windows + 2.2.6.0 Library - Properties - CUETools.CLParity CUETools.CLParity - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\plugins\net47\ - DEBUG;TRACE - prompt - 4 - true - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\plugins\net47\ - TRACE - prompt - 4 + CUETools.CLParity + 7.0 + true true - AllRules.ruleset + false + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\$(TargetFramework)\plugins\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ - - - False - ..\ThirdParty\OpenCLNet.dll - - - - - - - - - - True - True - Resources.resx - - - - - {082D6B9E-326E-4D15-9798-EDAE9EDE70A6} - CUETools.Codecs.Flake - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs + + + False - + + - - PreserveNewest - - - - ResXFileCodeGenerator - Resources.Designer.cs - - + + + + - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - + + PreserveNewest + - - - - - - - - - \ No newline at end of file + + diff --git a/CUETools.CLParity/Properties/Resources.Designer.cs b/CUETools.CLParity/Properties/Resources.Designer.cs index 39b66af0a..baf61d06c 100644 --- a/CUETools.CLParity/Properties/Resources.Designer.cs +++ b/CUETools.CLParity/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18033 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace CUETools.CLParity.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUETools.CTDB.Converter/CUETools.CTDB.Converter.csproj b/CUETools.CTDB.Converter/CUETools.CTDB.Converter.csproj index cc91ce79d..b1f7938d5 100644 --- a/CUETools.CTDB.Converter/CUETools.CTDB.Converter.csproj +++ b/CUETools.CTDB.Converter/CUETools.CTDB.Converter.csproj @@ -1,9 +1,7 @@  - net47;net20;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.CTDB.Converter CUETools.CTDB.Converter diff --git a/CUETools.CTDB.EACPlugin/CUETools.CTDB.EACPlugin.csproj b/CUETools.CTDB.EACPlugin/CUETools.CTDB.EACPlugin.csproj index 46037b6dd..91a6644a6 100644 --- a/CUETools.CTDB.EACPlugin/CUETools.CTDB.EACPlugin.csproj +++ b/CUETools.CTDB.EACPlugin/CUETools.CTDB.EACPlugin.csproj @@ -1,180 +1,32 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {816D964C-9772-46C5-AF1D-49E8C78A1E7C} - Library - Properties - CUETools.CTDB.EACPlugin - CUETools.CTDB.EACPlugin - v2.0 - 512 - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\interop\EAC\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\interop\EAC\ - TRACE - prompt - 4 - AllRules.ruleset - - - - Form - - - FormSubmitParity.cs - - - Form - - - FormMetadata.cs - - - Component - - - ImagePreview.cs - - - - - - Form - - - Options.cs - - - - True - True - Resources.resx - - - - - FormSubmitParity.cs - - - FormMetadata.cs - - - ImagePreview.cs - - - Options.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - - - - .\Interop.HelperFunctionsLib.dll - True - - - - - - - - - {5802c7e9-157e-4124-946d-70b5ae48a5a1} - CUETools.AccurateRip - - - {1dd41038-d885-46c5-8dde-e0b82f066584} - CUETools.CDImage - - - {6458a13a-30ef-45a9-9d58-e5031b17bee2} - CUETools.Codecs - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {aa2a9a7e-45fb-4632-ad85-85b0e556f818} - CUETools.CTDB - - - {eceb839c-171b-4535-958f-9899310a0342} - CUETools.Parity - - - - - + + + + net10.0-windows + Library + CUETools.CTDB.EACPlugin + CUETools.CTDB.EACPlugin + true + false + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\$(TargetFramework)\interop\EAC\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + .\Interop.HelperFunctionsLib.dll + True + + + + + + + + + + + + + diff --git a/CUETools.CTDB.Types/CUETools.CTDB.Types.csproj b/CUETools.CTDB.Types/CUETools.CTDB.Types.csproj index 409d6327c..e7c1ed0ce 100644 --- a/CUETools.CTDB.Types/CUETools.CTDB.Types.csproj +++ b/CUETools.CTDB.Types/CUETools.CTDB.Types.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.CTDB.Types CUETools.CTDB diff --git a/CUETools.CTDB/CUETools.CTDB.csproj b/CUETools.CTDB/CUETools.CTDB.csproj index 59df590f6..62d6975bb 100644 --- a/CUETools.CTDB/CUETools.CTDB.csproj +++ b/CUETools.CTDB/CUETools.CTDB.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.CTDB CUETools.CTDB @@ -22,15 +22,9 @@ - - - - - - - - - + + + diff --git a/CUETools.CTDB/CUEToolsDB.cs b/CUETools.CTDB/CUEToolsDB.cs index c8b0dc3e1..06a13c18d 100644 --- a/CUETools.CTDB/CUEToolsDB.cs +++ b/CUETools.CTDB/CUEToolsDB.cs @@ -296,7 +296,7 @@ public static string GetUUID() #else uuidInfo = new DeviceIdBuilder() .AddMachineName() -#if NET47 +#if NET48 .AddProcessorId() .AddMotherboardSerialNumber() #endif diff --git a/CUETools.ChaptersToCue/CUETools.ChaptersToCue.csproj b/CUETools.ChaptersToCue/CUETools.ChaptersToCue.csproj index 141d158f8..5c1f6f848 100644 --- a/CUETools.ChaptersToCue/CUETools.ChaptersToCue.csproj +++ b/CUETools.ChaptersToCue/CUETools.ChaptersToCue.csproj @@ -1,110 +1,20 @@ - - + + - Debug - AnyCPU - 9.0.30729 - 2.0 - {6ADBBF4B-AD3A-4782-A694-18662196780B} + net10.0 Exe - Properties - CUETools.ChaptersToCue CUETools.ChaptersToCue - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AllRules.ruleset + CUETools.ChaptersToCue + false + ..\bin\$(Configuration)\ + - - - - - - - - - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {AA2A9A7E-45FB-4632-AD85-85B0E556F818} - CUETools.CTDB - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - - - {1219a514-d3fa-40db-bbb2-92ce05e35839} - TaglibSharp - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - + + + + + - - - \ No newline at end of file + + diff --git a/CUETools.Codecs.ALAC/CUETools.Codecs.ALAC.csproj b/CUETools.Codecs.ALAC/CUETools.Codecs.ALAC.csproj index effe2f82e..18600e1e6 100644 --- a/CUETools.Codecs.ALAC/CUETools.Codecs.ALAC.csproj +++ b/CUETools.Codecs.ALAC/CUETools.Codecs.ALAC.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.ALAC CUETools.Codecs diff --git a/CUETools.Codecs.CoreAudio/CUETools.Codecs.CoreAudio.csproj b/CUETools.Codecs.CoreAudio/CUETools.Codecs.CoreAudio.csproj index 94861db06..53edbdf33 100644 --- a/CUETools.Codecs.CoreAudio/CUETools.Codecs.CoreAudio.csproj +++ b/CUETools.Codecs.CoreAudio/CUETools.Codecs.CoreAudio.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 2.2.6.0 CUETools.Codecs.CoreAudio CUETools.Codecs.CoreAudio diff --git a/CUETools.Codecs.DirectSound/CUETools.Codecs.DirectSound.csproj b/CUETools.Codecs.DirectSound/CUETools.Codecs.DirectSound.csproj index 84fd72b2d..d63d3447e 100644 --- a/CUETools.Codecs.DirectSound/CUETools.Codecs.DirectSound.csproj +++ b/CUETools.Codecs.DirectSound/CUETools.Codecs.DirectSound.csproj @@ -1,99 +1,29 @@ - - + + - Debug - AnyCPU - 9.0.30729 - 2.0 - {5A9FB016-6388-475D-AB33-6F86AD49FDAD} + net10.0-windows + 1.0.0.0 Library - Properties - CUETools.Codecs.DirectSound CUETools.Codecs.DirectSound - v4.7 - 512 - - - - - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AllRules.ruleset + CUETools.Codecs.DirectSound + 7.0 + true + false + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\$(TargetFramework)\plugins\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ - - - False - - - - - - - - - - - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs + + + + False - + + - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - + + - - - \ No newline at end of file + + diff --git a/CUETools.Codecs.DirectSound/DirectSoundOut.cs b/CUETools.Codecs.DirectSound/DirectSoundOut.cs index 2ed8e3ca7..2ad9e50c2 100644 --- a/CUETools.Codecs.DirectSound/DirectSoundOut.cs +++ b/CUETools.Codecs.DirectSound/DirectSoundOut.cs @@ -1,297 +1,77 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Threading; +using System; using System.Windows.Forms; -using Microsoft.DirectX; -using Microsoft.DirectX.DirectSound; +using CUETools.Codecs.CoreAudio; +using NAudio.CoreAudioApi; namespace CUETools.Codecs.DirectSound { - public class DirectSoundOut : IWavePlayer - { - private Device dSound; - private WaveFormat format;// = new WaveFormat(); - private BufferDescription description = new BufferDescription(); - private SecondaryBuffer secondaryBuffer; - private Notify notify; - private MemoryStream pcmStream; - private int SecBufByteSize; - private AudioEncoderSettings m_settings; - PlaybackState playbackState = PlaybackState.Stopped; - - /// - /// Playback Stopped - /// - public event EventHandler PlaybackStopped; - - AutoResetEvent - SecBufNotifyAtBegin = new AutoResetEvent(false), - SecBufNotifyAtOneThird = new AutoResetEvent(false), - SecBufNotifyAtTwoThirds = new AutoResetEvent(false); - WaitHandle[] SecBufWaitHandles; - - public DirectSoundOut(Control owner, AudioPCMConfig pcm, int delay) - { - this.m_settings = new AudioEncoderSettings(pcm); - - //buffer = new CyclicBuffer(44100*4/10); - //output = new CycilcBufferOutputStream(buffer); - //input = new CycilcBufferInputStream(buffer); - - dSound = new Device(); - dSound.SetCooperativeLevel(owner, CooperativeLevel.Priority); - format.AverageBytesPerSecond = pcm.SampleRate * pcm.BlockAlign; - format.BitsPerSample = (short)pcm.BitsPerSample; - format.BlockAlign = (short)pcm.BlockAlign; - format.Channels = (short)pcm.ChannelCount; - format.SamplesPerSecond = pcm.SampleRate; - format.FormatTag = WaveFormatTag.Pcm; - SecBufByteSize = delay * pcm.SampleRate * pcm.BlockAlign / 1000; - description.Format = format; - description.BufferBytes = SecBufByteSize; - description.CanGetCurrentPosition = true; - description.ControlPositionNotify = true; - //description.ControlVolume = true; - description.GlobalFocus = true; - secondaryBuffer = new SecondaryBuffer(description, dSound); - //secondaryBuffer.Volume = 100; - - notify = new Notify(secondaryBuffer); - BufferPositionNotify[] bufferPositions = new BufferPositionNotify[3]; - bufferPositions[0].Offset = 0; - bufferPositions[0].EventNotifyHandle = SecBufNotifyAtBegin.Handle; - bufferPositions[1].Offset = SecBufByteSize / 3; - bufferPositions[1].EventNotifyHandle = SecBufNotifyAtOneThird.Handle; - bufferPositions[2].Offset = 2 * SecBufByteSize / 3; - bufferPositions[2].EventNotifyHandle = SecBufNotifyAtTwoThirds.Handle; - notify.SetNotificationPositions(bufferPositions); - pcmStream = new MemoryStream(SecBufByteSize); - - SecBufWaitHandles = new WaitHandle[] { SecBufNotifyAtBegin, SecBufNotifyAtOneThird, SecBufNotifyAtTwoThirds }; - - //wavoutput = new WAVWriter("", output, pcm); - } - - /// - /// Volume - /// - public float Volume - { - get - { - return 1.0f; - } - set - { - if (value != 1.0f) - { - throw new NotImplementedException(); - } - } - } - - //int SecBufNextWritePosition = 0; - //bool SecBufInitialLoad = false; - - bool playing = false; - public void Write(AudioBuffer src) - { - //wavoutput.Write(src); - - pcmStream.SetLength(0); - pcmStream.Write(src.Bytes, 0, src.ByteLength); - pcmStream.Position = 0; - //pcmStream.Position = 0; - - //while (true) - //{ - // if (SecBufInitialLoad) - // { - // int count = Math.Min(src.ByteLength, SecBufByteSize - SecBufNextWritePosition); - // if (count > 0) - // { - // secondaryBuffer.Write(SecBufNextWritePosition, pcmStream, count, LockFlag.None); - // SecBufNextWritePosition += count; - // pcmStream.Position += count; - // } - - // if (SecBufByteSize == SecBufNextWritePosition) - // { - // // Finished filling the buffer - // SecBufInitialLoad = false; - // SecBufNextWritePosition = 0; - - // // So start the playback in its own thread - // secondaryBuffer.Play(0, BufferPlayFlags.Looping); - - // // Yield rest of timeslice so playback can - // // start right away. - // Thread.Sleep(0); - // } - // else - // { - // continue; // Get more PCM data - // } - // } - - // Exhaust the current PCM data by writing the data into secondaryBuffer - while (pcmStream.Position < pcmStream.Length) - { - int PlayPosition, WritePosition; - - secondaryBuffer.GetCurrentPosition(out PlayPosition, out WritePosition); - - int WriteCount = (int)Math.Min( - (SecBufByteSize + PlayPosition - WritePosition) % SecBufByteSize, - pcmStream.Length - pcmStream.Position); - - if (WriteCount > 0) - { - secondaryBuffer.Write( - WritePosition, - pcmStream, - WriteCount, - LockFlag.None); - pcmStream.Position += WriteCount; - if (!playing) - { - secondaryBuffer.Play(0, 0); - playing = true; - } - } - else - { - WaitHandle.WaitAny(SecBufWaitHandles, new TimeSpan(0, 0, 5), true); - } - } - } - - /// - /// Begin Playback - /// - public void Play() - { - switch (playbackState) - { - case PlaybackState.Playing: - return; - case PlaybackState.Paused: - playbackState = PlaybackState.Playing; - return; - case PlaybackState.Stopped: - playbackState = PlaybackState.Playing; - //playThread = new Thread(new ThreadStart(PlayThread)); - //playThread.Priority = ThreadPriority.Highest; - //playThread.IsBackground = true; - //playThread.Name = "Pro Audio"; - //playThread.Start(); - return; - } - } - - /// - /// Stop playback and flush buffers - /// - public void Stop() - { - if (playbackState != PlaybackState.Stopped) - { - playbackState = PlaybackState.Stopped; - //if (frameEventWaitHandle != null) - // frameEventWaitHandle.Set(); - //playThread.Join(); - //playThread = null; - //ReleaseBuffer(readBuffers[0], false, 0); - //ReleaseBuffer(readBuffers[1], false, 0); - //active = null; - //active_offset = 0; - } - } - - /// - /// Stop playback without flushing buffers - /// - public void Pause() - { - if (playbackState == PlaybackState.Playing) - { - playbackState = PlaybackState.Paused; - } - //if (frameEventWaitHandle != null) - // frameEventWaitHandle.Set(); - } - - /// - /// Playback State - /// - public PlaybackState PlaybackState - { - get { return playbackState; } - } - - public void Close() - { - if (secondaryBuffer != null) - { - secondaryBuffer.Dispose(); - secondaryBuffer = null; - } - if (dSound != null) - { - dSound.Dispose(); - dSound = null; - } - //wavoutput.Close(); - } - - public void Delete() - { - Close(); - } - - #region IAudioDest Members - - public long Position - { - get - { - return 0; - } - } - - public long FinalSampleCount - { - set { ; } - } - - public object Settings - { - get - { - return m_settings; - } - } - - public string Path { get { return null; } } - - #endregion - - #region IDisposable Members - - /// - /// Dispose - /// - public void Dispose() - { - //if (audioClient != null) - { - Stop(); - } - - } - - #endregion - } + public class DirectSoundOut : CUETools.Codecs.IWavePlayer + { + private readonly WasapiOut player; + + public DirectSoundOut(Control owner, AudioPCMConfig pcm, int delay) + { + player = new WasapiOut(WasapiOut.GetDefaultAudioEndpoint(), AudioClientShareMode.Shared, true, delay, pcm); + } + + public event EventHandler PlaybackStopped + { + add { player.PlaybackStopped += value; } + remove { player.PlaybackStopped -= value; } + } + + public float Volume + { + get { return player.Volume; } + set { player.Volume = value; } + } + + public CUETools.Codecs.PlaybackState PlaybackState => (CUETools.Codecs.PlaybackState)player.PlaybackState; + + public long Position => player.Position; + + public long FinalSampleCount + { + set { player.FinalSampleCount = value; } + } + + public IAudioEncoderSettings Settings => player.Settings; + + public string Path => player.Path; + + public void Write(AudioBuffer src) + { + player.Write(src); + } + + public void Play() + { + player.Play(); + } + + public void Stop() + { + player.Stop(); + } + + public void Pause() + { + player.Pause(); + } + + public void Close() + { + player.Close(); + } + + public void Delete() + { + player.Delete(); + } + + public void Dispose() + { + player.Dispose(); + } + } } diff --git a/CUETools.Codecs.FLACCL/CUETools.Codecs.FLACCL.csproj b/CUETools.Codecs.FLACCL/CUETools.Codecs.FLACCL.csproj index eef5c9144..fb605770a 100644 --- a/CUETools.Codecs.FLACCL/CUETools.Codecs.FLACCL.csproj +++ b/CUETools.Codecs.FLACCL/CUETools.Codecs.FLACCL.csproj @@ -1,131 +1,41 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {DFE55765-564C-4B8F-993B-A94C4D1C212E} - Library - Properties - CUETools.Codecs.FLACCL - CUETools.Codecs.FLACCL - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\net47\plugins\ - DEBUG;TRACE - prompt - 4 - true - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\plugins\ - TRACE - prompt - 4 - true - AllRules.ruleset - - - - - - - - - - - True - True - Resources.resx - - - - - {082D6B9E-326E-4D15-9798-EDAE9EDE70A6} - CUETools.Codecs.Flake - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - {8373e3b2-16f0-4fd3-a13b-0b0248ffc228} - OpenCLNet - - - - - PreserveNewest - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - - - - - - - - - - \ No newline at end of file + + + + net10.0-windows + 2.2.6.0 + Library + CUETools.Codecs.FLACCL + CUETools.Codecs.FLACCL + 7.0 + true + true + false + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\$(TargetFramework)\plugins\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + False + + + + + + + + + + + + + + + + PreserveNewest + + + + diff --git a/CUETools.Codecs.FLACCL/Properties/Resources.Designer.cs b/CUETools.Codecs.FLACCL/Properties/Resources.Designer.cs index b43ad8e85..6f341093c 100644 --- a/CUETools.Codecs.FLACCL/Properties/Resources.Designer.cs +++ b/CUETools.Codecs.FLACCL/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18033 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace CUETools.Codecs.FLACCL.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUETools.Codecs.Flake/CUETools.Codecs.Flake.csproj b/CUETools.Codecs.Flake/CUETools.Codecs.Flake.csproj index 3f1b647db..dc45658ec 100644 --- a/CUETools.Codecs.Flake/CUETools.Codecs.Flake.csproj +++ b/CUETools.Codecs.Flake/CUETools.Codecs.Flake.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.Flake CUETools.Codecs.Flake diff --git a/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj b/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj index 998621d09..d7acaccba 100644 --- a/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj +++ b/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.HDCD CUETools.Codecs.HDCD diff --git a/CUETools.Codecs.HDCD/HDCDDLL.cs b/CUETools.Codecs.HDCD/HDCDDLL.cs index c0750fb8c..cac612ae4 100644 --- a/CUETools.Codecs.HDCD/HDCDDLL.cs +++ b/CUETools.Codecs.HDCD/HDCDDLL.cs @@ -53,7 +53,7 @@ static HDCDDLL() var myFolder = System.IO.Path.GetDirectoryName(myPath); var is64 = IntPtr.Size == 8; var subfolder = is64 ? "x64" : "win32"; -#if NET47 +#if NET48 IntPtr Dll = LoadLibrary(System.IO.Path.Combine(myFolder, subfolder, DllName + ".dll")); #else IntPtr Dll = LoadLibrary(System.IO.Path.Combine(System.IO.Path.Combine(myFolder, subfolder), DllName + ".dll")); diff --git a/CUETools.Codecs.Icecast/CUETools.Codecs.Icecast.csproj b/CUETools.Codecs.Icecast/CUETools.Codecs.Icecast.csproj index 00c6d013a..219bf91f6 100644 --- a/CUETools.Codecs.Icecast/CUETools.Codecs.Icecast.csproj +++ b/CUETools.Codecs.Icecast/CUETools.Codecs.Icecast.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.Icecast CUETools.Codecs.Icecast diff --git a/CUETools.Codecs.LossyWAV/CUETools.Codecs.LossyWAV.csproj b/CUETools.Codecs.LossyWAV/CUETools.Codecs.LossyWAV.csproj index 43bcfaf0f..26b589703 100644 --- a/CUETools.Codecs.LossyWAV/CUETools.Codecs.LossyWAV.csproj +++ b/CUETools.Codecs.LossyWAV/CUETools.Codecs.LossyWAV.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.LossyWAV CUETools.Codecs.LossyWAV diff --git a/CUETools.Codecs.MACLib/CUETools.Codecs.MACLib.csproj b/CUETools.Codecs.MACLib/CUETools.Codecs.MACLib.csproj index ae90a69a0..936f0d38f 100644 --- a/CUETools.Codecs.MACLib/CUETools.Codecs.MACLib.csproj +++ b/CUETools.Codecs.MACLib/CUETools.Codecs.MACLib.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.MACLib CUETools.Codecs.MACLib diff --git a/CUETools.Codecs.MACLib/MACLibDll.cs b/CUETools.Codecs.MACLib/MACLibDll.cs index 30efa25e4..d5289c99c 100644 --- a/CUETools.Codecs.MACLib/MACLibDll.cs +++ b/CUETools.Codecs.MACLib/MACLibDll.cs @@ -72,7 +72,7 @@ static MACLibDll() var myFolder = System.IO.Path.GetDirectoryName(myPath); var is64 = IntPtr.Size == 8; var subfolder = is64 ? "x64" : "win32"; -#if NET47 +#if NET48 IntPtr Dll = LoadLibrary(System.IO.Path.Combine(myFolder, subfolder, DllName + ".dll")); #else IntPtr Dll = LoadLibrary(System.IO.Path.Combine(System.IO.Path.Combine(myFolder, subfolder), DllName + ".dll")); diff --git a/CUETools.Codecs.MPEG/CUETools.Codecs.MPEG.csproj b/CUETools.Codecs.MPEG/CUETools.Codecs.MPEG.csproj index 473bb4f92..7d043cbdf 100644 --- a/CUETools.Codecs.MPEG/CUETools.Codecs.MPEG.csproj +++ b/CUETools.Codecs.MPEG/CUETools.Codecs.MPEG.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.MPEG CUETools.Codecs.MPEG diff --git a/CUETools.Codecs.WMA/CUETools.Codecs.WMA.csproj b/CUETools.Codecs.WMA/CUETools.Codecs.WMA.csproj index 11e5be0a8..2f0e88be5 100644 --- a/CUETools.Codecs.WMA/CUETools.Codecs.WMA.csproj +++ b/CUETools.Codecs.WMA/CUETools.Codecs.WMA.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 2.2.6.0 CUETools.Codecs.WMA CUETools.Codecs.WMA diff --git a/CUETools.Codecs.ffmpeg/CUETools.Codecs.ffmpeg.csproj b/CUETools.Codecs.ffmpeg/CUETools.Codecs.ffmpeg.csproj index b8bad433f..b386b79f2 100644 --- a/CUETools.Codecs.ffmpeg/CUETools.Codecs.ffmpeg.csproj +++ b/CUETools.Codecs.ffmpeg/CUETools.Codecs.ffmpeg.csproj @@ -1,7 +1,7 @@  - net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.ffmpegdll CUETools.Codecs.ffmpegdll @@ -25,7 +25,7 @@ - + diff --git a/CUETools.Codecs.lame_enc/CUETools.Codecs.LAME.csproj b/CUETools.Codecs.lame_enc/CUETools.Codecs.LAME.csproj index d95f4f801..ae7e56b63 100644 --- a/CUETools.Codecs.lame_enc/CUETools.Codecs.LAME.csproj +++ b/CUETools.Codecs.lame_enc/CUETools.Codecs.LAME.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.lame_enc CUETools.Codecs.lame_enc diff --git a/CUETools.Codecs.libFLAC/CUETools.Codecs.libFLAC.csproj b/CUETools.Codecs.libFLAC/CUETools.Codecs.libFLAC.csproj index f2bef093a..368e65b79 100644 --- a/CUETools.Codecs.libFLAC/CUETools.Codecs.libFLAC.csproj +++ b/CUETools.Codecs.libFLAC/CUETools.Codecs.libFLAC.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.libFLAC CUETools.Codecs.libFLAC diff --git a/CUETools.Codecs.libFLAC/FLACDLL.cs b/CUETools.Codecs.libFLAC/FLACDLL.cs index 8555e7b3b..37f123e44 100644 --- a/CUETools.Codecs.libFLAC/FLACDLL.cs +++ b/CUETools.Codecs.libFLAC/FLACDLL.cs @@ -163,7 +163,7 @@ static FLACDLL() var myFolder = System.IO.Path.GetDirectoryName(myPath); var is64 = IntPtr.Size == 8; var subfolder = is64 ? "x64" : "win32"; -#if NET47 +#if NET48 IntPtr Dll = LoadLibrary(System.IO.Path.Combine(myFolder, subfolder, DllName + ".dll")); #else IntPtr Dll = LoadLibrary(System.IO.Path.Combine(System.IO.Path.Combine(myFolder, subfolder), DllName + ".dll")); diff --git a/CUETools.Codecs.libmp3lame/CUETools.Codecs.libmp3lame.csproj b/CUETools.Codecs.libmp3lame/CUETools.Codecs.libmp3lame.csproj index 2e874255b..01205e4ef 100644 --- a/CUETools.Codecs.libmp3lame/CUETools.Codecs.libmp3lame.csproj +++ b/CUETools.Codecs.libmp3lame/CUETools.Codecs.libmp3lame.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.libmp3lame CUETools.Codecs.libmp3lame diff --git a/CUETools.Codecs.libmp3lame/libmp3lamedll.cs b/CUETools.Codecs.libmp3lame/libmp3lamedll.cs index 12a086658..42eae49f2 100644 --- a/CUETools.Codecs.libmp3lame/libmp3lamedll.cs +++ b/CUETools.Codecs.libmp3lame/libmp3lamedll.cs @@ -52,7 +52,7 @@ static libmp3lamedll() var myFolder = System.IO.Path.GetDirectoryName(myPath); var is64 = IntPtr.Size == 8; var subfolder = is64 ? "x64" : "win32"; -#if NET47 +#if NET48 IntPtr Dll = LoadLibrary(System.IO.Path.Combine(myFolder, subfolder, DllName + ".dll")); #else IntPtr Dll = LoadLibrary(System.IO.Path.Combine(System.IO.Path.Combine(myFolder, subfolder), DllName + ".dll")); diff --git a/CUETools.Codecs.libwavpack/CUETools.Codecs.libwavpack.csproj b/CUETools.Codecs.libwavpack/CUETools.Codecs.libwavpack.csproj index 364267a04..f20505199 100644 --- a/CUETools.Codecs.libwavpack/CUETools.Codecs.libwavpack.csproj +++ b/CUETools.Codecs.libwavpack/CUETools.Codecs.libwavpack.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs.libwavpack CUETools.Codecs.libwavpack diff --git a/CUETools.Codecs.libwavpack/wavpackdll.cs b/CUETools.Codecs.libwavpack/wavpackdll.cs index a320d9dba..dc04b2531 100644 --- a/CUETools.Codecs.libwavpack/wavpackdll.cs +++ b/CUETools.Codecs.libwavpack/wavpackdll.cs @@ -71,7 +71,7 @@ static wavpackdll() var myFolder = System.IO.Path.GetDirectoryName(myPath); var is64 = IntPtr.Size == 8; var subfolder = is64 ? "x64" : "win32"; -#if NET47 +#if NET48 IntPtr Dll = LoadLibrary(System.IO.Path.Combine(myFolder, subfolder, DllName + ".dll")); #else IntPtr Dll = LoadLibrary(System.IO.Path.Combine(System.IO.Path.Combine(myFolder, subfolder), DllName + ".dll")); diff --git a/CUETools.Codecs/CUETools.Codecs.csproj b/CUETools.Codecs/CUETools.Codecs.csproj index baf595324..fb673685c 100644 --- a/CUETools.Codecs/CUETools.Codecs.csproj +++ b/CUETools.Codecs/CUETools.Codecs.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Codecs CUETools.Codecs @@ -17,7 +17,7 @@ - + diff --git a/CUETools.Compression.Rar/CUETools.Compression.Rar.csproj b/CUETools.Compression.Rar/CUETools.Compression.Rar.csproj index 86ec0cc82..b34838b62 100644 --- a/CUETools.Compression.Rar/CUETools.Compression.Rar.csproj +++ b/CUETools.Compression.Rar/CUETools.Compression.Rar.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Compression.Rar CUETools.Compression.Rar diff --git a/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj b/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj index ec4870c33..f00e9c809 100644 --- a/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj +++ b/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Compression.Zip CUETools.Compression.Zip diff --git a/CUETools.Compression/CUETools.Compression.csproj b/CUETools.Compression/CUETools.Compression.csproj index 2b94c2cec..ae76599a1 100644 --- a/CUETools.Compression/CUETools.Compression.csproj +++ b/CUETools.Compression/CUETools.Compression.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Compression CUETools.Compression diff --git a/CUETools.Converter/CUETools.Converter.csproj b/CUETools.Converter/CUETools.Converter.csproj index 3f8e3c0ef..f0089738c 100644 --- a/CUETools.Converter/CUETools.Converter.csproj +++ b/CUETools.Converter/CUETools.Converter.csproj @@ -1,9 +1,7 @@  - net47;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.Converter CUETools.Converter diff --git a/CUETools.DSP.Mixer/CUETools.DSP.Mixer.csproj b/CUETools.DSP.Mixer/CUETools.DSP.Mixer.csproj index 286423439..ce87b37c2 100644 --- a/CUETools.DSP.Mixer/CUETools.DSP.Mixer.csproj +++ b/CUETools.DSP.Mixer/CUETools.DSP.Mixer.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.DSP.Mixer CUETools.DSP.Mixer diff --git a/CUETools.DSP.Resampler/CUETools.DSP.Resampler.csproj b/CUETools.DSP.Resampler/CUETools.DSP.Resampler.csproj index 0b3fd772f..99961d8d1 100644 --- a/CUETools.DSP.Resampler/CUETools.DSP.Resampler.csproj +++ b/CUETools.DSP.Resampler/CUETools.DSP.Resampler.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.DSP.Resampler CUETools.DSP.Resampler diff --git a/CUETools.FLACCL.cmd/App.config b/CUETools.FLACCL.cmd/App.config index c8d467dcf..0f9b4a6db 100644 --- a/CUETools.FLACCL.cmd/App.config +++ b/CUETools.FLACCL.cmd/App.config @@ -1,8 +1,8 @@ - + - \ No newline at end of file + diff --git a/CUETools.FLACCL.cmd/CUETools.FLACCL.cmd.csproj b/CUETools.FLACCL.cmd/CUETools.FLACCL.cmd.csproj index 8f870ca4e..a376e3085 100644 --- a/CUETools.FLACCL.cmd/CUETools.FLACCL.cmd.csproj +++ b/CUETools.FLACCL.cmd/CUETools.FLACCL.cmd.csproj @@ -1,114 +1,29 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {1FCA8834-34E6-47CF-B53F-D8DF35345363} - Exe - Properties - CUETools.FLACCL.cmd - CUETools.FLACCL.cmd - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AnyCPU - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AnyCPU - AllRules.ruleset - - - - False - ..\ThirdParty\openclnet\source\bin\$(Configuration)\net47\OpenCLNet.dll - - - - - - - - - - - - {082D6B9E-326E-4D15-9798-EDAE9EDE70A6} - CUETools.Codecs.Flake - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - {DFE55765-564C-4B8F-993B-A94C4D1C212E} - CUETools.Codecs.FLACCL - False - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file + + + + net10.0-windows + 2.2.6.0 + Exe + CUETools.FLACCL.cmd + CUETools.FLACCL.cmd + 7.0 + false + ..\bin\$(Configuration)\$(TargetFramework)\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + False + + + + + + + + + + + diff --git a/CUETools.Flake/CUETools.Flake.csproj b/CUETools.Flake/CUETools.Flake.csproj index a68dde5a2..9c8e2389c 100644 --- a/CUETools.Flake/CUETools.Flake.csproj +++ b/CUETools.Flake/CUETools.Flake.csproj @@ -1,9 +1,7 @@  - net47;net20;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.Flake CUETools.Flake diff --git a/CUETools.LossyWAV/CUETools.LossyWAV.csproj b/CUETools.LossyWAV/CUETools.LossyWAV.csproj index b7c3b0c69..5fc5d1169 100644 --- a/CUETools.LossyWAV/CUETools.LossyWAV.csproj +++ b/CUETools.LossyWAV/CUETools.LossyWAV.csproj @@ -1,9 +1,7 @@  - net47;net20;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.LossyWAV CUETools.LossyWAV diff --git a/CUETools.Parity/CUETools.Parity.csproj b/CUETools.Parity/CUETools.Parity.csproj index 136e47052..12b6fd022 100644 --- a/CUETools.Parity/CUETools.Parity.csproj +++ b/CUETools.Parity/CUETools.Parity.csproj @@ -1,7 +1,7 @@  - net20;net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Parity CUETools.Parity diff --git a/CUETools.Processor/CUESheet.cs b/CUETools.Processor/CUESheet.cs index d44c91cd0..727745623 100644 --- a/CUETools.Processor/CUESheet.cs +++ b/CUETools.Processor/CUESheet.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Drawing; -#if NET47 || NET20 +#if NET48 || NET20 using System.Drawing.Drawing2D; #endif using System.Globalization; @@ -127,7 +127,7 @@ public List AlbumArt get { return _albumArt; } } -#if NET47 || NET20 +#if NET48 || NET20 public Image Cover { get @@ -1828,7 +1828,7 @@ public void LoadAndResizeAlbumArt() using (MemoryStream imageStream = new MemoryStream(pic.Data.Data, 0, pic.Data.Count)) try { -#if NET47 || NET20 +#if NET48 || NET20 var image = Image.FromStream(ms); pic.Description += $" ({image.Width}x{image.Height})"; //if (image.Height > 0 && image.Width > 0 && (image.Height * 1.0 / image.Width) > 0.9 && (image.Width * 1.0 / image.Height) > 0.9) @@ -1863,7 +1863,7 @@ public void LoadAndResizeAlbumArt() } } } -#if NET47 || NET20 +#if NET48 || NET20 ResizeAlbumArt(); #endif } @@ -3030,7 +3030,7 @@ public CUEToolsLocalDBEntry OpenLocalDBEntry() return entry; } -#if NET47 || NET20 +#if NET48 || NET20 private static Bitmap resizeImage(Image imgToResize, Size size) { int sourceWidth = imgToResize.Width; @@ -3152,7 +3152,7 @@ private void LoadAlbumArt(TagLib.File fileInfo) using (MemoryStream imageStream = new MemoryStream(pic.Data.Data, 0, pic.Data.Count)) try { -#if NET47 || NET20 +#if NET48 || NET20 var image = Image.FromStream(imageStream); pic.Description += $" ({image.Width}x{image.Height})"; if (image.Height > 0 && image.Width > 0 && (image.Height * 1.0 / image.Width) > 0.9 && (image.Width * 1.0 / image.Height) > 0.9) @@ -3170,7 +3170,7 @@ private void LoadAlbumArt(TagLib.File fileInfo) } } -#if NET47 || NET20 +#if NET48 || NET20 public void ResizeAlbumArt() { if (_albumArt == null) diff --git a/CUETools.Processor/CUETools.Processor.csproj b/CUETools.Processor/CUETools.Processor.csproj index 9c4375f32..7dfed0e2b 100644 --- a/CUETools.Processor/CUETools.Processor.csproj +++ b/CUETools.Processor/CUETools.Processor.csproj @@ -1,7 +1,7 @@  - net47;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Processor CUETools.Processor @@ -23,7 +23,7 @@ - + diff --git a/CUETools.Ripper.Console/CUETools.ConsoleRipper.csproj b/CUETools.Ripper.Console/CUETools.ConsoleRipper.csproj index 0fcc017aa..cf4cde0e2 100644 --- a/CUETools.Ripper.Console/CUETools.ConsoleRipper.csproj +++ b/CUETools.Ripper.Console/CUETools.ConsoleRipper.csproj @@ -1,7 +1,7 @@  - net47;net20 + net10.0 2.2.6.0 CUETools.Ripper.Console CUETools.Ripper.Console diff --git a/CUETools.Ripper.SCSI/CUETools.Ripper.SCSI.csproj b/CUETools.Ripper.SCSI/CUETools.Ripper.SCSI.csproj index b22030687..1d6133ee0 100644 --- a/CUETools.Ripper.SCSI/CUETools.Ripper.SCSI.csproj +++ b/CUETools.Ripper.SCSI/CUETools.Ripper.SCSI.csproj @@ -1,7 +1,7 @@  - net47;net20 + netstandard2.1 2.2.6.0 CUETools.Ripper.SCSI CUETools.Ripper.SCSI diff --git a/CUETools.Ripper/CUETools.Ripper.csproj b/CUETools.Ripper/CUETools.Ripper.csproj index e28e6b3e1..37ec076ba 100644 --- a/CUETools.Ripper/CUETools.Ripper.csproj +++ b/CUETools.Ripper/CUETools.Ripper.csproj @@ -1,7 +1,7 @@  - net47;net20;netstandard2.0 + netstandard2.1 2.2.6.0 CUETools.Ripper CUETools.Ripper diff --git a/CUETools.TestHelpers/CUETools.TestHelpers.csproj b/CUETools.TestHelpers/CUETools.TestHelpers.csproj index a481ec7a9..ad13db1d0 100644 --- a/CUETools.TestHelpers/CUETools.TestHelpers.csproj +++ b/CUETools.TestHelpers/CUETools.TestHelpers.csproj @@ -1,110 +1,25 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {84EBB7CB-02C9-40A9-9D32-C641B822DAA2} - Library - Properties - CUETools.TestHelpers - CUETools.TestHelpers - v4.7 - 512 - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AllRules.ruleset - - - - - - - - - - - - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - False - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file + + + + netstandard2.1 + 1.0.0.0 + Library + CUETools.TestHelpers + CUETools.TestHelpers + false + ..\bin\$(Configuration)\ + + + + + False + + + + + + + + + + diff --git a/CUETools.TestHelpers/app.config b/CUETools.TestHelpers/app.config index 957cb1382..6b2c6ac27 100644 --- a/CUETools.TestHelpers/app.config +++ b/CUETools.TestHelpers/app.config @@ -1,6 +1,6 @@ - + diff --git a/CUETools.eac3to/CUETools.eac3to.csproj b/CUETools.eac3to/CUETools.eac3to.csproj index cb4c0acc2..cbc402221 100644 --- a/CUETools.eac3to/CUETools.eac3to.csproj +++ b/CUETools.eac3to/CUETools.eac3to.csproj @@ -1,9 +1,7 @@  - net47;netcoreapp2.0 - false - 2.0.9 + net10.0 2.2.6.0 CUETools.eac3to CUETools.eac3to diff --git a/CUETools.eac3ui/App.config b/CUETools.eac3ui/App.config index e8460b80e..0561a2203 100644 --- a/CUETools.eac3ui/App.config +++ b/CUETools.eac3ui/App.config @@ -6,7 +6,7 @@ - + diff --git a/CUETools.eac3ui/BLUTools.csproj b/CUETools.eac3ui/BLUTools.csproj index 590aa97d9..1dc1393df 100644 --- a/CUETools.eac3ui/BLUTools.csproj +++ b/CUETools.eac3ui/BLUTools.csproj @@ -1,194 +1,42 @@ - - - + + - Debug - AnyCPU - {678875A6-6B3A-4AAC-83B6-D9A72D9016CF} + net10.0-windows WinExe - BluTools BluTools - v4.7 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - true - - - - AnyCPU - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - false - - + BluTools Icons\cue2.ico + 7.0 + true + true + false + ..\bin\$(Configuration)\ + - - - - - - - - - - - - 4.0 - - - - + + + + + + + + - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainWindow.xaml - Code - + + + - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - + ResXFileCodeGenerator Resources.Designer.cs - Designer - + SettingsSingleFileGenerator Settings.Designer.cs - - - - - - {1dd41038-d885-46c5-8dde-e0b82f066584} - CUETools.CDImage - - - {e75f7ccd-4266-42e1-a039-dc7eb5edd8f6} - CUETools.Codecs.MPEG - False - - - {082d6b9e-326e-4d15-9798-edae9ede70a6} - CUETools.Codecs.Flake - False - - - {6458a13a-30ef-45a9-9d58-e5031b17bee2} - CUETools.Codecs - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {aa2a9a7e-45fb-4632-ad85-85b0e556f818} - CUETools.CTDB - - - {4911bd82-49ef-4858-8b51-5394f86739a4} - CUETools.Processor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + diff --git a/CUETools.eac3ui/Properties/Resources.Designer.cs b/CUETools.eac3ui/Properties/Resources.Designer.cs index c9872e05a..95a11a94e 100644 --- a/CUETools.eac3ui/Properties/Resources.Designer.cs +++ b/CUETools.eac3ui/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace BluTools.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUETools.eac3ui/Properties/Settings.Designer.cs b/CUETools.eac3ui/Properties/Settings.Designer.cs index b0899f9ab..bc1ad4c4a 100644 --- a/CUETools.eac3ui/Properties/Settings.Designer.cs +++ b/CUETools.eac3ui/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace BluTools.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CUETools/CUETools.TestCodecs/CUETools.TestCodecs.csproj b/CUETools/CUETools.TestCodecs/CUETools.TestCodecs.csproj index b86e414f6..a25804673 100644 --- a/CUETools/CUETools.TestCodecs/CUETools.TestCodecs.csproj +++ b/CUETools/CUETools.TestCodecs/CUETools.TestCodecs.csproj @@ -1,191 +1,65 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {04945FB2-8410-4F14-8262-2ED18DCDACD6} - Library - CUETools.TestCodecs - CUETools.TestCodecs - 4 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\bin\$(Configuration)\net47\tests\ - DEBUG;TRACE - true - AllRules.ruleset - false - - - true - true - ..\..\bin\$(Configuration)\net47\tests\ - TRACE - pdbonly - true - AllRules.ruleset - false - - - - False - ..\..\ThirdParty\CSScriptLibrary.v1.1.dll - False - - - - - - - - - - - - - - - - - - - - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - False - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - False - - - {F2EC7193-D5E5-4252-9803-5CEB407E910F} - CUETools.Codecs.ALAC - True - - - {082D6B9E-326E-4D15-9798-EDAE9EDE70A6} - CUETools.Codecs.Flake - True - - - {f10ab92c-9afb-4fc0-94e0-06fcd3ca8155} - CUETools.Codecs.libFLAC - - - {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19} - CUETools.Codecs.LossyWAV - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - True - - - {14EE067E-C218-4625-9540-2361AB27C4A6} - CUETools.Compression - False - - - {A6303861-CA06-4C2C-A104-BA9291538F6F} - CUETools.DSP.Resampler - False - - - {D2700165-3E77-4B28-928D-551F5FC11954} - CUETools.Ripper - False - - - {84EBB7CB-02C9-40A9-9D32-C641B822DAA2} - CUETools.TestHelpers - False - - - {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} - Freedb - False - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - \ No newline at end of file + + + + net10.0-windows + Library + CUETools.TestCodecs + CUETools.TestCodecs + true + true + false + false + true + $(NoWarn);WFO1000 + ..\..\bin\$(Configuration)\$(TargetFramework)\tests\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CUETools/CUETools.TestParity/CUETools.TestParity.csproj b/CUETools/CUETools.TestParity/CUETools.TestParity.csproj index 9916acbee..d316ef0d7 100644 --- a/CUETools/CUETools.TestParity/CUETools.TestParity.csproj +++ b/CUETools/CUETools.TestParity/CUETools.TestParity.csproj @@ -1,134 +1,40 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {6C74652F-1EF4-459E-84F4-99D93D3D17DA} - Library - Properties - CUETools.TestParity - CUETools.TestParity - v4.7 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\bin\$(Configuration)\net47\tests\ - DEBUG;TRACE - prompt - 4 - true - AllRules.ruleset - false - - - pdbonly - true - ..\..\bin\$(Configuration)\net47\tests\ - TRACE - prompt - 4 - true - AllRules.ruleset - false - - - - - - - - - - - - - - - - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - False - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - {ECEB839C-171B-4535-958F-9899310A0342} - CUETools.Parity - False - - - {84EBB7CB-02C9-40A9-9D32-C641B822DAA2} - CUETools.TestHelpers - False - - - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file + + + + net10.0-windows + Library + CUETools.TestParity + CUETools.TestParity + true + false + false + true + ..\..\bin\$(Configuration)\$(TargetFramework)\tests\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CUETools/CUETools.TestParity/app.config b/CUETools/CUETools.TestParity/app.config index 957cb1382..6b2c6ac27 100644 --- a/CUETools/CUETools.TestParity/app.config +++ b/CUETools/CUETools.TestParity/app.config @@ -1,6 +1,6 @@ - + diff --git a/CUETools/CUETools.TestProcessor/CUETools.TestProcessor.csproj b/CUETools/CUETools.TestProcessor/CUETools.TestProcessor.csproj index 058f176c5..9bf68d3ce 100644 --- a/CUETools/CUETools.TestProcessor/CUETools.TestProcessor.csproj +++ b/CUETools/CUETools.TestProcessor/CUETools.TestProcessor.csproj @@ -1,144 +1,48 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {A430AD28-B76A-4ED0-AF7D-D13B8969297F} - Library - CUETools.TestProcessor - CUETools.TestProcessor - 4 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - 3.5 - - - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\bin\$(Configuration)\net47\tests\ - DEBUG;TRACE - AllRules.ruleset - false - - - true - true - ..\..\bin\$(Configuration)\net47\tests\ - TRACE - pdbonly - AllRules.ruleset - false - - - - True - - - - - - - - - - - - - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - False - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - False - - - {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19} - CUETools.Codecs.LossyWAV - False - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - False - - - {14EE067E-C218-4625-9540-2361AB27C4A6} - CUETools.Compression - False - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {AA2A9A7E-45FB-4632-AD85-85B0E556F818} - CUETools.CTDB - False - - - {4911BD82-49EF-4858-8B51-5394F86739A4} - CUETools.Processor - False - - - {D2700165-3E77-4B28-928D-551F5FC11954} - CUETools.Ripper - False - - - {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} - Freedb - False - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - \ No newline at end of file + + + + net10.0-windows + Library + CUETools.TestProcessor + CUETools.TestProcessor + true + false + false + true + $(NoWarn);WFO1000 + ..\..\bin\$(Configuration)\$(TargetFramework)\tests\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CUETools/CUETools.csproj b/CUETools/CUETools.csproj index ae92622fc..7380f7734 100644 --- a/CUETools/CUETools.csproj +++ b/CUETools/CUETools.csproj @@ -1,430 +1,66 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {EF351583-A9CD-4530-92C3-20AC02136BC2} - WinExe - Properties - JDP - CUETools - cue2.ico - 611F49E043614FEDCFF1B128868CC8DC0B6656C5 - CUETools_TemporaryKey.pfx - false - false - true - LocalIntranet - - - 3.5 - - - v4.7 - - ftp://cuetools.net/cuetools.net/install/cuetools/ - true - Web - true - Background - 1 - Days - true - false - true - http://cuetools.net/install/cuetools/ - http://cuetools.net/ - CUETools - CUETools - true - publish.htm - 0 - 1.0.0.%2a - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - true - x86 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - true - AnyCPU - true - AllRules.ruleset - false - - - - - - - - - - - - - - - - - - - Form - - - frmSubmit.cs - - - Form - - - frmAbout.cs - - - Form - - - frmBatch.cs - - - Form - - - frmChoice.cs - - - Form - - - frmOverwrite.cs - - - Form - - - frmPassword.cs - - - Form - - - frmReport.cs - - - Form - - - frmSettings.cs - - - Form - - - frmCUETools.cs - - - - - frmAbout.cs - Designer - - - Designer - frmAbout.cs - - - Designer - frmAbout.cs - - - Designer - frmBatch.cs - - - frmChoice.cs - Designer - - - Designer - frmChoice.cs - - - frmChoice.cs - - - Designer - frmCUETools.cs - - - Designer - frmCUETools.cs - - - Designer - frmCUETools.cs - - - frmOverwrite.cs - - - frmPassword.cs - Designer - - - Designer - frmPassword.cs - - - frmPassword.cs - - - frmReport.cs - Designer - - - Designer - frmReport.cs - - - frmReport.cs - - - Designer - frmSettings.cs - - - Designer - frmSettings.cs - - - Designer - frmSettings.cs - - - frmSubmit.cs - - - frmSubmit.cs - - - frmSubmit.cs - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - {CA4D64E6-6544-4A29-8BA5-7DB08D50D072} - CUEControls - - - {5802C7E9-157E-4124-946D-70B5AE48A5A1} - CUETools.AccurateRip - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - - - {14EE067E-C218-4625-9540-2361AB27C4A6} - CUETools.Compression - - - {c36efaa5-4f81-4a29-800d-ba866ff13bc8} - CUETools.CTDB.Types - - - {AA2A9A7E-45FB-4632-AD85-85B0E556F818} - CUETools.CTDB - - - {4911BD82-49EF-4858-8B51-5394F86739A4} - CUETools.Processor - - - {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} - Freedb - - - {1219a514-d3fa-40db-bbb2-92ce05e35839} - TaglibSharp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Visual C++ Runtime Libraries %28x86%29 - true - - - - - False - - - - - Include - True - Satellite - - - False - - - - - Include - True - Satellite - - - - - - - - \ No newline at end of file + + + + net10.0-windows + 2.2.6.0 + WinExe + CUETools + JDP + cue2.ico + Properties\app.manifest + 7.0 + true + false + true + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\ + + + + x86 + + + + AnyCPU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + diff --git a/CUETools/Program.cs b/CUETools/Program.cs index e8222a5be..d2b64633a 100644 --- a/CUETools/Program.cs +++ b/CUETools/Program.cs @@ -1,12 +1,11 @@ using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Runtime.Remoting; -using System.Runtime.Remoting.Channels.Ipc; -using System.Text; -using System.Threading; -using System.Windows.Forms; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.IO.Pipes; +using System.Text; +using System.Threading; +using System.Windows.Forms; using CUETools.Processor; using CUETools.Processor.Settings; @@ -74,12 +73,14 @@ static void Main(string[] args) } } - [Serializable] - class SingletonController : MarshalByRefObject - { - private static IpcChannel m_IPCChannel = null; - - public delegate bool ReceiveDelegate(string[] args); + class SingletonController + { + private static Mutex m_Mutex = null; + private static string m_PipeName = null; + private static Thread m_ListenerThread = null; + private static CancellationTokenSource m_Cancellation = null; + + public delegate bool ReceiveDelegate(string[] args); static private ReceiveDelegate m_Receive = null; static public ReceiveDelegate Receiver @@ -107,55 +108,126 @@ public static bool IamFirst(string id, ReceiveDelegate r) } } - public static bool IamFirst(string id) - { - try - { - m_IPCChannel = new IpcChannel(id); - } - catch - { - return false; - } - System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(m_IPCChannel, false); - RemotingConfiguration.RegisterWellKnownServiceType( - typeof(SingletonController), - "SingletonController", - WellKnownObjectMode.SingleCall); - return true; - } - - public static void Cleanup() - { - if (m_IPCChannel != null) - m_IPCChannel.StopListening(null); - m_IPCChannel = null; - } - - public static void Send(string id, string[] s) - { - SingletonController ctrl; - IpcChannel channel = new IpcChannel(); - System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, false); - bool result = false; - try - { - ctrl = (SingletonController)Activator.GetObject(typeof(SingletonController), "ipc://" + id + "/SingletonController"); - result = ctrl.Receive(s); - } - catch - { - } + public static bool IamFirst(string id) + { + bool createdNew; + try + { + m_Mutex = new Mutex(true, "CUETools-" + id, out createdNew); + } + catch + { + return false; + } + + if (!createdNew) + return false; + + m_PipeName = "CUETools-" + id; + m_Cancellation = new CancellationTokenSource(); + m_ListenerThread = new Thread(Listen); + m_ListenerThread.IsBackground = true; + m_ListenerThread.Name = "CUETools single-instance listener"; + m_ListenerThread.Start(); + return true; + } + + public static void Cleanup() + { + if (m_Cancellation != null) + { + m_Cancellation.Cancel(); + try + { + using (NamedPipeClientStream client = new NamedPipeClientStream(".", m_PipeName, PipeDirection.Out)) + client.Connect(50); + } + catch + { + } + } + + if (m_ListenerThread != null) + m_ListenerThread.Join(1000); + m_ListenerThread = null; + m_Cancellation = null; + m_PipeName = null; + + if (m_Mutex != null) + { + try + { + m_Mutex.ReleaseMutex(); + } + catch + { + } + m_Mutex.Dispose(); + } + m_Mutex = null; + } + + public static void Send(string id, string[] s) + { + bool result = false; + try + { + using (NamedPipeClientStream client = new NamedPipeClientStream(".", "CUETools-" + id, PipeDirection.InOut)) + { + client.Connect(1000); + BinaryWriter writer = new BinaryWriter(client, Encoding.UTF8, true); + writer.Write(s.Length); + foreach (string arg in s) + writer.Write(arg ?? ""); + writer.Flush(); + + BinaryReader reader = new BinaryReader(client, Encoding.UTF8, true); + result = reader.ReadBoolean(); + } + } + catch + { + } if (!result) MessageBox.Show("Another instance of the application seems to be running, but not responding.", - "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - - public bool Receive(string[] s) - { - if (m_Receive == null) - return false; + "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + private static void Listen() + { + while (m_Cancellation != null && !m_Cancellation.IsCancellationRequested) + { + try + { + using (NamedPipeServerStream server = new NamedPipeServerStream(m_PipeName, PipeDirection.InOut, 1)) + { + server.WaitForConnection(); + if (m_Cancellation.IsCancellationRequested) + continue; + + BinaryReader reader = new BinaryReader(server, Encoding.UTF8, true); + int count = reader.ReadInt32(); + string[] args = new string[count]; + for (int i = 0; i < count; i++) + args[i] = reader.ReadString(); + + bool result = Receive(args); + BinaryWriter writer = new BinaryWriter(server, Encoding.UTF8, true); + writer.Write(result); + writer.Flush(); + } + } + catch + { + } + } + } + + private static bool Receive(string[] s) + { + if (m_Receive == null) + return false; return m_Receive(s); } } -} \ No newline at end of file +} diff --git a/CUETools/Properties/Resources.Designer.cs b/CUETools/Properties/Resources.Designer.cs index a22d9de58..1d7fab57b 100644 --- a/CUETools/Properties/Resources.Designer.cs +++ b/CUETools/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace JDP.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/CUETools/Properties/Settings.Designer.cs b/CUETools/Properties/Settings.Designer.cs index e04f3d25c..1ee1fa702 100644 --- a/CUETools/Properties/Settings.Designer.cs +++ b/CUETools/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace JDP.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.6.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/CUETools/TestRipper/CDDriveReaderTest.cs b/CUETools/TestRipper/CDDriveReaderTest.cs index da7dc2227..8484f52e5 100644 --- a/CUETools/TestRipper/CDDriveReaderTest.cs +++ b/CUETools/TestRipper/CDDriveReaderTest.cs @@ -37,10 +37,11 @@ public TestContext TestContext } } - const int max_pass = 64; - const int Sectors2Read = 2400; - - bool markErrors = true; + const int max_pass = 64; + const int Sectors2Read = 2400; + const string FixtureDirectory = @"Y:\Temp\dbg\960"; + + bool markErrors = true; int _currentStart = 0, _realErrors = 0; byte[] _currentData = new byte[Sectors2Read * 4 * 588]; @@ -54,11 +55,13 @@ public TestContext TestContext //You can use the following additional attributes as you write your tests: // //Use ClassInitialize to run code before running the first test in the class - [ClassInitialize()] - public static void MyClassInitialize(TestContext testContext) - { - for (ulong i = 0; i < 256; i++) - { + [ClassInitialize()] + public static void MyClassInitialize(TestContext testContext) + { + EnsureExternalFixtureAvailable(); + + for (ulong i = 0; i < 256; i++) + { ulong bl = 0; for (int b = 0; b < 8; b++) bl += ((i >> b) & 1) << (b << 3); @@ -68,12 +71,12 @@ public static void MyClassInitialize(TestContext testContext) //Random rnd = new Random(2314); //rnd.NextBytes(_realData); - byte [] c2data = new byte[Sectors2Read * 296]; - for (int p = 0; p < max_pass; p++) - { - // string nm_d = string.Format("Y:\\Temp\\dbg\\{0:x}-{1:00}.bin", _currentStart, dbg_pass); - using (FileStream fs = new FileStream(string.Format("Y:\\Temp\\dbg\\960\\960-{0:00}.bin", p), FileMode.Open)) - using (FileStream fs2 = new FileStream(string.Format("Y:\\Temp\\dbg\\960\\960-{0:00}.c2", p), FileMode.Open)) + byte [] c2data = new byte[Sectors2Read * 296]; + for (int p = 0; p < max_pass; p++) + { + // string nm_d = string.Format("Y:\\Temp\\dbg\\{0:x}-{1:00}.bin", _currentStart, dbg_pass); + using (FileStream fs = new FileStream(Path.Combine(FixtureDirectory, string.Format("960-{0:00}.bin", p)), FileMode.Open)) + using (FileStream fs2 = new FileStream(Path.Combine(FixtureDirectory, string.Format("960-{0:00}.c2", p)), FileMode.Open)) { fs.Read(_realData, 0, Sectors2Read * 4 * 588); fs2.Read(c2data, 0, Sectors2Read * 296); @@ -107,10 +110,27 @@ public static void MyClassInitialize(TestContext testContext) // } // } } - using (FileStream fs = new FileStream(string.Format("Y:\\Temp\\dbg\\960\\960.bin", 0), FileMode.Open)) - fs.Read(_realData, 0, Sectors2Read * 4 * 588); - } - // + using (FileStream fs = new FileStream(Path.Combine(FixtureDirectory, "960.bin"), FileMode.Open)) + fs.Read(_realData, 0, Sectors2Read * 4 * 588); + } + + static void EnsureExternalFixtureAvailable() + { + if (!Directory.Exists(FixtureDirectory)) + Assert.Inconclusive("External TestRipper fixture directory is missing: " + FixtureDirectory); + + for (int p = 0; p < max_pass; p++) + { + string binPath = Path.Combine(FixtureDirectory, string.Format("960-{0:00}.bin", p)); + string c2Path = Path.Combine(FixtureDirectory, string.Format("960-{0:00}.c2", p)); + if (!File.Exists(binPath) || !File.Exists(c2Path)) + Assert.Inconclusive("External TestRipper fixture files are missing under: " + FixtureDirectory); + } + + if (!File.Exists(Path.Combine(FixtureDirectory, "960.bin"))) + Assert.Inconclusive("External TestRipper reference file is missing: " + Path.Combine(FixtureDirectory, "960.bin")); + } + // //Use ClassCleanup to run code after all tests in a class have run //[ClassCleanup()] //public static void MyClassCleanup() diff --git a/CUETools/TestRipper/TestRipper.csproj b/CUETools/TestRipper/TestRipper.csproj index dab36e2ce..c1ed0b84b 100644 --- a/CUETools/TestRipper/TestRipper.csproj +++ b/CUETools/TestRipper/TestRipper.csproj @@ -1,133 +1,36 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {5C8B61C0-BC3D-4316-B8A7-419D55BB5796} - Library - Properties - TestRipper - TestRipper - v4.7 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\..\bin\$(Configuration)\net47\tests\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\..\bin\$(Configuration)\net47\tests\ - TRACE - prompt - 4 - AllRules.ruleset - - - - - - - - - - - - - - {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7} - Bwg.Logging - false - - - {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8} - Bwg.Scsi - false - - - {1DD41038-D885-46C5-8DDE-E0B82F066584} - CUETools.CDImage - false - - - {6458A13A-30EF-45A9-9D58-E5031B17BEE2} - CUETools.Codecs - false - - - {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A} - CUETools.Ripper.SCSI - false - - - {D2700165-3E77-4B28-928D-551F5FC11954} - CUETools.Ripper - false - - - - - - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file + + + + net10.0-windows + Library + TestRipper + TestRipper + false + false + true + ..\..\bin\$(Configuration)\$(TargetFramework)\tests\ + false + $(BaseIntermediateOutputPath)\$(Configuration)\$(TargetFramework)\ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CUETools/TestRipper/app.config b/CUETools/TestRipper/app.config index 73859b00e..8a046a0b8 100644 --- a/CUETools/TestRipper/app.config +++ b/CUETools/TestRipper/app.config @@ -1,3 +1,3 @@ - + diff --git a/CUETools/app.config b/CUETools/app.config index 7680fe265..a19e70143 100644 --- a/CUETools/app.config +++ b/CUETools/app.config @@ -6,6 +6,6 @@ - + diff --git a/CUETools/frmCUETools.cs b/CUETools/frmCUETools.cs index 58218f689..7536dc3ae 100644 --- a/CUETools/frmCUETools.cs +++ b/CUETools/frmCUETools.cs @@ -1002,10 +1002,10 @@ private void WriteAudioFilesThread(object o) UpdateOutputPath(pathIn, cueSheet); pathOut = txtOutputPath.Text; - if (dlgRes != DialogResult.Cancel && cueSheet.AlbumArt.Count != 0) - pictureBoxMotd.Image = cueSheet.Cover; - else - pictureBoxMotd.Image = motdImage; + if (dlgRes != DialogResult.Cancel && cueSheet.AlbumArt.Count != 0) + pictureBoxMotd.Image = GetCoverImage(cueSheet); + else + pictureBoxMotd.Image = motdImage; }); if (dlgRes == DialogResult.Cancel) @@ -1049,8 +1049,8 @@ private void WriteAudioFilesThread(object o) { this.Invoke((MethodInvoker)delegate () { - pictureBoxMotd.Image = cueSheet.Cover ?? motdImage; - }); + pictureBoxMotd.Image = GetCoverImage(cueSheet) ?? motdImage; + }); cueSheet.UsePregapForFirstTrackInSingleFile = _usePregapForFirstTrackInSingleFile && !outputAudio; if (script == null || script.name == "default") { @@ -2108,10 +2108,10 @@ private void rbAction_CheckedChanged(object sender, EventArgs e) SetupControls(false); } - public bool OnSecondCall(string[] args) - { - if ((_workThread != null) && (_workThread.IsAlive)) - return false; + public bool OnSecondCall(string[] args) + { + if ((_workThread != null) && (_workThread.IsAlive)) + return false; this.Invoke((MethodInvoker)delegate() { if (args.Length == 1) @@ -2152,11 +2152,25 @@ public bool OnSecondCall(string[] args) WindowState = FormWindowState.Normal; Activate(); }); - return true; - } - - private void locateInExplorerToolStripMenuItem_Click(object sender, EventArgs e) - { + return true; + } + + private static Image GetCoverImage(CUESheet cueSheet) + { + if (cueSheet == null || cueSheet.AlbumArt == null) + return null; + var picture = cueSheet.AlbumArt.Find(x => x.Type == TagLib.PictureType.FrontCover) ?? + cueSheet.AlbumArt.Find(x => x.Type != TagLib.PictureType.NotAPicture); + if (picture == null) + return null; + using (MemoryStream imageStream = new MemoryStream(picture.Data.Data, 0, picture.Data.Count)) + try { return Image.FromStream(imageStream); } + catch { } + return null; + } + + private void locateInExplorerToolStripMenuItem_Click(object sender, EventArgs e) + { var node = contextMenuStripFileTree.Tag as CUEControls.FileSystemTreeNode; if (node is FileSystemTreeNodeLocalDBFolder) { diff --git a/Freedb/Freedb.csproj b/Freedb/Freedb.csproj index 91ef4fac7..6d9da7e5e 100644 --- a/Freedb/Freedb.csproj +++ b/Freedb/Freedb.csproj @@ -1,167 +1,12 @@ - - - - Local - 9.0.30729 - 2.0 - {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} - Debug - AnyCPU - - - - - Freedb - - - JScript - Grid - IE50 - false - Library - Freedb - OnBuildSuccess - - - - - - - 3.5 - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - ..\bin\Debug\net47\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - AllRules.ruleset - - - ..\bin\Release\net47\ - false - 285212672 - false - - - - - - - true - 4096 - false - - - true - false - false - false - 4 - pdbonly - prompt - AllRules.ruleset - - - - System - - - System.Data - - - System.Drawing - - - System.Windows.Forms - - - System.XML - - - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - - - - - - \ No newline at end of file + + + + netstandard2.1 + Freedb + Freedb + Library + false + ..\bin\$(Configuration)\ + + + diff --git a/MusicBrainz/MusicBrainz.csproj b/MusicBrainz/MusicBrainz.csproj index 9698612b5..81e49830d 100644 --- a/MusicBrainz/MusicBrainz.csproj +++ b/MusicBrainz/MusicBrainz.csproj @@ -1,81 +1,10 @@ - - - - Debug - AnyCPU - 9.0.30729 - {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533} - Library - MusicBrainz - MusicBrainz - - - - - 2.0 - - - true - full - false - ..\bin\Debug\net47\ - prompt - 4 - . - true - false - v4.7 - true - - - pdbonly - true - ..\bin\Release\net47\ - prompt - 4 - . - true - v1.1 - AnyCPU - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + netstandard2.1 + MusicBrainz + MusicBrainz + ..\bin\$(Configuration)\ + + + diff --git a/ProgressODoom/ProgressODoom.csproj b/ProgressODoom/ProgressODoom.csproj index 50f560b14..e7a0f2bfb 100644 --- a/ProgressODoom/ProgressODoom.csproj +++ b/ProgressODoom/ProgressODoom.csproj @@ -1,228 +1,20 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1} - Library - Properties - ProgressODoom - ProgressODoom - - - 3.5 - - - false - v4.7 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - true - full - false - ..\bin\Debug\net47\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\bin\Release\net47\ - TRACE - prompt - 4 - AllRules.ruleset - - - - - - - - - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - - - - - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - Component - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - - - \ No newline at end of file + + + + net10.0-windows + Library + ProgressODoom + ProgressODoom + 7.0 + true + false + false + $(NoWarn);WFO1000 + ..\bin\$(Configuration)\ + + + + + + + diff --git a/README.md b/README.md index 0e53ea8a4..f50cf7da5 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,10 @@ Prebuilt binaries can be downloaded from [CUETools Download](http://cue.tools/wi `git apply --directory=ThirdParty/MAC_SDK ThirdParty/ThirdParty_MAC_SDK_CUETools.patch` `git apply --directory=ThirdParty/taglib-sharp ThirdParty/submodule_taglib-sharp_CUETools.patch` `git apply --directory=ThirdParty/WavPack ThirdParty/submodule_WavPack_CUETools.patch` +`git apply --directory=ThirdParty/openclnet ThirdParty/submodule_openclnet_CUETools.patch` `git apply --directory=ThirdParty/WindowsMediaLib ThirdParty/submodule_WindowsMediaLib_CUETools.patch` * The solution can be built using Microsoft Visual Studio 2017 or newer (Community Edition will work) - * Install the required .NET development tools (currently .NET Framework 4.7 and .NET Core 2.0) + * Install the required .NET development tools (currently .NET 10 SDK) * Install an appropriate Windows SDK version (e.g. 10.0.16299.0 or newer) * Install the Microsoft Visual Studio Installer Projects * Open cuetools.net\CUETools.sln diff --git a/ThirdParty/WavPack b/ThirdParty/WavPack index 4827b9889..5803634a0 160000 --- a/ThirdParty/WavPack +++ b/ThirdParty/WavPack @@ -1 +1 @@ -Subproject commit 4827b9889665b937b6ed71b9c6c0123152cd7a02 +Subproject commit 5803634a030e2a11dba602ba057b89cc34486c67 diff --git a/ThirdParty/submodule_WindowsMediaLib_CUETools.patch b/ThirdParty/submodule_WindowsMediaLib_CUETools.patch index 5b868f610..aafaacf66 100644 --- a/ThirdParty/submodule_WindowsMediaLib_CUETools.patch +++ b/ThirdParty/submodule_WindowsMediaLib_CUETools.patch @@ -1,7 +1,16 @@ diff --git a/wmlib/src/WindowsMediaLib.csproj b/wmlib/src/WindowsMediaLib.csproj -index 24c8569..62cb8db 100644 +index 24c8569..d908906 100644 --- a/wmlib/src/WindowsMediaLib.csproj +++ b/wmlib/src/WindowsMediaLib.csproj +@@ -1,7 +1,7 @@ +  + + +- net47;net20 ++ netstandard2.1 + 1.1.0.0 + WindowsMediaLib + WindowsMediaLib @@ -10,7 +10,9 @@ Copyright (c) 2008-2018 snarfle snarfle diff --git a/ThirdParty/submodule_openclnet_CUETools.patch b/ThirdParty/submodule_openclnet_CUETools.patch new file mode 100644 index 000000000..c0bd63145 --- /dev/null +++ b/ThirdParty/submodule_openclnet_CUETools.patch @@ -0,0 +1,21 @@ +diff --git a/source/OpenCLNet.csproj b/source/OpenCLNet.csproj +index f2ec492..d8a2bce 100644 +--- a/source/OpenCLNet.csproj ++++ b/source/OpenCLNet.csproj +@@ -1,7 +1,7 @@ +  + + +- net47 ++ net10.0-windows + 0.5.1.0 + OpenCL.Net + OpenCL.Net +@@ -11,6 +11,7 @@ + Olav Kalgraf + OpenCLNet + OpenCLNet ++ 7.0 + + + diff --git a/ThirdParty/submodule_taglib-sharp_CUETools.patch b/ThirdParty/submodule_taglib-sharp_CUETools.patch index 13c96332a..542797d26 100644 --- a/ThirdParty/submodule_taglib-sharp_CUETools.patch +++ b/ThirdParty/submodule_taglib-sharp_CUETools.patch @@ -1,8 +1,78 @@ +diff --git a/Directory.Build.props b/Directory.Build.props +index dec1261..8f041a1 100644 +--- a/Directory.Build.props ++++ b/Directory.Build.props +@@ -6,15 +6,11 @@ + git + + +- net462;netcoreapp3.1 +- net462;netstandard2.0 ++ net10.0 ++ netstandard2.1 + latest + + +- +- full +- +- + + + +diff --git a/src/TaglibSharp.Tests/Images/Validators/ImageTest.cs b/src/TaglibSharp.Tests/Images/Validators/ImageTest.cs +index dfbd151..65f6d9d 100644 +--- a/src/TaglibSharp.Tests/Images/Validators/ImageTest.cs ++++ b/src/TaglibSharp.Tests/Images/Validators/ImageTest.cs +@@ -5,6 +5,7 @@ + + using SixLabors.ImageSharp; + using SixLabors.ImageSharp.Advanced; ++using SixLabors.ImageSharp.PixelFormats; + + using TagLib; + +@@ -146,9 +147,9 @@ string ReadImageData (TagLib.Image.File file) + // TODO, ImageSharp doesn't support tiff yet (4/25/2020): https://github.com/SixLabors/ImageSharp/issues/12 + md5Sum = "";// Utils.Md5Encode (v.Data); + } else { +- using var image = Image.Load (v.Data); +- image.TryGetSinglePixelSpan (out var span); +- byte[] result = MemoryMarshal.AsBytes (span).ToArray (); ++ using var image = Image.Load (v.Data); ++ image.DangerousTryGetSinglePixelMemory (out var memory); ++ byte[] result = MemoryMarshal.AsBytes (memory.Span).ToArray (); + md5Sum = Utils.Md5Encode (result); + } + +diff --git a/src/TaglibSharp.Tests/TaglibSharp.Tests.csproj b/src/TaglibSharp.Tests/TaglibSharp.Tests.csproj +index 5e1466b..09061a8 100644 +--- a/src/TaglibSharp.Tests/TaglibSharp.Tests.csproj ++++ b/src/TaglibSharp.Tests/TaglibSharp.Tests.csproj +@@ -12,13 +12,13 @@ + + + +- +- +- ++ ++ ++ + + +- +- ++ ++ + + + diff --git a/src/TaglibSharp/Aac/AudioHeader.cs b/src/TaglibSharp/Aac/AudioHeader.cs index 50613aa..8828d19 100644 --- a/src/TaglibSharp/Aac/AudioHeader.cs +++ b/src/TaglibSharp/Aac/AudioHeader.cs -@@ -203,6 +203,18 @@ public class AudioHeader : IAudioCodec +@@ -203,6 +203,18 @@ public int AudioBitrate { } } @@ -25,7 +95,7 @@ diff --git a/src/TaglibSharp/Aiff/StreamHeader.cs b/src/TaglibSharp/Aiff/StreamH index 318be17..8ad1ec4 100644 --- a/src/TaglibSharp/Aiff/StreamHeader.cs +++ b/src/TaglibSharp/Aiff/StreamHeader.cs -@@ -205,6 +205,18 @@ public StreamHeader (ByteVector data, long streamLength) +@@ -205,6 +205,18 @@ public int AudioBitrate { } } @@ -48,7 +118,7 @@ diff --git a/src/TaglibSharp/Ape/StreamHeader.cs b/src/TaglibSharp/Ape/StreamHea index 75a2675..4bdd5c3 100644 --- a/src/TaglibSharp/Ape/StreamHeader.cs +++ b/src/TaglibSharp/Ape/StreamHeader.cs -@@ -294,6 +294,18 @@ public StreamHeader (ByteVector data, long streamLength) +@@ -294,6 +294,18 @@ public int AudioBitrate { } } @@ -67,7 +137,7 @@ index 75a2675..4bdd5c3 100644 /// /// Gets the sample rate of the audio represented by the /// current instance. -@@ -356,4 +368,5 @@ public StreamHeader (ByteVector data, long streamLength) +@@ -356,4 +368,5 @@ public int BitsPerSample { public CompressionLevel Compression { get; private set; } #endregion @@ -80,7 +150,7 @@ diff --git a/src/TaglibSharp/Ape/Tag.cs b/src/TaglibSharp/Ape/Tag.cs index c3b631b..49a7f37 100644 --- a/src/TaglibSharp/Ape/Tag.cs +++ b/src/TaglibSharp/Ape/Tag.cs -@@ -1536,6 +1536,74 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1536,6 +1536,74 @@ public override string MusicBrainzReleaseCountry { set { SetValue ("RELEASECOUNTRY", value); } } @@ -159,7 +229,7 @@ diff --git a/src/TaglibSharp/Asf/FilePropertiesObject.cs b/src/TaglibSharp/Asf/F index fc0f513..64111bd 100644 --- a/src/TaglibSharp/Asf/FilePropertiesObject.cs +++ b/src/TaglibSharp/Asf/FilePropertiesObject.cs -@@ -198,6 +198,12 @@ public FilePropertiesObject (File file, long position) +@@ -198,6 +198,12 @@ public TimeSpan SendDuration { /// public ulong Preroll { get; private set; } @@ -176,7 +246,7 @@ diff --git a/src/TaglibSharp/Asf/Tag.cs b/src/TaglibSharp/Asf/Tag.cs index 84717ba..5251b84 100644 --- a/src/TaglibSharp/Asf/Tag.cs +++ b/src/TaglibSharp/Asf/Tag.cs -@@ -1298,6 +1298,40 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1298,6 +1298,40 @@ public override string MusicBrainzReleaseCountry { set { SetDescriptorString (value, "MusicBrainz/Album Release Country"); } } @@ -221,7 +291,7 @@ diff --git a/src/TaglibSharp/CombinedTag.cs b/src/TaglibSharp/CombinedTag.cs index 009eb8f..ee59e6e 100644 --- a/src/TaglibSharp/CombinedTag.cs +++ b/src/TaglibSharp/CombinedTag.cs -@@ -1637,6 +1637,162 @@ protected void ClearTags () +@@ -1637,6 +1637,162 @@ public override string MusicBrainzReleaseCountry { } } @@ -388,7 +458,7 @@ diff --git a/src/TaglibSharp/Dsf/StreamHeader.cs b/src/TaglibSharp/Dsf/StreamHea index 339d2f3..0651c84 100644 --- a/src/TaglibSharp/Dsf/StreamHeader.cs +++ b/src/TaglibSharp/Dsf/StreamHeader.cs -@@ -249,6 +249,18 @@ public StreamHeader (ByteVector data, long streamLength) +@@ -249,6 +249,18 @@ public int AudioBitrate { } } @@ -423,7 +493,7 @@ index ecc4955..1bfb20a 100644 IsLastBlock = false; BlockSize = blockSize; diff --git a/src/TaglibSharp/Flac/Picture.cs b/src/TaglibSharp/Flac/Picture.cs -index 8b6659f..4685ad5 100644 +index 8b6659f..3a41783 100644 --- a/src/TaglibSharp/Flac/Picture.cs +++ b/src/TaglibSharp/Flac/Picture.cs @@ -22,6 +22,7 @@ @@ -440,7 +510,7 @@ index 8b6659f..4685ad5 100644 - if (!(picture is Picture flac_picture)) + if (!(picture is Picture flac_picture)) { -+#if NET47 || NET20 ++#if NET48 || NET20 + try + { + using (System.Drawing.Image ipicture_picture = (Bitmap)((new ImageConverter ()).ConvertFrom (picture.Data.Data))) @@ -464,7 +534,7 @@ diff --git a/src/TaglibSharp/Flac/StreamHeader.cs b/src/TaglibSharp/Flac/StreamH index 5a57bbc..0c4d054 100644 --- a/src/TaglibSharp/Flac/StreamHeader.cs +++ b/src/TaglibSharp/Flac/StreamHeader.cs -@@ -130,6 +130,18 @@ public StreamHeader (ByteVector data, long streamLength) +@@ -130,6 +130,18 @@ public int AudioBitrate { } } @@ -537,7 +607,7 @@ diff --git a/src/TaglibSharp/Id3v2/Tag.cs b/src/TaglibSharp/Id3v2/Tag.cs index 1c3676f..c780d76 100644 --- a/src/TaglibSharp/Id3v2/Tag.cs +++ b/src/TaglibSharp/Id3v2/Tag.cs -@@ -2083,6 +2083,77 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -2083,6 +2083,77 @@ public override string MusicBrainzReleaseCountry { set { SetUserTextAsString ("MusicBrainz Album Release Country", value); } } @@ -619,7 +689,7 @@ diff --git a/src/TaglibSharp/Matroska/AudioTrack.cs b/src/TaglibSharp/Matroska/A index e3ee49e..062f5cf 100644 --- a/src/TaglibSharp/Matroska/AudioTrack.cs +++ b/src/TaglibSharp/Matroska/AudioTrack.cs -@@ -127,6 +127,18 @@ public AudioTrack (File _file, EBMLreader element) +@@ -127,6 +127,18 @@ public int AudioBitrate { get { return 0; } } @@ -642,7 +712,7 @@ diff --git a/src/TaglibSharp/Matroska/Tag.cs b/src/TaglibSharp/Matroska/Tag.cs index 0fc3f7d..bc139ee 100644 --- a/src/TaglibSharp/Matroska/Tag.cs +++ b/src/TaglibSharp/Matroska/Tag.cs -@@ -1248,6 +1248,34 @@ uint GetUint (string key, string subkey = null, bool recu = false) +@@ -1248,6 +1248,34 @@ public override string MusicBrainzReleaseCountry { set { } } @@ -681,7 +751,7 @@ diff --git a/src/TaglibSharp/Mpc/StreamHeader.cs b/src/TaglibSharp/Mpc/StreamHea index 16bb005..987114c 100644 --- a/src/TaglibSharp/Mpc/StreamHeader.cs +++ b/src/TaglibSharp/Mpc/StreamHeader.cs -@@ -361,6 +361,18 @@ ulong ReadSize (ByteVector data, ref int pos) +@@ -361,6 +361,18 @@ public int AudioBitrate { } } @@ -704,7 +774,7 @@ diff --git a/src/TaglibSharp/Mpeg/AudioHeader.cs b/src/TaglibSharp/Mpeg/AudioHea index d18ea77..06a15e1 100644 --- a/src/TaglibSharp/Mpeg/AudioHeader.cs +++ b/src/TaglibSharp/Mpeg/AudioHeader.cs -@@ -356,6 +356,18 @@ public struct AudioHeader : IAudioCodec +@@ -356,6 +356,18 @@ public int AudioBitrate { } } @@ -762,7 +832,7 @@ index 020aab1..ac53ef5 100644 continue; } else { return (AppleDataBox)box.GetChild (BoxType.Data); -@@ -1580,6 +1585,77 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1580,6 +1585,77 @@ public override string MusicBrainzReleaseCountry { set { SetDashBox ("com.apple.iTunes", "MusicBrainz Album Release Country", value); } } @@ -840,7 +910,7 @@ index 020aab1..ac53ef5 100644 /// /// Gets and sets the ReplayGain Track Value of the media represented by /// the current instance. -@@ -1742,21 +1818,21 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1742,21 +1818,21 @@ public override string ISRC { set { SetDashBox ("com.apple.iTunes", "ISRC", value); } } @@ -877,24 +947,11 @@ index 020aab1..ac53ef5 100644 /// /// Gets and sets the Remixer -diff --git a/src/TaglibSharp/Mpeg4/BoxFactory.cs b/src/TaglibSharp/Mpeg4/BoxFactory.cs -index 1c952f6..0fed9f4 100644 ---- a/src/TaglibSharp/Mpeg4/BoxFactory.cs -+++ b/src/TaglibSharp/Mpeg4/BoxFactory.cs -@@ -112,7 +112,7 @@ public static class BoxFactory - return new AppleElementaryStreamDescriptor (header, file, handler); - else if (type == BoxType.Free || type == BoxType.Skip) - return new IsoFreeSpaceBox (header, file, handler); -- else if (type == BoxType.Mean || type == BoxType.Name) -+ else if ((type == BoxType.Mean || type == BoxType.Name) && header.DataSize >= 4) - return new AppleAdditionalInfoBox (header, file, handler); - - // If we still don't have a tag, and we're inside an diff --git a/src/TaglibSharp/Mpeg4/Boxes/IsoAudioSampleEntry.cs b/src/TaglibSharp/Mpeg4/Boxes/IsoAudioSampleEntry.cs index d8f71c3..6f59f99 100644 --- a/src/TaglibSharp/Mpeg4/Boxes/IsoAudioSampleEntry.cs +++ b/src/TaglibSharp/Mpeg4/Boxes/IsoAudioSampleEntry.cs -@@ -189,6 +189,18 @@ public IsoAudioSampleEntry (BoxHeader header, TagLib.File file, IsoHandlerBox ha +@@ -189,6 +189,18 @@ public int AudioBitrate { } } @@ -917,7 +974,7 @@ diff --git a/src/TaglibSharp/Ogg/Codecs/Opus.cs b/src/TaglibSharp/Ogg/Codecs/Opu index a4717cc..68f2219 100644 --- a/src/TaglibSharp/Ogg/Codecs/Opus.cs +++ b/src/TaglibSharp/Ogg/Codecs/Opus.cs -@@ -209,6 +209,18 @@ public override void SetCommentPacket (ByteVectorCollection packets, XiphComment +@@ -209,6 +209,18 @@ public int AudioBitrate { get { return 0; } } @@ -952,7 +1009,7 @@ index 917f9cb..c6c8438 100644 else packets.Insert (1, data); } -@@ -203,6 +207,18 @@ public override void SetCommentPacket (ByteVectorCollection packets, XiphComment +@@ -203,6 +207,18 @@ public int AudioBitrate { } } @@ -975,7 +1032,7 @@ diff --git a/src/TaglibSharp/Ogg/GroupedComment.cs b/src/TaglibSharp/Ogg/Grouped index 80f2a90..2b30997 100644 --- a/src/TaglibSharp/Ogg/GroupedComment.cs +++ b/src/TaglibSharp/Ogg/GroupedComment.cs -@@ -1290,6 +1290,138 @@ public void AddComment (uint streamSerialNumber, ByteVector data) +@@ -1290,6 +1290,138 @@ public override string MusicBrainzReleaseCountry { set { if (tags.Count > 0) tags[0].MusicBrainzReleaseCountry = value; } } @@ -1118,7 +1175,7 @@ diff --git a/src/TaglibSharp/Ogg/XiphComment.cs b/src/TaglibSharp/Ogg/XiphCommen index dd1f98e..102c200 100644 --- a/src/TaglibSharp/Ogg/XiphComment.cs +++ b/src/TaglibSharp/Ogg/XiphComment.cs -@@ -982,6 +982,10 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -982,6 +982,10 @@ public override uint TrackCount { null && uint.TryParse (text, out var value)) return value; @@ -1129,7 +1186,7 @@ index dd1f98e..102c200 100644 if ((text = GetFirstField ("TRACKNUMBER")) != null && (values = text.Split ('/')) .Length > 1 && uint.TryParse ( -@@ -1047,6 +1051,10 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1047,6 +1051,10 @@ public override uint DiscCount { && uint.TryParse (text, out var value)) return value; @@ -1140,7 +1197,7 @@ index dd1f98e..102c200 100644 if ((text = GetFirstField ("DISCNUMBER")) != null && (values = text.Split ('/')) .Length > 1 && uint.TryParse ( -@@ -1400,6 +1408,74 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1400,6 +1408,74 @@ public override string MusicBrainzReleaseCountry { set { SetField ("RELEASECOUNTRY", value); } } @@ -1215,7 +1272,7 @@ index dd1f98e..102c200 100644 /// /// Gets and sets a collection of pictures associated with /// the media represented by the current instance. -@@ -1637,19 +1713,19 @@ IEnumerator IEnumerable.GetEnumerator () +@@ -1637,19 +1713,19 @@ public override string RemixedBy { set { SetField ("REMIXEDBY", value); } } @@ -1252,7 +1309,7 @@ diff --git a/src/TaglibSharp/Properties.cs b/src/TaglibSharp/Properties.cs index befda88..5a6ce9a 100644 --- a/src/TaglibSharp/Properties.cs +++ b/src/TaglibSharp/Properties.cs -@@ -242,6 +242,32 @@ public Properties (TimeSpan duration, IEnumerable codecs) +@@ -242,6 +242,32 @@ public int AudioBitrate { } } @@ -1289,7 +1346,7 @@ diff --git a/src/TaglibSharp/Riff/WaveFormatEx.cs b/src/TaglibSharp/Riff/WaveFor index 360a2b6..03b2873 100644 --- a/src/TaglibSharp/Riff/WaveFormatEx.cs +++ b/src/TaglibSharp/Riff/WaveFormatEx.cs -@@ -179,6 +179,18 @@ public WaveFormatEx (ByteVector data, int offset) +@@ -179,6 +179,18 @@ public int AudioBitrate { } } @@ -1312,7 +1369,7 @@ diff --git a/src/TaglibSharp/Tag.cs b/src/TaglibSharp/Tag.cs index 9e5c00b..4ef6fc5 100644 --- a/src/TaglibSharp/Tag.cs +++ b/src/TaglibSharp/Tag.cs -@@ -1078,6 +1078,66 @@ public abstract class Tag +@@ -1078,6 +1078,66 @@ public virtual string Length { set { } } @@ -1380,7 +1437,7 @@ index 9e5c00b..4ef6fc5 100644 /// Gets and sets a collection of pictures associated with /// the media represented by the current instance. diff --git a/src/TaglibSharp/TaglibSharp.csproj b/src/TaglibSharp/TaglibSharp.csproj -index 88ac00d..aec9676 100644 +index 23bdd8e..cb4bd9c 100644 --- a/src/TaglibSharp/TaglibSharp.csproj +++ b/src/TaglibSharp/TaglibSharp.csproj @@ -1,6 +1,8 @@ @@ -1388,7 +1445,7 @@ index 88ac00d..aec9676 100644 + 2.3.0.0 -+ net47;netstandard2.0 ++ netstandard2.1 $(LibTargetFrameworks) bin\$(Configuration)\$(TargetFramework)\TaglibSharp.xml TagLibSharp diff --git a/collect_files.bat b/collect_files.bat index f65e179e7..5b5d0ceb6 100644 --- a/collect_files.bat +++ b/collect_files.bat @@ -1,140 +1,109 @@ -@ECHO OFF -REM This script collects the built .exe, .dll etc. files required for running CUETools -REM Wolfgang Stöggl , 2020-2025. - -REM The script is located in the subdirectory CUETools -echo %~dp0 -pushd %~dp0 -SET base_dir=. - -REM Get version of CUETools -for /f "tokens=7 delims= " %%a in ('find "CUEToolsVersion =" %base_dir%\CUETools.Processor\CUESheet.cs') do set PRODUCTVER=%%a -REM echo %PRODUCTVER% -REM "2.1.7"; - -REM Remove double quotes and semicolon -set PRODUCTVER=%PRODUCTVER:"=% -set PRODUCTVER=%PRODUCTVER:;=% -echo CUETools version: %PRODUCTVER% - -SET release_dir=%base_dir%\bin\Release\CUETools_%PRODUCTVER% - -mkdir %release_dir% - -REM use xcopy instead of copy. xcopy creates directories if necessary and outputs the copied file -REM /Y Suppresses prompting to confirm that you want to overwrite an existing destination file. -REM /D xcopy copies all Source files that are newer than existing Destination files - -REM 32 files from net47 -xcopy /Y /D %base_dir%\bin\Release\net47\BluTools.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\BluTools.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUEControls.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUERipper.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUERipper.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.AccurateRip.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.ALACEnc.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.ALACEnc.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.ARCUE.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.CDImage.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Codecs.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Compression.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Converter.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.CTDB.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.CTDB.Types.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.eac3to.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.eac3to.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.FLACCL.cmd.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.FLACCL.cmd.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Flake.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Flake.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Parity.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Processor.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Ripper.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Ripper.Console.exe %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Ripper.Console.exe.config %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\DeviceId.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\Freedb.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\ProgressODoom.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\TagLibSharp.dll %release_dir% - -xcopy /Y /D %base_dir%\License.txt %release_dir% -xcopy /Y /D %base_dir%\CUETools\user_profiles_enabled %release_dir% - -xcopy /Y /D %base_dir%\bin\Release\net47\de-DE\* %release_dir%\de-DE\ -xcopy /Y /D %base_dir%\bin\Release\net47\ru-RU\* %release_dir%\ru-RU\ - -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\Bwg.Hardware.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\Bwg.Logging.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\Bwg.Scsi.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.ALAC.dll %release_dir%\plugins\ -REM No more win32\CUETools.Codecs.BDLPCM.dll and win32\CUETools.Codecs.BDLPCM.dll. Instead: CUETools.Codecs.MPEG.dll -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.MPEG.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.FLACCL.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.Flake.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.HDCD.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.libFLAC.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.libmp3lame.dll %release_dir%\plugins\ -REM No more win32\CUETools.Codecs.WavPack.dll and x64\CUETools.Codecs.WavPack.dll. Instead: CUETools.Codecs.libwavpack.dll -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.libwavpack.dll %release_dir%\plugins\ -REM Nor more win32\CUETools.Codecs.APE.dll and x64\CUETools.Codecs.APE.dll. Instead: CUETools.Codecs.MACLib.dll -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.MACLib.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.WMA.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Compression.Zip.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Ripper.SCSI.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\FFmpeg.AutoGen.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\flac.cl %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\OpenCLNet.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\WindowsMediaLib.dll %release_dir%\plugins\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\CUETools.Codecs.ffmpegdll.dll %release_dir%\plugins\ - -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\win32\CUETools.Codecs.TTA.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\win32\CUETools.Compression.Rar.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\x64\CUETools.Codecs.TTA.dll %release_dir%\plugins\x64\ -REM CUETools.Compression.Rar.dll is the same in the win32 and x64 directory of 2.1.7. Copy from win32 -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\win32\CUETools.Compression.Rar.dll %release_dir%\plugins\x64\ - -REM plugins translation files -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\de-DE\* %release_dir%\plugins\de-DE\ -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\ru-RU\* %release_dir%\plugins\ru-RU\ - -REM ThirdParty -xcopy /Y /D %base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll %release_dir%\plugins\ - -REM ThirdParty\Win32 plugins -xcopy /Y /D %base_dir%\ThirdParty\Win32\hdcd.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\libFLAC_dynamic.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\libmp3lame.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\MACLibDll.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\unrar.dll %release_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\wavpackdll.dll %release_dir%\plugins\win32\ - -REM ThirdParty\x64 plugins -xcopy /Y /D %base_dir%\ThirdParty\x64\hdcd.dll %release_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\libFLAC_dynamic.dll %release_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\libmp3lame.dll %release_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\MACLibDll.dll %release_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\Unrar.dll %release_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\wavpackdll.dll %release_dir%\plugins\x64\ - -REM EAC Plugin -REM CUETools.CTDB.Types.dll is also required now -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.AccurateRip.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.CDImage.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.Codecs.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.CTDB.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.CTDB.EACPlugin.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.CTDB.Types.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\CUETools.Parity.dll %release_dir%\interop\EAC\ -xcopy /Y /D %base_dir%\bin\Release\interop\EAC\Newtonsoft.Json.dll %release_dir%\interop\EAC\ - -REM required for running CUERipper: -REM Newtonsoft.Json.dll -xcopy /Y /D %base_dir%\bin\Release\net47\plugins\Newtonsoft.Json.dll %release_dir% - -REM CUETools.LossyWAV.exe was not in 2.1.7 release, added -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.Codecs.LossyWAV.dll %release_dir% -xcopy /Y /D %base_dir%\bin\Release\net47\CUETools.LossyWAV.exe %release_dir% - -popd +@ECHO OFF +REM Collect the built .exe, .dll, .json, and config files required for running CUETools. +REM Wolfgang Stoeggl , 2020-2026. + +REM The script is located in the CUETools repository root. +echo %~dp0 +pushd %~dp0 +SET base_dir=. + +REM Get version of CUETools +for /f "tokens=7 delims= " %%a in ('find "CUEToolsVersion =" %base_dir%\CUETools.Processor\CUESheet.cs') do set PRODUCTVER=%%a +REM echo %PRODUCTVER% +REM "2.1.7"; + +REM Remove double quotes and semicolon +set PRODUCTVER=%PRODUCTVER:"=% +set PRODUCTVER=%PRODUCTVER:;=% +echo CUETools version: %PRODUCTVER% + +SET release_dir=%base_dir%\bin\Release\CUETools_%PRODUCTVER% +SET win_dir=%base_dir%\bin\Release\net10.0-windows +SET cli_dir=%base_dir%\bin\Release\net10.0 +SET lib_dir=%base_dir%\bin\Release\netstandard2.1 + +if not exist "%release_dir%" mkdir "%release_dir%" + +REM use xcopy instead of copy. xcopy creates directories if necessary and outputs the copied file. +REM /Y Suppresses prompting to confirm that you want to overwrite an existing destination file. +REM /D xcopy copies all Source files that are newer than existing Destination files. +REM /I treats the destination as a directory and avoids interactive prompts in batch mode. + +REM Windows applications and their runtime metadata. +xcopy /Y /D /I "%win_dir%\*.exe" "%release_dir%\" +xcopy /Y /D /I "%win_dir%\*.dll" "%release_dir%\" +xcopy /Y /D /I "%win_dir%\*.deps.json" "%release_dir%\" +xcopy /Y /D /I "%win_dir%\*.runtimeconfig.json" "%release_dir%\" +xcopy /Y /D /I "%win_dir%\*.config" "%release_dir%\" +xcopy /Y /D /I "%win_dir%\de-DE\*" "%release_dir%\de-DE\" +xcopy /Y /D /I "%win_dir%\ru-RU\*" "%release_dir%\ru-RU\" + +REM Console tools and their runtime metadata. +xcopy /Y /D /I "%cli_dir%\*.exe" "%release_dir%\" +xcopy /Y /D /I "%cli_dir%\*.dll" "%release_dir%\" +xcopy /Y /D /I "%cli_dir%\*.deps.json" "%release_dir%\" +xcopy /Y /D /I "%cli_dir%\*.runtimeconfig.json" "%release_dir%\" +xcopy /Y /D /I "%cli_dir%\*.config" "%release_dir%\" + +xcopy /Y /D /I "%base_dir%\License.txt" "%release_dir%\" +xcopy /Y /D /I "%base_dir%\CUETools\user_profiles_enabled" "%release_dir%\" + +REM Managed plugins. Most plugins are libraries under netstandard2.1; FLACCL remains Windows-only. +xcopy /Y /D /I /S "%lib_dir%\plugins\*.dll" "%release_dir%\plugins\" +xcopy /Y /D /I /S "%lib_dir%\plugins\*.deps.json" "%release_dir%\plugins\" +xcopy /Y /D /I /S "%win_dir%\plugins\*.dll" "%release_dir%\plugins\" +xcopy /Y /D /I /S "%win_dir%\plugins\*.deps.json" "%release_dir%\plugins\" +xcopy /Y /D /I /S "%win_dir%\plugins\*.cl" "%release_dir%\plugins\" + +REM ThirdParty +IF EXIST "%base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll" "%release_dir%\plugins\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll + +REM ThirdParty\Win32 plugins +IF EXIST "%base_dir%\ThirdParty\Win32\hdcd.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\hdcd.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\hdcd.dll +IF EXIST "%base_dir%\ThirdParty\Win32\libFLAC_dynamic.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\libFLAC_dynamic.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\libFLAC_dynamic.dll +IF EXIST "%base_dir%\ThirdParty\Win32\libmp3lame.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\libmp3lame.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\libmp3lame.dll +IF EXIST "%base_dir%\ThirdParty\Win32\MACLibDll.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\MACLibDll.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\MACLibDll.dll +IF EXIST "%base_dir%\ThirdParty\Win32\unrar.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\unrar.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\unrar.dll +IF EXIST "%base_dir%\ThirdParty\Win32\wavpackdll.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\Win32\wavpackdll.dll" "%release_dir%\plugins\win32\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\Win32\wavpackdll.dll + +REM ThirdParty\x64 plugins +IF EXIST "%base_dir%\ThirdParty\x64\hdcd.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\hdcd.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\hdcd.dll +IF EXIST "%base_dir%\ThirdParty\x64\libFLAC_dynamic.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\libFLAC_dynamic.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\libFLAC_dynamic.dll +IF EXIST "%base_dir%\ThirdParty\x64\libmp3lame.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\libmp3lame.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\libmp3lame.dll +IF EXIST "%base_dir%\ThirdParty\x64\MACLibDll.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\MACLibDll.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\MACLibDll.dll +IF EXIST "%base_dir%\ThirdParty\x64\Unrar.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\Unrar.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\Unrar.dll +IF EXIST "%base_dir%\ThirdParty\x64\wavpackdll.dll" ( + xcopy /Y /D /I "%base_dir%\ThirdParty\x64\wavpackdll.dll" "%release_dir%\plugins\x64\" +) ELSE echo WARNING: Missing %base_dir%\ThirdParty\x64\wavpackdll.dll + +REM EAC Plugin +xcopy /Y /D /I "%win_dir%\interop\EAC\*.dll" "%release_dir%\interop\EAC\" +xcopy /Y /D /I "%win_dir%\interop\EAC\*.deps.json" "%release_dir%\interop\EAC\" +xcopy /Y /D /I "%win_dir%\interop\EAC\*.config" "%release_dir%\interop\EAC\" +xcopy /Y /D /I "%win_dir%\Newtonsoft.Json.dll" "%release_dir%\interop\EAC\" + +popd diff --git a/collect_files_debug.bat b/collect_files_debug.bat index 570a4305d..dac9b9c93 100644 --- a/collect_files_debug.bat +++ b/collect_files_debug.bat @@ -1,42 +1,57 @@ -@ECHO OFF -REM This script collects built .dll and .pdb files from ThirdParty for debugging CUETools. -REM Wolfgang Stöggl , 2020-2025. - -REM The script is located in the subdirectory CUETools -echo %~dp0 -pushd %~dp0 -SET base_dir=. -SET debug_dir=%base_dir%\bin\Debug\net47 - -REM use xcopy instead of copy. xcopy creates directories if necessary and outputs the copied file -REM /Y Suppresses prompting to confirm that you want to overwrite an existing destination file. -REM /D xcopy copies all Source files that are newer than existing Destination files - -REM xcopy /Y /D %base_dir%\CUETools\user_profiles_enabled %debug_dir% - -REM ThirdParty -xcopy /Y /D %base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll %debug_dir%\plugins\ - -REM ThirdParty\Win32 plugins -xcopy /Y /D %base_dir%\ThirdParty\Win32\hdcd.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\libFLAC_dynamic.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\libFLAC_dynamic.pdb %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\libmp3lame.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\MACLibDll.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\MACLibDll.pdb %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdParty\Win32\unrar.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\wavpackdll.dll %debug_dir%\plugins\win32\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\Win32\wavpackdll.pdb %debug_dir%\plugins\win32\ - -REM ThirdParty\x64 plugins -xcopy /Y /D %base_dir%\ThirdParty\x64\hdcd.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\libFLAC_dynamic.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\libFLAC_dynamic.pdb %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\libmp3lame.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\MACLibDll.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\MACLibDll.pdb %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdParty\x64\Unrar.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\wavpackdll.dll %debug_dir%\plugins\x64\ -xcopy /Y /D %base_dir%\ThirdPartyDebug\x64\wavpackdll.pdb %debug_dir%\plugins\x64\ - -popd +@ECHO OFF +REM Collect native ThirdParty .dll and .pdb files for debugging CUETools. +REM Wolfgang Stoeggl , 2020-2026. + +REM The script is located in the CUETools repository root. +echo %~dp0 +pushd %~dp0 +SET base_dir=. +SET debug_win_dir=%base_dir%\bin\Debug\net10.0-windows +SET debug_lib_dir=%base_dir%\bin\Debug\netstandard2.1 + +REM use xcopy instead of copy. xcopy creates directories if necessary and outputs the copied file. +REM /Y Suppresses prompting to confirm that you want to overwrite an existing destination file. +REM /D xcopy copies all Source files that are newer than existing Destination files. + +call :copy_native "%debug_win_dir%" +call :copy_native "%debug_lib_dir%" + +popd +goto :eof + +:copy_native +SET target_dir=%~1 + +REM ThirdParty +call :copy_file "%base_dir%\ThirdParty\ICSharpCode.SharpZipLib.dll" "%target_dir%\plugins\" + +REM ThirdParty\Win32 plugins +call :copy_file "%base_dir%\ThirdParty\Win32\hdcd.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\libFLAC_dynamic.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\libFLAC_dynamic.pdb" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdParty\Win32\libmp3lame.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\MACLibDll.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\MACLibDll.pdb" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdParty\Win32\unrar.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\wavpackdll.dll" "%target_dir%\plugins\win32\" +call :copy_file "%base_dir%\ThirdPartyDebug\Win32\wavpackdll.pdb" "%target_dir%\plugins\win32\" + +REM ThirdParty\x64 plugins +call :copy_file "%base_dir%\ThirdParty\x64\hdcd.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\libFLAC_dynamic.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\libFLAC_dynamic.pdb" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdParty\x64\libmp3lame.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\MACLibDll.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\MACLibDll.pdb" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdParty\x64\Unrar.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\wavpackdll.dll" "%target_dir%\plugins\x64\" +call :copy_file "%base_dir%\ThirdPartyDebug\x64\wavpackdll.pdb" "%target_dir%\plugins\x64\" +exit /b 0 + +:copy_file +if exist "%~1" ( + xcopy /Y /D /I "%~1" "%~2" +) else ( + echo WARNING: Missing %~1 +) +exit /b 0 diff --git a/global.json b/global.json new file mode 100644 index 000000000..17d728e19 --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "10.0.300", + "rollForward": "latestFeature", + "allowPrerelease": false + } +}