diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml
index d690d43..79fba3a 100644
--- a/.github/workflows/build-deploy.yml
+++ b/.github/workflows/build-deploy.yml
@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- dotnet-version: ['8.0.x']
+ dotnet-version: ['9.0.x']
steps:
- name: Setup .NET ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v4
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index 7438232..15e9b01 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -1,19 +1,49 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
- "$ref": "#/definitions/build",
- "title": "Build Schema",
"definitions": {
- "build": {
- "type": "object",
+ "Host": {
+ "type": "string",
+ "enum": [
+ "AppVeyor",
+ "AzurePipelines",
+ "Bamboo",
+ "Bitbucket",
+ "Bitrise",
+ "GitHubActions",
+ "GitLab",
+ "Jenkins",
+ "Rider",
+ "SpaceAutomation",
+ "TeamCity",
+ "Terminal",
+ "TravisCI",
+ "VisualStudio",
+ "VSCode"
+ ]
+ },
+ "ExecutableTarget": {
+ "type": "string",
+ "enum": [
+ "Clean",
+ "CleanAndBuild",
+ "Compile",
+ "Pack",
+ "Push",
+ "Restore"
+ ]
+ },
+ "Verbosity": {
+ "type": "string",
+ "description": "",
+ "enum": [
+ "Verbose",
+ "Normal",
+ "Minimal",
+ "Quiet"
+ ]
+ },
+ "NukeBuild": {
"properties": {
- "Configuration": {
- "type": "string",
- "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
- "enum": [
- "Debug",
- "Release"
- ]
- },
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
@@ -23,53 +53,13 @@
"description": "Shows the help text for this build assembly"
},
"Host": {
- "type": "string",
"description": "Host for execution. Default is 'automatic'",
- "enum": [
- "AppVeyor",
- "AzurePipelines",
- "Bamboo",
- "Bitbucket",
- "Bitrise",
- "GitHubActions",
- "GitLab",
- "Jenkins",
- "Rider",
- "SpaceAutomation",
- "TeamCity",
- "Terminal",
- "TravisCI",
- "VisualStudio",
- "VSCode"
- ]
- },
- "IgnoreFailedSources": {
- "type": "boolean"
- },
- "LocalPack": {
- "type": "boolean"
- },
- "LocalPackDenyRelease": {
- "type": "boolean"
+ "$ref": "#/definitions/Host"
},
"NoLogo": {
"type": "boolean",
"description": "Disables displaying the NUKE logo"
},
- "NUGET_API_KEY": {
- "type": "string",
- "default": "Secrets must be entered via 'nuke :secrets [profile]'"
- },
- "NUGET_URL": {
- "type": "string"
- },
- "PACKAGES_GITHUB_NUGET_PAT": {
- "type": "string",
- "default": "Secrets must be entered via 'nuke :secrets [profile]'"
- },
- "PACKAGES_GITHUB_NUGET_URL": {
- "type": "string"
- },
"Partition": {
"type": "string",
"description": "Partition to use on CI"
@@ -85,9 +75,6 @@
"type": "string"
}
},
- "RELEASE_NOTES": {
- "type": "string"
- },
"Root": {
"type": "string",
"description": "Root directory during build execution"
@@ -96,47 +83,68 @@
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
- "type": "string",
- "enum": [
- "Clean",
- "CleanAndBuild",
- "Compile",
- "Pack",
- "Push",
- "Restore"
- ]
+ "$ref": "#/definitions/ExecutableTarget"
}
},
- "Solution": {
- "type": "string",
- "description": "Path to a solution file that is automatically loaded"
- },
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
- "type": "string",
- "enum": [
- "Clean",
- "CleanAndBuild",
- "Compile",
- "Pack",
- "Push",
- "Restore"
- ]
+ "$ref": "#/definitions/ExecutableTarget"
}
},
"Verbosity": {
- "type": "string",
"description": "Logging verbosity during build execution. Default is 'Normal'",
+ "$ref": "#/definitions/Verbosity"
+ }
+ }
+ }
+ },
+ "allOf": [
+ {
+ "properties": {
+ "Configuration": {
+ "type": "string",
+ "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
"enum": [
- "Minimal",
- "Normal",
- "Quiet",
- "Verbose"
+ "Debug",
+ "Release"
]
+ },
+ "IgnoreFailedSources": {
+ "type": "boolean"
+ },
+ "LocalPack": {
+ "type": "boolean"
+ },
+ "LocalPackDenyRelease": {
+ "type": "boolean"
+ },
+ "NUGET_API_KEY": {
+ "type": "string",
+ "default": "Secrets must be entered via 'nuke :secrets [profile]'"
+ },
+ "NUGET_URL": {
+ "type": "string"
+ },
+ "PACKAGES_GITHUB_NUGET_PAT": {
+ "type": "string",
+ "default": "Secrets must be entered via 'nuke :secrets [profile]'"
+ },
+ "PACKAGES_GITHUB_NUGET_URL": {
+ "type": "string"
+ },
+ "RELEASE_NOTES": {
+ "type": "string"
+ },
+ "Solution": {
+ "type": "string",
+ "description": "Path to a solution file that is automatically loaded"
}
}
+ },
+ {
+ "$ref": "#/definitions/NukeBuild"
}
- }
+ ]
}
diff --git a/build/_build.csproj b/build/_build.csproj
index b7ce25b..56d195b 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net9.0
CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006
..
@@ -12,7 +12,7 @@
-
+
diff --git a/src/WinFormsMVP.NET.Autofac/WinFormsMVP.NET.Autofac.csproj b/src/WinFormsMVP.NET.Autofac/WinFormsMVP.NET.Autofac.csproj
index 13b28c3..dd4b36d 100644
--- a/src/WinFormsMVP.NET.Autofac/WinFormsMVP.NET.Autofac.csproj
+++ b/src/WinFormsMVP.NET.Autofac/WinFormsMVP.NET.Autofac.csproj
@@ -1,7 +1,7 @@
- net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows
+ net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows
true
true
False
@@ -35,6 +35,10 @@
+
+
+
+
diff --git a/src/WinFormsMVP.NET.SimpleInjector/WinFormsMVP.NET.SimpleInjector.csproj b/src/WinFormsMVP.NET.SimpleInjector/WinFormsMVP.NET.SimpleInjector.csproj
index 8e78e44..c163bf8 100644
--- a/src/WinFormsMVP.NET.SimpleInjector/WinFormsMVP.NET.SimpleInjector.csproj
+++ b/src/WinFormsMVP.NET.SimpleInjector/WinFormsMVP.NET.SimpleInjector.csproj
@@ -1,7 +1,7 @@
- net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows
+ net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows
true
true
False
@@ -35,6 +35,10 @@
+
+
+
+
diff --git a/src/WinFormsMVP.NET/Forms/MvpUserControl.cs b/src/WinFormsMVP.NET/Forms/MvpUserControl.cs
index 282131c..22abbbc 100644
--- a/src/WinFormsMVP.NET/Forms/MvpUserControl.cs
+++ b/src/WinFormsMVP.NET/Forms/MvpUserControl.cs
@@ -1,4 +1,5 @@
-using System.Windows.Forms;
+using System.ComponentModel;
+using System.Windows.Forms;
using WinFormsMVP.NET.Binder;
namespace WinFormsMVP.NET.Forms
@@ -14,6 +15,9 @@ public MvpUserControl()
_presenterBinder.PerformBinding(this);
}
+#if NET9_0_OR_GREATER
+ [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
public bool ThrowExceptionIfNoPresenterBound { get; private set; }
}
}
diff --git a/src/WinFormsMVP.NET/WinFormsMVP.NET.csproj b/src/WinFormsMVP.NET/WinFormsMVP.NET.csproj
index c500373..39a6193 100644
--- a/src/WinFormsMVP.NET/WinFormsMVP.NET.csproj
+++ b/src/WinFormsMVP.NET/WinFormsMVP.NET.csproj
@@ -1,7 +1,7 @@
- net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows
+ net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows
true
true
False
@@ -39,6 +39,11 @@
+
+
+
+
+