Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ jobs:
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0'
dotnet-version: '10.0.x'
global-json-file: Source/global.json

- name: Build
run: dotnet build Source\csla.test.sln
Expand Down Expand Up @@ -55,7 +56,7 @@ jobs:
name: 'Build MAUI'
needs: build
if: needs.build.outputs.run_maui == 'true'
runs-on: macos-15
runs-on: macos-26

steps:
- uses: actions/checkout@v4
Expand All @@ -65,13 +66,14 @@ jobs:
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0'
dotnet-version: '10.0.x'
global-json-file: Source/global.json

- name: Install MAUI workload
run: dotnet workload install maui

- name: "Select a specific version of Xcode"
run: sudo xcode-select -s /Applications/Xcode_16.4.app
run: sudo xcode-select -s /Applications/Xcode_26.5.app

- name: Build Solution
run: dotnet build Source/csla.maui.test.sln --configuration Debug
3 changes: 2 additions & 1 deletion .github/workflows/release-maui.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ jobs:
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0'
dotnet-version: '10.0.x'
global-json-file: Source/global.json

- name: Install .NET MAUI workloads
run: dotnet workload install maui
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ jobs:
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0'
dotnet-version: '10.0.x'
global-json-file: Source/global.json

- name: Install .NET MAUI workloads
run: dotnet workload install maui
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Repository Overview

CSLA .NET is a business object framework for .NET. `main` is version **11.0.0** in development (set via Nerdbank.GitVersioning in `Source/version.json`); version 10 maintenance happens on the `v10.x` branch. The core package targets `netstandard2.0`, `net462`, `net472`, `net48`, `net8.0`, `net9.0`, and `net10.0`. Requires **.NET SDK 10.0.100+** (see `Source/global.json`).
CSLA .NET is a business object framework for .NET. `main` is version **11.0.0** in development (set via Nerdbank.GitVersioning in `Source/version.json`); version 10 maintenance happens on the `v10.x` branch. The core package targets `netstandard2.0`, `net462`, `net472`, `net48`, `net10.0`, and `net11.0`. Requires **.NET SDK 11.0.100+** (currently a prerelease; see `Source/global.json`), plus the .NET 10 runtime to run the tests.

## Build and Test Commands

Expand Down Expand Up @@ -105,7 +105,7 @@ Include the GitHub issue number: `#999 Description of change`

## CI Notes

- CI runs on `windows-latest` with .NET 10 SDK
- CI runs on `windows-latest` with the .NET 11 SDK (pinned by `Source/global.json`) and the .NET 10 SDK
- Tests use `--settings Source/test.runsettings` which limits `MaxCpuCount` to 1 (tests must not run in parallel)
- Tests with `[TestCategory("SkipOnCIServer")]` are excluded from CI runs
- MAUI build only triggers when `Source/Csla.Xaml.Maui/`, `Source/Csla.Xaml.Shared/`, or `Source/csla.maui.test.sln` are modified
14 changes: 5 additions & 9 deletions Source/Csla.AspNetCore/Csla.AspNetCore.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
<AssemblyName>Csla.AspNetCore</AssemblyName>
<RootNamespace>Csla.AspNetCore</RootNamespace>
<PackageId>Csla.AspNetCore</PackageId>
Expand All @@ -16,17 +16,13 @@

<Import Project="..\Csla.Web.Mvc.Shared\Csla.Web.Mvc.Shared.projitems" Label="Shared" />

<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<ItemGroup Condition="'$(TargetFramework)' == 'net11.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="8.0.7" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ namespace Csla.Benchmarks.CollectionIdentity;
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net462)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net472)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net48)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net90, baseline: true)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net10_0, baseline: true)]
[HtmlExporter, JsonExporterAttribute.FullCompressed]
public class CollectionIdentityBenchmark
{
Expand Down
2 changes: 1 addition & 1 deletion Source/Csla.Benchmarks/Csla.Benchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net462;net472;net48;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net462;net472;net48;net10.0;net11.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ namespace Csla.Benchmarks.PerformanceCloner;
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net462)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net472)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net48)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net80)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net90)]
[SimpleJob(BenchmarkDotNet.Jobs.RuntimeMoniker.Net10_0)]
[HtmlExporter, JsonExporterAttribute.FullCompressed]
[MemoryDiagnoser(true)]
Expand Down
11 changes: 4 additions & 7 deletions Source/Csla.Blazor.WebAssembly/Csla.Blazor.WebAssembly.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
<RazorLangVersion>3.0</RazorLangVersion>
<Product>CSLA .NET Blazor WebAssembly</Product>
<Description>UI helpers for using CSLA .NET business types with Blazor WebAssembly.</Description>
Expand All @@ -23,15 +23,12 @@
<ItemGroup>
<PackageReference Include="System.Net.Http.Json" Version="10.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net11.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.11" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Csla.Blazor\Csla.Blazor.csproj" />
Expand Down
17 changes: 6 additions & 11 deletions Source/Csla.Blazor/Csla.Blazor.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
<RazorLangVersion>3.0</RazorLangVersion>
<Product>CSLA .NET Blazor</Product>
<Description>UI helpers for using CSLA .NET business types with Blazor.</Description>
Expand All @@ -21,21 +21,16 @@
<SupportedPlatform Include="browser" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net11.0'">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="11.0.0-rc.1.26425.128" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="11.0.0-rc.1.26425.128" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="10.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="10.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="9.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="9.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="8.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="8.0.7" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Csla\Csla.csproj" />
Expand Down
2 changes: 1 addition & 1 deletion Source/Csla.Channels.Grpc/Csla.Channels.Grpc.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>netstandard2.1;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>netstandard2.1;net10.0;net11.0</TargetFrameworks>
<Product>CSLA .NET gRPC Channel</Product>
<Description>gRPC data portal channel for CSLA .NET.</Description>
<SignAssembly>true</SignAssembly>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>netstandard2.1;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>netstandard2.1;net10.0;net11.0</TargetFrameworks>
<Product>CSLA .NET RabbitMQ Channel</Product>
<Description>RabbitMQ data portal channel for CSLA .NET.</Description>
<SignAssembly>true</SignAssembly>
Expand Down
26 changes: 8 additions & 18 deletions Source/Csla.Channels.Wcf/Csla.Channels.Wcf.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net462;net472;net48;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net462;net472;net48;net10.0;net11.0</TargetFrameworks>
<LangVersion>Latest</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand All @@ -24,36 +24,26 @@
</ItemGroup>

<!-- CoreWCF libraries are only needed for modern .net targets. -->
<ItemGroup Condition="'$(TargetFramework)'=='net8.0' or '$(TargetFramework)'=='net9.0' or '$(TargetFramework)'=='net10.0'">
<ItemGroup Condition="'$(TargetFramework)'=='net10.0' or '$(TargetFramework)'=='net11.0'">
<PackageReference Include="CoreWCF.Http" Version="1.8.1" />
<PackageReference Include="CoreWCF.Primitives" Version="1.8.1" />
</ItemGroup>

<!-- The supported target frameworks for the client side System.ServiceModel packages are not compatible between
versions 8.x and 10.x so they must be included under separate conditions. There is no 9.x version. -->
<ItemGroup Condition="'$(TargetFramework)'=='net8.0' or '$(TargetFramework)'=='net9.0'">
<PackageReference Include="System.ServiceModel.Primitives" Version="8.1.2" />
<PackageReference Include="System.ServiceModel.Http" Version="8.1.2" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)'=='net10.0'">
<!-- There is no 11.x version of the client side System.ServiceModel packages, so .NET 11 uses the 10.x version. -->
<ItemGroup Condition="'$(TargetFramework)'=='net10.0' or '$(TargetFramework)'=='net11.0'">
<PackageReference Include="System.ServiceModel.Primitives" Version="10.0.652802" />
<PackageReference Include="System.ServiceModel.Http" Version="10.0.652802" />
</ItemGroup>

<!-- CoreWCF and System.ServiceModel.Primitives pull in versions of System.Security.Cryptography.Xml
that have known high severity advisories (NU1903), so reference a patched version of the package
from the servicing band that matches each target framework. -->
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
<PackageReference Include="System.Security.Cryptography.Xml" Version="8.0.4" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)'=='net9.0'">
<PackageReference Include="System.Security.Cryptography.Xml" Version="9.0.19" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)'=='net10.0'">
<PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.11" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)'=='net11.0'">
<PackageReference Include="System.Security.Cryptography.Xml" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>

</Project>
11 changes: 4 additions & 7 deletions Source/Csla.Testing/Csla.Testing.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>netstandard2.0;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net10.0;net11.0</TargetFrameworks>
<AssemblyName>Csla.Testing</AssemblyName>
<RootNamespace>Csla.Testing</RootNamespace>
<PackageId>Csla.Testing</PackageId>
Expand Down Expand Up @@ -36,14 +36,11 @@
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net9.0'">
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net10.0'">
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net11.0'">
<PackageReference Include="Microsoft.Extensions.Logging" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion Source/Csla.Windows/Csla.Windows.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net462;net8.0-windows;net9.0-windows;net10.0-windows</TargetFrameworks>
<TargetFrameworks>net462;net10.0-windows;net11.0-windows</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<AssemblyName>Csla.Windows</AssemblyName>
<RootNamespace>Csla.Windows</RootNamespace>
Expand Down
17 changes: 9 additions & 8 deletions Source/Csla.Xaml.Maui/Csla.Xaml.Maui.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net9.0-android;net9.0-ios;net9.0-maccatalyst;net10.0-android;net10.0-ios;net10.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0;net10.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks>net10.0-android;net10.0-ios;net10.0-maccatalyst;net11.0-android;net11.0-ios;net11.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net10.0-windows10.0.19041.0;net11.0-windows10.0.19041.0</TargetFrameworks>
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
<!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> -->
<!-- <TargetFrameworks>$(TargetFrameworks);net11.0-tizen</TargetFrameworks> -->

<UseMaui>true</UseMaui>
<SingleProject>true</SingleProject>
Expand All @@ -16,21 +16,22 @@
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">12.2</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">15.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<!-- .NET 11 for Android requires API level 24 or later -->
<SupportedOSPlatformVersion Condition="$(TargetFramework.StartsWith('net11')) and $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">24.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
</PropertyGroup>

<ItemGroup Condition="$(TargetFramework.StartsWith(&quot;net11&quot;))">
<PackageReference Include="Microsoft.Maui.Controls" Version="11.0.0-rc.1.26451.6" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="11.0.0-rc.1.26425.128" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith(&quot;net10&quot;))">
<PackageReference Include="Microsoft.Maui.Controls" Version="10.0.*" />
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="10.0.*" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.*" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith(&quot;net9&quot;))">
<PackageReference Include="Microsoft.Maui.Controls" Version="9.0.12" />
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="9.0.12" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Release'">
<PackageReference Include="Csla" Version="10.0.0" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion Source/Csla.Xaml.Wpf/Csla.Xaml.Wpf.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="..\Directory.Package.props" />

<PropertyGroup>
<TargetFrameworks>net462;net8.0-windows;net9.0-windows;net10.0-windows</TargetFrameworks>
<TargetFrameworks>net462;net10.0-windows;net11.0-windows</TargetFrameworks>
<UseWPF>true</UseWPF>
<AssemblyName>Csla.Xaml</AssemblyName>
<RootNamespace>Csla.Xaml</RootNamespace>
Expand Down
Loading
Loading