diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index 055abef0a..b406a16d1 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -1,8 +1,6 @@
name: Build
on:
- push:
- branches: [ main ]
pull_request:
branches: [ main ]
@@ -16,53 +14,37 @@ jobs:
outputs:
nbgv: ${{ steps.nbgv.outputs.SemVer2 }}
steps:
- - name: Get Current Visual Studio Information
- shell: bash
- run: |
- dotnet tool update -g dotnet-vs
- echo "## About RELEASE ##"
- vs where release
-
- - name: Update Visual Studio Latest Release
- shell: bash
- run: |
- echo "## Update RELEASE ##"
- vs update release Enterprise
- vs modify release Enterprise +mobile +desktop +uwp +web
- echo "## About RELEASE Updated ##"
- vs where release
- echo "##vso[task.prependpath]$(vs where release --prop=InstallationPath)\MSBuild\Current\Bin"
-
+
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- - name: Install .NET 6 & .NET 7
+ - name: Setup .NET 6/7
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
6.0.x
7.0.x
+ 8.0.x
- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
with:
setAllVars: true
-
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v1.3.1
- with:
- vs-prerelease: true
- name: NuGet Restore
- run: msbuild /t:restore /v:minimal /m
+ run: dotnet restore DynamicData.sln
working-directory: src
- name: Build
- run: msbuild /t:build,pack /maxcpucount /p:NoPackageAnalysis=true /verbosity:minimal /p:Configuration=${{ env.configuration }}
+ run: dotnet build --no-restore --configuration Release DynamicData.sln
+ working-directory: src
+
+ - name: Pack
+ run: dotnet pack --no-restore --configuration Release DynamicData.sln
working-directory: src
- name: Run Unit Tests and Generate Coverage
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index a6f8d344a..074c80149 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -16,57 +16,34 @@ jobs:
outputs:
nbgv: ${{ steps.nbgv.outputs.SemVer2 }}
steps:
- - name: Get Current Visual Studio Information
- shell: bash
- run: |
- dotnet tool update -g dotnet-vs
- echo "## About RELEASE ##"
- vs where release
-
- - name: Update Visual Studio Latest Release
- shell: bash
- run: |
- echo "## Update RELEASE ##"
- vs update release Enterprise
- vs modify release Enterprise +mobile +desktop +uwp +web
- echo "## About RELEASE Updated ##"
- vs where release
- echo "##vso[task.prependpath]$(vs where release --prop=InstallationPath)\MSBuild\Current\Bin"
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- - name: Install .NET 6 & .NET 7
+ - name: Setup .NET 6/7
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
6.0.x
7.0.x
+ 8.0.x
- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
with:
setAllVars: true
-
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v1.3.1
- with:
- vs-prerelease: true
- name: NuGet Restore
- run: msbuild /t:restore /v:minimal /m
+ run: dotnet restore DynamicData.sln
working-directory: src
- name: Build
- run: msbuild /t:build,pack /maxcpucount /p:NoPackageAnalysis=true /verbosity:minimal /p:Configuration=${{ env.configuration }}
+ run: dotnet pack --no-restore --configuration Release DynamicData.sln
working-directory: src
- - uses: nuget/setup-nuget@v1
- name: Setup NuGet
-
- name: Changelog
uses: glennawatson/ChangeLog@v1
id: changelog
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 92072e553..33f3ac460 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -3,7 +3,7 @@
true
- $(NoWarn);1591;1701;1702;1705;VSX1000
+ $(NoWarn);1591;1701;1702;1705;VSX1000;SA1010
AnyCPU
$(MSBuildProjectName.Contains('Tests'))
$(MSBuildProjectName.Contains('Benchmarks'))
@@ -65,7 +65,7 @@
-
+
diff --git a/src/Directory.build.targets b/src/Directory.build.targets
index 945cf9815..c03d9f4f1 100644
--- a/src/Directory.build.targets
+++ b/src/Directory.build.targets
@@ -30,4 +30,8 @@
$(DefineConstants);NETSTANDARD;PORTABLE;P_LINQ;SUPPORTS_BINDINGLIST
+
+
+ $(DefineConstants);NETSTANDARD;PORTABLE;P_LINQ;SUPPORTS_BINDINGLIST
+
diff --git a/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet6_0.verified.txt b/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet6_0.verified.txt
index 951dd27af..89770e31d 100644
--- a/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet6_0.verified.txt
+++ b/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet6_0.verified.txt
@@ -134,12 +134,12 @@ namespace DynamicData.Aggregation
}
public static class StdDevEx
{
- public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal fallbackValue) { }
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal fallbackValue) { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, double fallbackValue = 0) { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, int fallbackValue = 0) { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, long fallbackValue = 0) { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, float fallbackValue = 0) { }
- public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, decimal fallbackValue)
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, decimal fallbackValue)
where T : notnull { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, double fallbackValue)
where T : notnull { }
@@ -149,7 +149,7 @@ namespace DynamicData.Aggregation
where T : notnull { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, float fallbackValue = 0)
where T : notnull { }
- public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, decimal fallbackValue)
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, decimal fallbackValue)
where TObject : notnull
where TKey : notnull { }
public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, double fallbackValue)
@@ -504,7 +504,6 @@ namespace DynamicData.Cache.Internal
{
public KeySelectorException() { }
public KeySelectorException(string message) { }
- protected KeySelectorException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) { }
public KeySelectorException(string message, System.Exception innerException) { }
}
[System.Diagnostics.DebuggerDisplay("LockFreeObservableCache<{typeof(TObject).Name}, {typeof(TKey).Name}> ({Count} Ite" +
@@ -1034,7 +1033,6 @@ namespace DynamicData
{
public MissingKeyException() { }
public MissingKeyException(string message) { }
- protected MissingKeyException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) { }
public MissingKeyException(string message, System.Exception innerException) { }
}
public class Node : System.IDisposable, System.IEquatable>
@@ -2244,7 +2242,6 @@ namespace DynamicData
{
public SortException() { }
public SortException(string message) { }
- protected SortException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) { }
public SortException(string message, System.Exception innerException) { }
}
[System.Flags]
@@ -2348,7 +2345,6 @@ namespace DynamicData
{
public UnspecifiedIndexException() { }
public UnspecifiedIndexException(string message) { }
- protected UnspecifiedIndexException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) { }
public UnspecifiedIndexException(string message, System.Exception innerException) { }
}
public class VirtualRequest : DynamicData.IVirtualRequest, System.IEquatable
diff --git a/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet7_0.verified.txt b/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet7_0.verified.txt
new file mode 100644
index 000000000..14f45e1de
--- /dev/null
+++ b/src/DynamicData.Tests/API/ApiApprovalTests.DynamicDataTests.DotNet7_0.verified.txt
@@ -0,0 +1,2727 @@
+[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicData.Profile")]
+[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicData.ReactiveUI")]
+[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicData.Tests")]
+[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v7.0", FrameworkDisplayName=".NET 7.0")]
+namespace DynamicData.Aggregation
+{
+ public readonly struct AggregateItem : System.IEquatable>
+ {
+ public AggregateItem(DynamicData.Aggregation.AggregateType type, TObject item) { }
+ public TObject Item { get; }
+ public DynamicData.Aggregation.AggregateType Type { get; }
+ public bool Equals(DynamicData.Aggregation.AggregateItem other) { }
+ public override bool Equals(object? obj) { }
+ public override int GetHashCode() { }
+ public static bool operator !=(DynamicData.Aggregation.AggregateItem left, DynamicData.Aggregation.AggregateItem right) { }
+ public static bool operator ==(DynamicData.Aggregation.AggregateItem left, DynamicData.Aggregation.AggregateItem right) { }
+ }
+ public enum AggregateType
+ {
+ Add = 0,
+ Remove = 1,
+ }
+ public static class AggregationEx
+ {
+ public static System.IObservable> ForAggregation(this System.IObservable> source)
+ where TObject : notnull { }
+ public static System.IObservable> ForAggregation(this System.IObservable> source)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable InvalidateWhen(this System.IObservable source, System.IObservable invalidate) { }
+ public static System.IObservable InvalidateWhen(this System.IObservable source, System.IObservable invalidate) { }
+ }
+ public static class AvgEx
+ {
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0) { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0)
+ where T : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal emptyValue)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, double emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, float emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, int emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable Avg(this System.IObservable> source, System.Func valueSelector, long emptyValue = 0)
+ where TObject : notnull
+ where TKey : notnull { }
+ }
+ public static class CountEx
+ {
+ public static System.IObservable Count(this System.IObservable> source) { }
+ public static System.IObservable Count(this System.IObservable> source)
+ where TObject : notnull { }
+ public static System.IObservable Count(this System.IObservable> source)
+ where TObject : notnull { }
+ public static System.IObservable Count(this System.IObservable> source)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable IsEmpty(this System.IObservable> source)
+ where TObject : notnull { }
+ public static System.IObservable IsEmpty(this System.IObservable> source)
+ where TObject : notnull
+ where TKey : notnull { }
+ public static System.IObservable IsNotEmpty(this System.IObservable> source)
+ where TObject : notnull { }
+ public static System.IObservable IsNotEmpty(this System.IObservable> source)
+ where TObject : notnull
+ where TKey : notnull { }
+ }
+ public interface IAggregateChangeSet : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable { }
+ public static class MaxEx
+ {
+ public static System.IObservable Maximum(this System.IObservable> source, System.Func valueSelector, TResult emptyValue = default)
+ where TObject : notnull
+ where TResult : struct, System.IComparable { }
+ public static System.IObservable Maximum(this System.IObservable> source, System.Func valueSelector, TResult emptyValue = default)
+ where TObject : notnull
+ where TKey : notnull
+ where TResult : struct, System.IComparable { }
+ public static System.IObservable Minimum(this System.IObservable> source, System.Func valueSelector, TResult emptyValue = default)
+ where TObject : notnull
+ where TResult : struct, System.IComparable { }
+ public static System.IObservable Minimum(this System.IObservable> source, System.Func valueSelector, TResult emptyValue = default)
+ where TObject : notnull
+ where TKey : notnull
+ where TResult : struct, System.IComparable { }
+ }
+ public static class StdDevEx
+ {
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, [System.Runtime.CompilerServices.DecimalConstant(0, 0, 0u, 0u, 0u)] decimal fallbackValue) { }
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, double fallbackValue = 0) { }
+ public static System.IObservable StdDev(this System.IObservable> source, System.Func valueSelector, int fallbackValue = 0) { }
+ public static System.IObservable