diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml
index a2ba52ccea..f2ad9875a3 100644
--- a/.github/workflows/packages.yml
+++ b/.github/workflows/packages.yml
@@ -36,7 +36,7 @@ jobs:
echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_ENV
echo "PACKAGE_PREFIX=${PACKAGE_PREFIX}" >> $GITHUB_ENV
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Verify commit exists in branch
run: |
if [[ "${{ github.ref }}" == refs/tags/* && "${{ github.event_name }}" == "release" && ("${{ github.event.action }}" == "published" || "${{ github.event.action }}" == "prereleased")]]; then
@@ -60,6 +60,9 @@ jobs:
# with:
# java-version: '17'
# distribution: 'adopt'
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 9.x
# - name: Install SonarScanner for .NET
# run: dotnet tool install --global dotnet-sonarscanner
# - name: Install Coverlet for code coverage
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index b6394a0898..bb879d54bf 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -33,5 +33,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 9.x
- name: 'Run: Compile, Test, Pack'
run: ./build.cmd Compile Test Pack
diff --git a/Directory.Build.props b/Directory.Build.props
index 1249834ea1..5911ae4e2e 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,7 +1,7 @@
Elsa Workflows Community
- 2023
+ 2024
https://github.com/elsa-workflows/elsa-core
https://github.com/elsa-workflows/elsa-core
@@ -38,6 +38,5 @@
3.3.0-preview.666
- 8.0.5
\ No newline at end of file
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 668cd731bd..a69ea25296 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -5,6 +5,11 @@
+
+
+
+
+
@@ -26,80 +31,77 @@
+
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
+
-
-
-
+
+
-
-
+
+
-
@@ -107,12 +109,6 @@
-
-
-
-
-
-
@@ -130,8 +126,8 @@
-
+
@@ -150,6 +146,8 @@
+
+
@@ -158,6 +156,7 @@
+
@@ -167,12 +166,12 @@
-
+
-
+
@@ -181,13 +180,55 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
index 769673dd17..840f70e426 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -76,14 +76,12 @@ protected override void OnBuildInitialized()
((IHazSolution)this).Solution.AllProjects.Where(x => x.Name.EndsWith("Tests"));
public Configure TestProjectSettings => (testSettings, project) => testSettings
- .When(GitHubActions.Instance is not null, settings => settings.AddLoggers("GitHubActions;report-warnings=false"))
- .When(AnalyseCode, settings => settings
+ .When(_ => GitHubActions.Instance is not null, settings => settings.AddLoggers("GitHubActions;report-warnings=false"))
+ .When(_ => AnalyseCode, settings => settings
.SetCoverletOutputFormat(CoverletOutputFormat.opencover)
.EnableCollectCoverage()
.SetResultsDirectory(TestResultDirectory)
.SetCoverletOutput($"{TestResultDirectory}/opencoverCoverage.xml")
- .SetProcessArgumentConfigurator(args =>
- args.Add("--collect:\"XPlat Code Coverage;Format=opencover\"")
- )
+ .AddProcessAdditionalArguments("--collect:\"XPlat Code Coverage;Format=opencover\"")
);
}
\ No newline at end of file
diff --git a/build/_build.csproj b/build/_build.csproj
index 9cb5686945..66629bd30a 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -1,8 +1,8 @@
-
+
Exe
- net8.0
+ net9.0
CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006
..
@@ -19,12 +19,12 @@
-
+
-
+
diff --git a/docker/ElsaServer-Datadog.Dockerfile b/docker/ElsaServer-Datadog.Dockerfile
index 6491995e53..a74069cf23 100644
--- a/docker/ElsaServer-Datadog.Dockerfile
+++ b/docker/ElsaServer-Datadog.Dockerfile
@@ -1,7 +1,7 @@
# Version: 1
# Description: Dockerfile for building and running Elsa Server
-FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
WORKDIR /source
# Copy sources.
@@ -15,10 +15,10 @@ RUN dotnet restore "./src/bundles/Elsa.Server.Web/Elsa.Server.Web.csproj"
# Build and publish (UseAppHost=false creates platform independent binaries).
WORKDIR /source/src/bundles/Elsa.Server.Web
RUN dotnet build "Elsa.Server.Web.csproj" -c Release -o /app/build
-RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net8.0
+RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
# Move binaries into smaller base image.
-FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base
+FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
WORKDIR /app
COPY --from=build /app/publish ./
diff --git a/docker/ElsaServer.Dockerfile b/docker/ElsaServer.Dockerfile
index 903224fe19..b31307eb90 100644
--- a/docker/ElsaServer.Dockerfile
+++ b/docker/ElsaServer.Dockerfile
@@ -1,4 +1,4 @@
-FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
WORKDIR /source
# copy sources.
@@ -12,10 +12,10 @@ RUN dotnet restore "./src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj"
# build and publish (UseAppHost=false creates platform independent binaries).
WORKDIR /source/src/apps/Elsa.Server.Web
RUN dotnet build "Elsa.Server.Web.csproj" -c Release -o /app/build
-RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net8.0
+RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
# move binaries into smaller base image.
-FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base
+FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
WORKDIR /app
COPY --from=build /app/publish ./
diff --git a/docker/ElsaServerAndStudio.Dockerfile b/docker/ElsaServerAndStudio.Dockerfile
index a7133fb324..27b33e992b 100644
--- a/docker/ElsaServerAndStudio.Dockerfile
+++ b/docker/ElsaServerAndStudio.Dockerfile
@@ -1,4 +1,4 @@
-FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
WORKDIR /source
# copy sources.
@@ -13,10 +13,10 @@ RUN dotnet restore "./src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web
# build and publish (UseAppHost=false creates platform independent binaries).
WORKDIR /source/src/apps/Elsa.ServerAndStudio.Web
RUN dotnet build "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/build
-RUN dotnet publish "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net8.0
+RUN dotnet publish "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
# move binaries into smaller base image.
-FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base
+FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
WORKDIR /app
COPY --from=build /app/publish ./
diff --git a/docker/ElsaStudio.Dockerfile b/docker/ElsaStudio.Dockerfile
index b0dc8339da..7f2eba83c8 100644
--- a/docker/ElsaStudio.Dockerfile
+++ b/docker/ElsaStudio.Dockerfile
@@ -1,4 +1,4 @@
-FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
WORKDIR /source
# copy sources.
@@ -13,10 +13,10 @@ RUN dotnet restore "./src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj"
# build and publish (UseAppHost=false creates platform independent binaries).
WORKDIR /source/src/apps/Elsa.Studio.Web
RUN dotnet build "Elsa.Studio.Web.csproj" -c Release -o /app/build
-RUN dotnet publish "Elsa.Studio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net8.0
+RUN dotnet publish "Elsa.Studio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
# move binaries into smaller base image.
-FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base
+FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
WORKDIR /app
COPY --from=build /app/publish ./
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 607b673989..cb5db9709a 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -3,7 +3,7 @@
- net6.0;net8.0
+ net6.0;net8.0;net9.0
diff --git a/src/apps/Directory.Build.props b/src/apps/Directory.Build.props
index 1ead413446..2e6c5f63d7 100644
--- a/src/apps/Directory.Build.props
+++ b/src/apps/Directory.Build.props
@@ -1,6 +1,6 @@
- net8.0
+ net9.0
latest
enable
enable
diff --git a/src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj b/src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj
index 90dec8fea1..1b2b2b6889 100644
--- a/src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj
+++ b/src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
Linux
false
latest
diff --git a/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj b/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
index 67c92b74c9..bf4d531715 100644
--- a/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
+++ b/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
@@ -3,17 +3,17 @@
-
+
-
+
-
+
diff --git a/src/apps/Elsa.Server.Web/Program.cs b/src/apps/Elsa.Server.Web/Program.cs
index 075d93e1a9..290e36ccfb 100644
--- a/src/apps/Elsa.Server.Web/Program.cs
+++ b/src/apps/Elsa.Server.Web/Program.cs
@@ -149,8 +149,10 @@
ef.UseSqlServer(sqlServerConnectionString!);
else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
ef.UsePostgreSql(postgresConnectionString!);
+#if !NET9_0
else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
ef.UseMySql(mySqlConnectionString);
+#endif
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else
@@ -183,8 +185,10 @@
ef.UseSqlServer(sqlServerConnectionString!);
else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
ef.UsePostgreSql(postgresConnectionString!);
+#if !NET9_0
else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
ef.UseMySql(mySqlConnectionString);
+#endif
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else
@@ -254,8 +258,10 @@
}
else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
ef.UsePostgreSql(postgresConnectionString!);
+#if !NET9_0
else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
ef.UseMySql(mySqlConnectionString);
+#endif
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else
@@ -380,8 +386,10 @@
ef.UseSqlServer(sqlServerConnectionString);
else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
ef.UsePostgreSql(postgresConnectionString);
+#if !NET9_0
else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
ef.UseMySql(mySqlConnectionString);
+#endif
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else
@@ -522,7 +530,7 @@
else
{
tenants.UseStoreBasedTenantsProvider();
-
+
tenants.UseTenantManagement(management =>
{
if (persistenceProvider == PersistenceProvider.MongoDb)
@@ -536,12 +544,14 @@
if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite) ef.UseSqlite(sqliteConnectionString);
if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer) ef.UseSqlServer(sqlServerConnectionString);
if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql) ef.UsePostgreSql(postgresConnectionString);
+#if !NET9_0
if (sqlDatabaseProvider == SqlDatabaseProvider.MySql) ef.UseMySql(mySqlConnectionString);
+#endif
if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb) ef.UsePostgreSql(cockroachDbConnectionString);
});
}
});
-
+
tenants.UseTenantManagementEndpoints();
}
});
diff --git a/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj b/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
index 1c73d2f231..7cfa13de34 100644
--- a/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
+++ b/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
@@ -1,7 +1,7 @@
-
+
- net8.0
+ net9.0
Linux
false
@@ -9,7 +9,7 @@
-
+
@@ -24,7 +24,7 @@
-
+
diff --git a/src/apps/Elsa.ServerAndStudio.Web/Program.cs b/src/apps/Elsa.ServerAndStudio.Web/Program.cs
index 62157e33e0..581f25ec55 100644
--- a/src/apps/Elsa.ServerAndStudio.Web/Program.cs
+++ b/src/apps/Elsa.ServerAndStudio.Web/Program.cs
@@ -65,25 +65,29 @@
if (useCaching)
management.UseCache();
- if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
- management.UseEntityFrameworkCore(ef => ef.UseMySql(mySqlConnectionString));
- else if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
+ if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
management.UseEntityFrameworkCore(ef => ef.UseSqlServer(sqlServerConnectionString));
- else if(sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
management.UseEntityFrameworkCore(ef => ef.UsePostgreSql(postgreSqlConnectionString));
else if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite)
management.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString));
+#if !NET9_0
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
+ management.UseEntityFrameworkCore(ef => ef.UseMySql(mySqlConnectionString));
+#endif
})
.UseWorkflowRuntime(runtime =>
{
- if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
- runtime.UseEntityFrameworkCore(ef => ef.UseMySql(mySqlConnectionString));
- else if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
+ if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
runtime.UseEntityFrameworkCore(ef => ef.UseSqlServer(sqlServerConnectionString));
- else if(sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
runtime.UseEntityFrameworkCore(ef => ef.UsePostgreSql(postgreSqlConnectionString));
else if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite)
runtime.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString));
+#if !NET9_0
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
+ runtime.UseEntityFrameworkCore(ef => ef.UseMySql(mySqlConnectionString));
+#endif
if (useMassTransit)
{
@@ -134,14 +138,16 @@
.UseAgentsApi()
.UseAgentPersistence(persistence => persistence.UseEntityFrameworkCore(ef =>
{
- if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
- ef.UseMySql(mySqlConnectionString);
- else if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
+ if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
ef.UseSqlServer(sqlServerConnectionString);
- else if(sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
ef.UsePostgreSql(postgreSqlConnectionString);
else if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite)
ef.UseSqlite(sqliteConnectionString);
+#if !NET9_0
+ else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
+ ef.UseMySql(mySqlConnectionString);
+#endif
}))
.UseAgentActivities()
.AddActivitiesFrom()
diff --git a/src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj b/src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj
index 20f8481e77..8fb1118017 100644
--- a/src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj
+++ b/src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
Linux
false
diff --git a/src/apps/ElsaStudioWebAssembly/ElsaStudioWebAssembly.csproj b/src/apps/ElsaStudioWebAssembly/ElsaStudioWebAssembly.csproj
index 9e93808f46..f4d84a5f4a 100644
--- a/src/apps/ElsaStudioWebAssembly/ElsaStudioWebAssembly.csproj
+++ b/src/apps/ElsaStudioWebAssembly/ElsaStudioWebAssembly.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj
index ba9da32959..04d22bca57 100644
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj
+++ b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj
@@ -1,6 +1,7 @@
+ net6.0;net8.0
Provides an EF Core migrations for MySQL for the Agents Persistence module.
elsa module agents semantic kernel llm ai persistence efcore entity framework core mysql
diff --git a/src/modules/Elsa.CSharp/Services/CSharpEvaluator.cs b/src/modules/Elsa.CSharp/Services/CSharpEvaluator.cs
index 8a7e79cb3c..4e2942b075 100644
--- a/src/modules/Elsa.CSharp/Services/CSharpEvaluator.cs
+++ b/src/modules/Elsa.CSharp/Services/CSharpEvaluator.cs
@@ -49,12 +49,11 @@ public class CSharpEvaluator(INotificationSender notificationSender, IOptions GetPreCompiledScript(Script