Skip to content

Commit e80c3c2

Browse files
authored
Remove .NET 9 and add .NET 10; remove .NET Framework 4.6.2 which is still being covered by .NET standard 2.0 (#825)
* Remove .NET 9 and add .NET 10 * Ensure codeql has .net 10 * Remove .NET Framework target 4.6.2, since it is already covered by .NET Standard 2.0 * Fix indentation
1 parent 81fa303 commit e80c3c2

File tree

10 files changed

+159
-26
lines changed

10 files changed

+159
-26
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ jobs:
4040
- name: Checkout repository
4141
uses: actions/checkout@v4
4242

43-
- name: Setup .NET 9
44-
uses: actions/setup-dotnet@v1
43+
- name: Setup .NET
44+
uses: actions/setup-dotnet@v4
4545
with:
46-
dotnet-version: 9.0.x
46+
dotnet-version: |
47+
8.0.x
48+
10.0.x
4749
4850
# Initializes the CodeQL tools for scanning.
4951
- name: Initialize CodeQL

.github/workflows/dotnet.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@ jobs:
1313

1414
steps:
1515
- uses: actions/checkout@v4
16-
- name: Setup .NET 8
16+
- name: Setup .NET
1717
uses: actions/setup-dotnet@v4
1818
with:
19-
dotnet-version: 8.0.x
20-
- name: Setup .NET 9
21-
uses: actions/setup-dotnet@v4
22-
with:
23-
dotnet-version: 9.0.x
19+
dotnet-version: |
20+
8.0.x
21+
10.0.x
2422
- name: Restore dependencies
2523
run: dotnet restore
2624
env:

benchmarks/MiniExcel.Benchmarks/MiniExcel.Benchmarks.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
5+
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
<LangVersion>latest</LangVersion>

src/MiniExcel/MiniExcelLibs.csproj

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net462;netstandard2.0;net8.0;net9.0</TargetFrameworks>
3+
<TargetFrameworks>netstandard2.0;net8.0;net10.0</TargetFrameworks>
44
<Version>2.0.0-beta.1</Version>
55
<Nullable>enable</Nullable>
66
</PropertyGroup>
7-
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net462'">
7+
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
88
<LangVersion>13</LangVersion>
99
</PropertyGroup>
1010

@@ -40,10 +40,7 @@ Todo : https://github.com/mini-software/MiniExcel/projects/1?fullscreen=true</De
4040
<PackageReadmeFile>README.md</PackageReadmeFile>
4141
</PropertyGroup>
4242

43-
<ItemGroup Condition=" '$(TargetFramework)' == 'net462'">
44-
<Reference Include="System.IO.Compression" />
45-
</ItemGroup>
46-
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net462'">
43+
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
4744
<PackageReference Include="Microsoft.Bcl.Memory" Version="9.0.0" />
4845
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.0" />
4946
</ItemGroup>

src/MiniExcel/OpenXml/ExcelOpenXmlSheetReader.cs

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,11 @@ public static async Task<ExcelOpenXmlSheetReader> CreateAsync(Stream stream, IMi
172172
maxColumnIndex = endColumnIndex.Value;
173173
}
174174

175+
#if NET10_0_OR_GREATER
176+
using var sheetStream = await sheetEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
177+
#else
175178
using var sheetStream = sheetEntry.Open();
179+
#endif
176180
using var reader = XmlReader.Create(sheetStream, xmlSettings);
177181

178182
if (!XmlReaderHelper.IsStartElement(reader, "worksheet", Ns))
@@ -491,7 +495,11 @@ private async Task SetSharedStringsAsync(CancellationToken cancellationToken = d
491495
return;
492496

493497
var idx = 0;
498+
#if NET10_0_OR_GREATER
499+
using var stream = await sharedStringsEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
500+
#else
494501
using var stream = sharedStringsEntry.Open();
502+
#endif
495503
if (_config.EnableSharedStringCache && sharedStringsEntry.Length >= _config.SharedStringCacheSize)
496504
{
497505
SharedStrings = new SharedStringsDiskCache();
@@ -525,8 +533,13 @@ internal static async IAsyncEnumerable<SheetRecord> ReadWorkbookAsync(ReadOnlyCo
525533
true
526534
#endif
527535
);
528-
529-
using var stream = entries.Single(w => w.FullName == "xl/workbook.xml").Open();
536+
537+
var entry = entries.Single(w => w.FullName == "xl/workbook.xml");
538+
#if NET10_0_OR_GREATER
539+
using var stream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false);
540+
#else
541+
using var stream = entry.Open();
542+
#endif
530543
using var reader = XmlReader.Create(stream, xmlSettings);
531544

532545
if (!XmlReaderHelper.IsStartElement(reader, "workbook", Ns))
@@ -616,7 +629,12 @@ await reader.SkipAsync()
616629
.CreateListAsync(cancellationToken)
617630
.ConfigureAwait(false);
618631

619-
using var stream = entries.Single(w => w.FullName == "xl/_rels/workbook.xml.rels").Open();
632+
var entry = entries.Single(w => w.FullName == "xl/_rels/workbook.xml.rels");
633+
#if NET10_0_OR_GREATER
634+
using var stream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false);
635+
#else
636+
using var stream = entry.Open();
637+
#endif
620638
using var reader = XmlReader.Create(stream, xmlSettings);
621639

622640
if (!XmlReaderHelper.IsStartElement(reader, "Relationships", "http://schemas.openxmlformats.org/package/2006/relationships"))
@@ -836,7 +854,11 @@ internal async Task<IList<ExcelRange>> GetDimensionsAsync(CancellationToken canc
836854

837855
var withoutCr = false;
838856

857+
#if NET10_0_OR_GREATER
858+
using (var sheetStream = await sheet.OpenAsync(cancellationToken).ConfigureAwait(false))
859+
#else
839860
using (var sheetStream = sheet.Open())
861+
#endif
840862
using (var reader = XmlReader.Create(sheetStream, xmlSettings))
841863
{
842864
while (await reader.ReadAsync().ConfigureAwait(false))
@@ -884,7 +906,11 @@ internal async Task<IList<ExcelRange>> GetDimensionsAsync(CancellationToken canc
884906

885907
if (withoutCr)
886908
{
909+
#if NET10_0_OR_GREATER
910+
using var sheetStream = await sheet.OpenAsync(cancellationToken).ConfigureAwait(false);
911+
#else
887912
using var sheetStream = sheet.Open();
913+
#endif
888914
using var reader = XmlReader.Create(sheetStream, xmlSettings);
889915

890916
if (!XmlReaderHelper.IsStartElement(reader, "worksheet", Ns))
@@ -978,7 +1004,11 @@ internal static async Task<GetMaxRowColumnIndexResult> TryGetMaxRowColumnIndexAs
9781004
bool withoutCr = false;
9791005
int maxRowIndex = -1;
9801006
int maxColumnIndex = -1;
1007+
#if NET10_0_OR_GREATER
1008+
using (var sheetStream = await sheetEntry.OpenAsync(cancellationToken).ConfigureAwait(false))
1009+
#else
9811010
using (var sheetStream = sheetEntry.Open())
1011+
#endif
9821012
using (var reader = XmlReader.Create(sheetStream, xmlSettings))
9831013
{
9841014
while (await reader.ReadAsync()
@@ -1028,7 +1058,11 @@ internal static async Task<GetMaxRowColumnIndexResult> TryGetMaxRowColumnIndexAs
10281058

10291059
if (withoutCr)
10301060
{
1061+
#if NET10_0_OR_GREATER
1062+
using var sheetStream = await sheetEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
1063+
#else
10311064
using var sheetStream = sheetEntry.Open();
1065+
#endif
10321066
using var reader = XmlReader.Create(sheetStream, xmlSettings);
10331067

10341068
if (!XmlReaderHelper.IsStartElement(reader, "worksheet", Ns))
@@ -1101,8 +1135,12 @@ internal static async Task<bool> TryGetMergeCellsAsync(ZipArchiveEntry sheetEntr
11011135
#endif
11021136
);
11031137
var mergeCells = new MergeCells();
1104-
1138+
1139+
#if NET10_0_OR_GREATER
1140+
using var sheetStream = await sheetEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
1141+
#else
11051142
using var sheetStream = sheetEntry.Open();
1143+
#endif
11061144
using var reader = XmlReader.Create(sheetStream, xmlSettings);
11071145

11081146
if (!XmlReaderHelper.IsStartElement(reader, "worksheet", Ns))

src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,11 @@ public async Task<int[]> SaveAsAsync(CancellationToken cancellationToken = defau
7878
}
7979
finally
8080
{
81+
#if NET10_0_OR_GREATER
82+
await _archive.DisposeAsync().ConfigureAwait(false);
83+
#else
8184
_archive.Dispose();
85+
#endif
8286
}
8387
}
8488

@@ -156,7 +160,11 @@ public async Task<int> InsertAsync(bool overwriteSheet = false, CancellationToke
156160
}
157161
finally
158162
{
163+
#if NET10_0_OR_GREATER
164+
await _archive.DisposeAsync().ConfigureAwait(false);
165+
#else
159166
_archive.Dispose();
167+
#endif
160168
}
161169
}
162170

@@ -176,7 +184,11 @@ private async Task<int> CreateSheetXmlAsync(object? values, string sheetPath, Ca
176184
var entry = _archive.CreateEntry(sheetPath, CompressionLevel.Fastest);
177185
var rowsWritten = 0;
178186

187+
#if NET10_0_OR_GREATER
188+
using var zipStream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false);
189+
#else
179190
using var zipStream = entry.Open();
191+
#endif
180192
using var writer = new MiniExcelStreamWriter(zipStream, Utf8WithBom, _configuration.BufferSize);
181193

182194
if (values is null)
@@ -597,7 +609,11 @@ private async Task InsertContentTypesXmlAsync(CancellationToken cancellationToke
597609
}
598610
#if NET5_0_OR_GREATER
599611
#pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task
600-
await using var stream = contentTypesZipEntry.Open();
612+
#if NET10_0_OR_GREATER
613+
await using var stream = await contentTypesZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
614+
#else
615+
await using var stream = contentTypesZipEntry.Open();
616+
#endif
601617
#pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task
602618
#else
603619
using var stream = contentTypesZipEntry.Open();
@@ -645,7 +661,11 @@ private async Task CreateZipEntryAsync(string path, string? contentType, string
645661

646662
#if NET5_0_OR_GREATER
647663
#pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task
664+
#if NET10_0_OR_GREATER
665+
await using (var zipStream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false))
666+
#else
648667
await using (var zipStream = entry.Open())
668+
#endif
649669
#pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task
650670
#else
651671
using (var zipStream = entry.Open())
@@ -666,7 +686,11 @@ private async Task CreateZipEntryAsync(string path, byte[] content, Cancellation
666686

667687
#if NET5_0_OR_GREATER
668688
#pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task
689+
#if NET10_0_OR_GREATER
690+
await using var zipStream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false);
691+
#else
669692
await using var zipStream = entry.Open();
693+
#endif
670694
await zipStream.WriteAsync(content, cancellationToken).ConfigureAwait(false);
671695
#pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task
672696
#else

src/MiniExcel/OpenXml/Styles/SheetStyleBuildContext.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,20 @@ public async Task InitializeAsync(SheetStyleElementInfos generateElementInfos, C
101101
_oldStyleXmlZipEntry = _archive.Mode == ZipArchiveMode.Update ? _archive.Entries.SingleOrDefault(s => s.FullName == ExcelFileNames.Styles) : null;
102102
if (_oldStyleXmlZipEntry is not null)
103103
{
104+
#if NET10_0_OR_GREATER
105+
using (var oldStyleXmlStream = await _oldStyleXmlZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false))
106+
#else
104107
using (var oldStyleXmlStream = _oldStyleXmlZipEntry.Open())
108+
#endif
105109
{
106110
using var reader = XmlReader.Create(oldStyleXmlStream, new XmlReaderSettings { IgnoreWhitespace = true, Async = true });
107111
OldElementInfos = await ReadSheetStyleElementInfosAsync(reader, cancellationToken).ConfigureAwait(false);
108112
}
113+
#if NET10_0_OR_GREATER
114+
_oldXmlReaderStream = await _oldStyleXmlZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
115+
#else
109116
_oldXmlReaderStream = _oldStyleXmlZipEntry.Open();
117+
#endif
110118
OldXmlReader = XmlReader.Create(_oldXmlReaderStream, new XmlReaderSettings { IgnoreWhitespace = true, Async = true });
111119

112120
_newStyleXmlZipEntry = _archive.CreateEntry(ExcelFileNames.Styles + ".temp", CompressionLevel.Fastest);
@@ -120,7 +128,11 @@ public async Task InitializeAsync(SheetStyleElementInfos generateElementInfos, C
120128
_newStyleXmlZipEntry = _archive.CreateEntry(ExcelFileNames.Styles, CompressionLevel.Fastest);
121129
}
122130

131+
#if NET10_0_OR_GREATER
132+
_newXmlWriterStream = await _newStyleXmlZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
133+
#else
123134
_newXmlWriterStream = _newStyleXmlZipEntry.Open();
135+
#endif
124136
NewXmlWriter = XmlWriter.Create(_newXmlWriterStream, new XmlWriterSettings { Indent = true, Encoding = _encoding, Async = true });
125137

126138
GenerateElementInfos = generateElementInfos;
@@ -243,8 +255,16 @@ public async Task FinalizeAndUpdateZipDictionaryAsync(CancellationToken cancella
243255
_oldStyleXmlZipEntry = null;
244256
var finalStyleXmlZipEntry = _archive.CreateEntry(ExcelFileNames.Styles, CompressionLevel.Fastest);
245257

258+
#if NET10_0_OR_GREATER
259+
using (var tempStream = await _newStyleXmlZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false))
260+
#else
246261
using (var tempStream = _newStyleXmlZipEntry.Open())
262+
#endif
263+
#if NET10_0_OR_GREATER
264+
using (var newStream = await finalStyleXmlZipEntry.OpenAsync(cancellationToken).ConfigureAwait(false))
265+
#else
247266
using (var newStream = finalStyleXmlZipEntry.Open())
267+
#endif
248268
{
249269
await tempStream.CopyToAsync(newStream, 4096, cancellationToken).ConfigureAwait(false);
250270
}

src/MiniExcel/Picture/MiniExcelPictureImplement.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,17 @@ public static async Task AddPictureAsync(Stream excelStream, CancellationToken c
148148
var imageName = $"image{Guid.NewGuid():N}.png";
149149
var imagePath = $"xl/media/{imageName}";
150150
var imageEntry = archive.CreateEntry(imagePath);
151-
152-
using (var entryStream = imageEntry.Open())
151+
152+
#if NET10_0_OR_GREATER
153+
using var entryStream = await imageEntry.OpenAsync(cancellationToken).ConfigureAwait(false);
154+
#else
155+
using var entryStream = imageEntry.Open();
156+
#endif
157+
#if NET5_0_OR_GREATER
158+
await entryStream.WriteAsync(imageBytes.AsMemory(), cancellationToken).ConfigureAwait(false);
159+
#else
160+
await entryStream.WriteAsync(imageBytes, 0, imageBytes.Length, cancellationToken).ConfigureAwait(false);
161+
#endif
153162
{
154163
#pragma warning disable CA1835
155164
await entryStream.WriteAsync(imageBytes, 0, imageBytes.Length, CancellationToken.None).ConfigureAwait(false);

src/MiniExcel/SaveByTemplate/ExcelOpenXmlTemplate.MergeCells.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,27 @@ await stream.CopyToAsync(_outputFileStream
5555
_xMergeCellInfos = [];
5656
_newXMergeCellInfos = [];
5757

58+
#if NET10_0_OR_GREATER
59+
var sheetStream = await sheet.OpenAsync(cancellationToken).ConfigureAwait(false);
60+
#else
5861
var sheetStream = sheet.Open();
62+
#endif
5963
var fullName = sheet.FullName;
6064

6165
var entry = archive.ZipFile.CreateEntry(fullName);
66+
#if NET10_0_OR_GREATER
67+
using var zipStream = await entry.OpenAsync(cancellationToken).ConfigureAwait(false);
68+
#else
6269
using var zipStream = entry.Open();
70+
#endif
6371
await GenerateSheetXmlImplByUpdateModeAsync(sheet, zipStream, sheetStream, new Dictionary<string, object>(), sharedStrings, mergeCells: true, cancellationToken).ConfigureAwait(false);
6472
//doc.Save(zipStream); //don't do it beacause: https://user-images.githubusercontent.com/12729184/114361127-61a5d100-9ba8-11eb-9bb9-34f076ee28a2.png
6573
}
6674

75+
#if NET10_0_OR_GREATER
76+
await archive.ZipFile.DisposeAsync().ConfigureAwait(false);
77+
#else
6778
archive.ZipFile.Dispose();
79+
#endif
6880
}
6981
}

0 commit comments

Comments
 (0)