mirror of
https://github.com/nsnail/ns-ext.git
synced 2025-06-20 05:08:15 +08:00
Compare commits
21 Commits
398dcd0f18
...
v2.1.0
Author | SHA1 | Date | |
---|---|---|---|
bca2b60636 | |||
ddf07fce57 | |||
00164b02d9 | |||
246c666788 | |||
cd779c8797 | |||
51063bacfe | |||
fa3aa0527e | |||
a9cb90464d | |||
879388409c | |||
962e82dd9b | |||
3e0f4a5693 | |||
f15ea13782 | |||
a286329fa5 | |||
52d554347c | |||
897df5838e | |||
095a14c96b | |||
2581d878ba | |||
9c5d89c169 | |||
acce7e0a74 | |||
cc703816ca | |||
cf2988b389 |
35
.github/workflows/ci.yml
vendored
35
.github/workflows/ci.yml
vendored
@ -5,7 +5,7 @@ on:
|
||||
- v*
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -14,17 +14,15 @@ jobs:
|
||||
- uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 8.0.x
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
||||
restore-keys: ${{ runner.os }}-nuget
|
||||
- working-directory: ./src/backend/NSExt
|
||||
run: dotnet publish NSExt.csproj -f net8.0-windows -r win-x64 -c Release
|
||||
run: dotnet build -c Release -f net6.0
|
||||
- working-directory: ./src/backend/NSExt
|
||||
run: dotnet publish NSExt.csproj -f net8.0 -r linux-x64 -c Release
|
||||
run: dotnet build -c Release -f net7.0
|
||||
- working-directory: ./src/backend/NSExt
|
||||
run: dotnet build -c Release -f net8.0
|
||||
- working-directory: ./src/backend/NSExt
|
||||
run: dotnet pack -c Release --no-build
|
||||
- uses: actions/create-release@v1
|
||||
id: create_release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@ -32,19 +30,6 @@ jobs:
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
- uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./dist/backend/NSExt/bin/Release/net8.0-windows/win-x64/publish/dot.exe
|
||||
asset_name: dot-win-x64.exe
|
||||
asset_content_type: application/octet-stream
|
||||
- uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./dist/backend/NSExt/bin/Release/net8.0/linux-x64/publish/dot
|
||||
asset_name: dot-linux-x64
|
||||
asset_content_type: application/octet-stream
|
||||
- id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v}
|
||||
- run: dotnet nuget push ./dist/backend/NSExt/bin/Release/NSExt.${{ steps.get_version.outputs.VERSION }}.nupkg --skip-duplicate --api-key ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json
|
14
CHANGELOG.md
Normal file
14
CHANGELOG.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
## [2.1.0](https://github.com/nsnail/NSExt/compare/v2.0.11...v2.1.0) (2024-03-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* ✨ 异步累加器函数 ([ddf07fc](https://github.com/nsnail/NSExt/commit/ddf07fce5732e576db1512f870196c20f7b297e2))
|
||||
|
||||
### [2.0.11](https://github.com/nsnail/NSExt/compare/v2.0.10...v2.0.11) (2023-12-15)
|
||||
|
||||
### [2.0.10](https://github.com/nsnail/NSExt/compare/v2.0.9...v2.0.10) (2023-12-14)
|
@ -21,6 +21,7 @@
|
||||
<Product>NSExt</Product>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/nsnail/NSExt.git</RepositoryUrl>
|
||||
<RootNamespace>NSExt</RootNamespace>
|
||||
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
|
||||
<Title>$(AssemblyName)</Title>
|
||||
</PropertyGroup>
|
||||
|
@ -13,13 +13,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
|
||||
.editorconfig = .editorconfig
|
||||
.gitattributes = .gitattributes
|
||||
.gitignore = .gitignore
|
||||
CHANGELOG.md = CHANGELOG.md
|
||||
Directory.Build.props = Directory.Build.props
|
||||
dotnet-tools.json = dotnet-tools.json
|
||||
global.json = global.json
|
||||
key.snk = key.snk
|
||||
LICENSE = LICENSE
|
||||
NSExt.sln.DotSettings = NSExt.sln.DotSettings
|
||||
NuGet.Config = NuGet.Config
|
||||
nuget.config = nuget.config
|
||||
package.json = package.json
|
||||
README.md = README.md
|
||||
README.zh-CN.md = README.zh-CN.md
|
||||
@ -27,14 +28,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
1.git.pull.request.ps1 = scripts/1.git.pull.request.ps1
|
||||
2.git.release.ps1 = scripts/2.git.release.ps1
|
||||
3.git.recreate.branch.ps1 = scripts/3.git.recreate.branch.ps1
|
||||
clean.ln.csx = scripts/clean.ln.csx
|
||||
code.clean.csx = scripts/code.clean.csx
|
||||
code.clean.ps1 = scripts/code.clean.ps1
|
||||
gen.cs.tt = scripts/gen.cs.tt
|
||||
gen.ln.cmd = scripts/gen.ln.cmd
|
||||
gen.resx.tt = scripts/gen.resx.tt
|
||||
git.pr.ps1 = scripts/git.pr.ps1
|
||||
git.rc.ps1 = scripts/git.rc.ps1
|
||||
image.optimize.csx = scripts/image.optimize.csx
|
||||
install.as.tpl.ps1 = scripts/install.as.tpl.ps1
|
||||
rename.csx = scripts/rename.csx
|
||||
@ -56,6 +58,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{8E4C93BA
|
||||
code.quality.props = build/code.quality.props
|
||||
copy.pkg.xml.comment.files.targets = build/copy.pkg.xml.comment.files.targets
|
||||
minver.targets = build/minver.targets
|
||||
nuget.package.props = build/nuget.package.props
|
||||
prebuild.targets = build/prebuild.targets
|
||||
stylecop.analyzers.ruleset = build/stylecop.analyzers.ruleset
|
||||
EndProjectSection
|
||||
|
@ -11,19 +11,19 @@
|
||||
<WarningsAsErrors>true</WarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507">
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.9.1-alpha">
|
||||
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.9.28">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Roslynator.Analyzers" Version="4.7.0">
|
||||
<PackageReference Include="Roslynator.Analyzers" Version="4.11.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.15.0.81779">
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.20.0.85982">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
20
build/nuget.package.props
Normal file
20
build/nuget.package.props
Normal file
@ -0,0 +1,20 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<AssemblyOriginatorKeyFile>../../../key.snk</AssemblyOriginatorKeyFile>
|
||||
<DelaySign>false</DelaySign>
|
||||
<EmbedAllSources>true</EmbedAllSources>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<IsPackable>true</IsPackable>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageTags>extensions</PackageTags>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="../../../assets/logo.png" Pack="true" PackagePath="/"/>
|
||||
<None Include="../../../README.md" Pack="true" PackagePath="/"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -7,24 +7,6 @@
|
||||
"commands": [
|
||||
"t4"
|
||||
]
|
||||
},
|
||||
"dotnet-script": {
|
||||
"version": "1.5.0",
|
||||
"commands": [
|
||||
"dotnet-script"
|
||||
]
|
||||
},
|
||||
"jetbrains.resharper.globaltools": {
|
||||
"version": "2023.3.0",
|
||||
"commands": [
|
||||
"jb"
|
||||
]
|
||||
},
|
||||
"dnt": {
|
||||
"version": "1.8.3",
|
||||
"commands": [
|
||||
"dnt"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "2.0.1",
|
||||
"version": "2.1.0",
|
||||
"devDependencies": {
|
||||
"cz-git": "^1.7.1",
|
||||
"commitizen": "^4.3.0",
|
||||
|
@ -5,7 +5,7 @@ git add ../
|
||||
../node_modules/.bin/git-cz.ps1
|
||||
git pull
|
||||
git push --set-upstream origin $branch
|
||||
Start-Process -FilePath "https://github.com/nsnail/dot/compare/main...$branch"
|
||||
Start-Process -FilePath "https://github.com/nsnail/NSExt/compare/main...$branch"
|
||||
Write-Host "按『Enter』重建分支,『Ctrl+C』退出"
|
||||
Pause
|
||||
./git.rc.ps1
|
||||
./3.git.recreate.branch.ps1
|
28
scripts/2.git.release.ps1
Normal file
28
scripts/2.git.release.ps1
Normal file
@ -0,0 +1,28 @@
|
||||
cd ..
|
||||
$types = @{
|
||||
'1' = @('major', '主版本')
|
||||
'2' = @('minor', '此版本')
|
||||
'3' = @('patch', '修订版本')
|
||||
}
|
||||
$prefix = ''
|
||||
while ($null -eq $types[$prefix])
|
||||
{
|
||||
$prefix = Read-Host "请选择版本类型`n" $( & { param($i) $i | ForEach-Object { "$_ : $( $types[$_][0] )($( $types[$_][1] ))`n" } } $types.Keys | Sort-Object )
|
||||
}
|
||||
git checkout main
|
||||
git branch -D release
|
||||
git checkout -b release
|
||||
./node_modules/.bin/standard-version -r $types[$prefix][0]
|
||||
cd ./scripts
|
||||
./code.clean.ps1
|
||||
git commit --amend --no-edit -a
|
||||
$tag = $(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
git tag -d $tag
|
||||
git tag $tag
|
||||
git push --tags origin release
|
||||
Start-Process -FilePath "https://github.com/nsnail/NSExt/compare/main...release"
|
||||
Write-Host "按『Enter』回到主分支,『Ctrl+C』退出"
|
||||
Pause
|
||||
git checkout main
|
||||
git pull
|
||||
git branch -D release
|
@ -1,4 +1,4 @@
|
||||
dotnet jb cleanupcode --no-build --include = $( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../NSExt.sln
|
||||
jb cleanupcode --no-build --include = $( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../NSExt.sln
|
||||
dot rbom -w -e refs -e .git -e node_modules ../
|
||||
dot trim -w -e refs -e .git -e node_modules ../
|
||||
dot tolf -w -e refs -e .git -e node_modules ../
|
@ -1 +1 @@
|
||||
dotnet jb cleanupcode --no-build ../NSExt.sln
|
||||
jb cleanupcode --no-build ../NSExt.sln
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"solution": "NSExt.sln",
|
||||
"mappings": {
|
||||
"NSExt": "../refs/ns-ext/src/NSExt/NSExt.csproj"
|
||||
},
|
||||
"restore": [
|
||||
{
|
||||
"name": "NSExt",
|
||||
"packages": [
|
||||
{
|
||||
"packageName": "NSExt",
|
||||
"version": "1.1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
# https://github.com/RicoSuter/DNT#switch-to-projects
|
||||
$targets = @{
|
||||
'1' = 'switch-to-projects'
|
||||
'2' = 'switch-to-packages'
|
||||
}
|
||||
$key = ''
|
||||
while ($null -eq $targets[$key])
|
||||
{
|
||||
$key = 读取-Host '请选择:1(切换到项目引用) 2(切换到Nuget包引用)'
|
||||
}
|
||||
$files = Get-ChildItem Switcher.*.json
|
||||
$file = 9999
|
||||
while ($null -eq $files[[int]$file - 1])
|
||||
{
|
||||
$i = 0
|
||||
Write-Host '请选择要切换的配置文件文件'
|
||||
foreach ($file in $files)
|
||||
{
|
||||
$i++
|
||||
Write-Host $i $file.Name
|
||||
}
|
||||
$file = 读取-Host
|
||||
}
|
||||
$file = [int]$file - 1
|
||||
Copy-Item $files[$file] 'switcher.json' -Force
|
||||
dotnet dnt $targets[$key] ../NSExt.sln
|
||||
Remove-Item switcher.json
|
@ -1,11 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<ItemGroup>
|
||||
<PackageReference Include="xunit" Version="2.6.3"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.5">
|
||||
<PackageReference Include="xunit" Version="2.7.0"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0">
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.1">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
|
@ -19,7 +19,7 @@ public sealed class ResourceDescriptionAttribute<T> : Attribute
|
||||
/// <summary>
|
||||
/// 资源名称
|
||||
/// </summary>
|
||||
public string ResourceName { get; set; }
|
||||
public string ResourceName { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 资源对象
|
||||
|
@ -5,6 +5,26 @@ namespace NSExt.Extensions;
|
||||
/// </summary>
|
||||
public static class EnumerableExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 异步累加器函数
|
||||
/// </summary>
|
||||
/// <exception cref="InvalidOperationException">InvalidOperationException</exception>
|
||||
public static async Task<TSource> AggregateAsync<TSource>( //
|
||||
this IEnumerable<TSource> source, Func<TSource, TSource, Task<TSource>> func)
|
||||
{
|
||||
using var e = source.GetEnumerator();
|
||||
if (!e.MoveNext()) {
|
||||
throw new InvalidOperationException("Sequence contains no elements");
|
||||
}
|
||||
|
||||
var result = e.Current;
|
||||
while (e.MoveNext()) {
|
||||
result = await func(result, e.Current).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将列表转成分隔符分隔的字符串
|
||||
/// </summary>
|
||||
|
@ -26,7 +26,7 @@ public static class StreamExtensions
|
||||
public static bool IsTextStream(this Stream me)
|
||||
{
|
||||
#pragma warning disable IDE0300
|
||||
return me.FirstByteIndex(new byte[] { 0x00, 0xff }) < 0;
|
||||
return me.FirstByteIndex([0x00, 0xff]) < 0;
|
||||
#pragma warning restore IDE0300
|
||||
}
|
||||
}
|
@ -1,29 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyOriginatorKeyFile>../../../key.snk</AssemblyOriginatorKeyFile>
|
||||
<DelaySign>false</DelaySign>
|
||||
<EmbedAllSources>true</EmbedAllSources>
|
||||
<EmbedUntrackedSource>true</EmbedUntrackedSource>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<IsPackable>true</IsPackable>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/nsnail/NSExt.git</PackageProjectUrl>
|
||||
<PackageTags>extensions</PackageTags>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<RootNamespace>NSExt</RootNamespace>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)/build/code.quality.props"/>
|
||||
<Import Project="$(SolutionDir)/build/nuget.package.props"/>
|
||||
<Import Project="$(SolutionDir)/build/copy.pkg.xml.comment.files.targets"/>
|
||||
<Import Project="$(SolutionDir)/build/prebuild.targets"/>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="../../../assets/logo.png" Pack="true" PackagePath=""/>
|
||||
<None Update="*.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
Reference in New Issue
Block a user