From 243086bd487ef877f61638ee63ddd51dc3fb5089 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 12:43:50 +0100 Subject: [PATCH 1/5] Create draft PR for #467 From a0fa69be430e23e077c1b55e7d394e4ee6b6dd7c Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:34:43 +0100 Subject: [PATCH 2/5] Drop .NET 9.0 support and standardize on .NET 10.0 Updated all project files to target only .NET 10.0, removing support for .NET 9.0. Updated `Directory.Packages.props` to upgrade `Newtonsoft.Json` to 13.0.4 and `Siemens.Simatic.S7.Webserver.API` to 3.3.3, while removing .NET 9.0-specific package references. Modified `apax.yml` scripts and test scripts (`test_L10.ps1`, `test_L2.ps1`) to use .NET 10.0. Updated `ConditionalDependenciesTests.cs` to replace .NET 9.0-specific conditional references with .NET 10.0 equivalents. Added `PlcStringResources.resx` for managing localized string resources. Updated `plc_line.SecurityConfiguration.json` with new `PKIData`, `AccessProtectionData`, and certificate assignments. These changes simplify the build configuration, improve maintainability, and align the codebase with .NET 10.0. --- Directory.Build.props | 2 +- Directory.Packages.props | 20 +----- .../samples/units/expected/ax/units.csproj | 2 +- .../samples/units/expected/tia/units.csproj | 2 +- .../ConditionalDependenciesTests.cs | 6 +- .../actual/app/samples/units/ix/ax/app.csproj | 2 +- .../app/samples/units/ix/tia/app.csproj | 2 +- .../lib1/samples/units/ix/ax/lib1.csproj | 2 +- .../lib1/samples/units/ix/tia/lib1.csproj | 2 +- .../lib2/samples/units/ix/ax/lib2.csproj | 2 +- .../lib2/samples/units/ix/tia/lib2.csproj | 2 +- .../tests/ax-test-project/apax.yml | 4 +- .../plc_line.SecurityConfiguration.json | 6 +- .../ix/Resources/PlcStringResources.resx | 61 +++++++++++++++++++ .../integration/ix-integration-plc/apax.yml | 4 +- .../integrated/src/ax/apax.yml | 4 +- templates/working/AXSharp.templates.csproj | 2 +- test_L10.ps1 | 2 +- test_L2.ps1 | 2 +- 19 files changed, 87 insertions(+), 42 deletions(-) create mode 100644 src/AXSharp.connectors/tests/ax-test-project/ix/Resources/PlcStringResources.resx diff --git a/Directory.Build.props b/Directory.Build.props index fab5d204..23921317 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 diff --git a/Directory.Packages.props b/Directory.Packages.props index 3962b3e7..dc3fd519 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -33,7 +33,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -59,22 +59,6 @@ - - - - - - - - - - - - - - - - diff --git a/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/ax/units.csproj b/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/ax/units.csproj index f2e6b1a5..a02121aa 100644 --- a/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/ax/units.csproj +++ b/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/ax/units.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/tia/units.csproj b/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/tia/units.csproj index f2e6b1a5..a02121aa 100644 --- a/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/tia/units.csproj +++ b/src/AXSharp.compiler/tests/AXSharp.Compiler.CsTests/samples/units/expected/tia/units.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs b/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs index cb38ef6e..d18abe5c 100644 --- a/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs +++ b/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs @@ -33,13 +33,13 @@ public void should_respect_itemgroup_condition_targetframework() var csproj = """ - net8.0;net9.0 + net8.0;net10.0 - - + + """; diff --git a/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/ax/app.csproj b/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/ax/app.csproj index 2e1317d1..93d7b60f 100644 --- a/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/ax/app.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/ax/app.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/tia/app.csproj b/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/tia/app.csproj index 58c3667f..0bb09564 100644 --- a/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/tia/app.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/app/samples/units/ix/tia/app.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/ax/lib1.csproj b/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/ax/lib1.csproj index e1af7cd9..2e2ada78 100644 --- a/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/ax/lib1.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/ax/lib1.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/tia/lib1.csproj b/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/tia/lib1.csproj index e1af7cd9..2e2ada78 100644 --- a/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/tia/lib1.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/lib1/samples/units/ix/tia/lib1.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/ax/lib2.csproj b/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/ax/lib2.csproj index e1af7cd9..2e2ada78 100644 --- a/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/ax/lib2.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/ax/lib2.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/tia/lib2.csproj b/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/tia/lib2.csproj index e1af7cd9..2e2ada78 100644 --- a/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/tia/lib2.csproj +++ b/src/AXSharp.compiler/tests/integration/actual/lib2/samples/units/ix/tia/lib2.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/src/AXSharp.connectors/tests/ax-test-project/apax.yml b/src/AXSharp.connectors/tests/ax-test-project/apax.yml index 11f7ef56..b525acd7 100644 --- a/src/AXSharp.connectors/tests/ax-test-project/apax.yml +++ b/src/AXSharp.connectors/tests/ax-test-project/apax.yml @@ -83,8 +83,8 @@ variables: HWCONFIG: "HWC" COM_CERT_PATH: .\certs\Communication.cer scripts: - ixc: dotnet run --project ..//..//..//AXSharp.compiler//src//ixc//AXSharp.ixc.csproj --framework net9.0 - ixd: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixr\\AXSharp.ixr.csproj --framework net9.0 + ixc: dotnet run --project ..//..//..//AXSharp.compiler//src//ixc//AXSharp.ixc.csproj --framework net10.0 + ixd: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixr\\AXSharp.ixr.csproj --framework net10.0 postbuild: - apax ixc - apax ixd diff --git a/src/AXSharp.connectors/tests/ax-test-project/hwc/hwc.gen/plc_line.SecurityConfiguration.json b/src/AXSharp.connectors/tests/ax-test-project/hwc/hwc.gen/plc_line.SecurityConfiguration.json index ad3dd722..869d1542 100644 --- a/src/AXSharp.connectors/tests/ax-test-project/hwc/hwc.gen/plc_line.SecurityConfiguration.json +++ b/src/AXSharp.connectors/tests/ax-test-project/hwc/hwc.gen/plc_line.SecurityConfiguration.json @@ -1,9 +1,9 @@ { - "PKIData": "AQAAAAAAAAAAAAAAAAAAAAEBAewdAAAAAAAAAAAAAAAAAwAAAN8ALS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkFhR2h3SDBlbmJrc2ZRZkE5TUFZSEtlb09qeQpNWlFpenpBVkZTZUdJRnc1djg1bEg1NHZQejNrSW9scE5VcGluWDFra2NYZm85RTBWTUpMZFVpKzVUbm1WQyt3CkQyMHNFOEFkZjdrMGFpMThiL1ZDUHJUR0xVemY0NGhtcE5NSEdRPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCnsBAQACAAAnEAAgqdJ4kSjm0/y7CBAq6G98lGvi+NtBXl1eoaNyWkwZrhMBACAADAAQeAZpvfpQzZ+JTQx5ZexJoQEAAAE2fC8c7eALEtxaCvRrJYKNhPCkyaBUNCCabx8kEF7SPlf7XJmtTEnODS9ZGgs0y0dwkTma6J1xTxe4JCXYJv4eVFNpuB9asY28GW2mYE0iKHu5f5En/tbRZjqssNmmbJ9533+5H6AIem0pRlgxdy0cXEGXfY+WtJM2PBpMs3Rv0QzSupykmKjyxjmf0aEicvIHTFiPtE/GPtqLEbi5TN7Ys5shDJb698S9qWMC+pgkHSPcf2C+/VpwUTlmAONsx8SpRsl+8hdQS76QosW2jUxVO+RresDQMkm1bX9Kl+q5nnWZiCBgWSQzyJqIjEM8bL+BRbCQ21DkHHhVgjgb6Yly+cDoHFbfaNAkzJasT6OjI1fuDFB4bH+rvt56kXjKdos/sMmd6m0kjFjDQYj234WCJzDyQxRhugIAFENvbW1vbk5hbWVPckhvc3RuYW1lAQAAAAAAAAABAAAAAgAAAAAAAAAUAAnrm3TVFTnrmUh/f9zjkaK/yQL8cAUBAAVsLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEeURDQ0FyQ2dBd0lCQWdJVVVpL2lwR01vT3FHeFNuOGRoaGhQaDBySWlJUXdEUVlKS29aSWh2Y05BUUVMQlFBd2dZWXhDekFKDQpCZ05WQkFZVEFsaFlNUkl3RUFZRFZRUUlEQWxUZEdGMFpVNWhiV1V4RVRBUEJnTlZCQWNNQ0VOcGRIbE9ZVzFsTVJRd0VnWURWUVFLDQpEQXREYjIxd1lXNTVUbUZ0WlRFYk1Ca0dBMVVFQ3d3U1EyOXRjR0Z1ZVZObFkzUnBiMjVPWVcxbE1SMHdHd1lEVlFRRERCUkRiMjF0DQpiMjVPWVcxbFQzSkliM04wYm1GdFpUQWVGdzB5TlRBMU16QXdPRFEzTWpCYUZ3MHlOakExTXpBd09EUTNNakJhTUlHR01Rc3dDUVlEDQpWUVFHRXdKWVdERVNNQkFHQTFVRUNBd0pVM1JoZEdWT1lXMWxNUkV3RHdZRFZRUUhEQWhEYVhSNVRtRnRaVEVVTUJJR0ExVUVDZ3dMDQpRMjl0Y0dGdWVVNWhiV1V4R3pBWkJnTlZCQXNNRWtOdmJYQmhibmxUWldOMGFXOXVUbUZ0WlRFZE1Cc0dBMVVFQXd3VVEyOXRiVzl1DQpUbUZ0WlU5eVNHOXpkRzVoYldVd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM0Z3BJNVg2aDJmY3ZjDQpDWGt4RmpQbi9RL2RXYnFZaEtBb3VvQkV1QWhtS2J5QlFvU0VqSGw2WFM2YmU0QzU2ZWx2cnlHQ3lxNGUyUW5VYkhnTDM0Y2xUTFJQDQpwaWhqUk5BR2x1YkJUbndYeEJ3ZmNVMXM4T0lrRkhRUXNML3hPZ1QrbWhtQis0MU9mMDFoZnd5MUdVd292b1QxbTdXZEdTUEl4Y1ZyDQpGZjI3bS95Qm82cDZwQ2VaRndQOEVMYlh2VnptaDZ1c1g5eno1WTVkeHIrSjlnTVN2NGZvUUZQMWRiMEx5d3Q1OHNjM2MyWGd2ZFJSDQpDa1A3RlRrTFluK3ZrMUl5b01aVHQxWWQ0T1lLa2g2MlVyN3RiWjBWSGxTWlczSzVRLzNCSmo1VGlhZW12RHBGUXBZWHIxcU1GMXZoDQpiWENoSktlcER2Z216Rm5GY1huVG9zT1JBZ01CQUFHakxEQXFNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkVMT0I5eWI3WWduDQo0cVpmSm50aFpBeXloU2QvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCMkl0WGVQQklVaGJ6cW1raUpXakdBalhzYXo4aVMrNlBnDQpLMzY1N0JnMkp6cWhsOGlWM2lPTkgzV003bXVycUxsemhTcmM2dkUxVWtiUkhTazR6QXp1Q3pndXBRL0dUSnFLbW5SSjVSZ21EaHFyDQpJSlgycmcrY242NUYzNzBhbndwUzRsTGI5Q1pBQmowOGRBNEVURktCV2tJMHd0dzJZMXRxSkh2U293SkVHRXUrYUc1OXY0WUVnVVZjDQp5UjZ1ekJnbndFN1V3dUtpTmhsQzM3YjVmamxNSk0rSkpwTEtJNFB2RGl5aE53cjlzTlB4OEF0VExUOEhqUWRCeFZwTUVBMndFRkJsDQpDTGFMZGlZU3FkMnljbVdnc1RvTWVyYnJoeHFxUlF1N01HcTJ3RWNxbVNTZkpBNGdqNEN5RXhUQlVkY1RyVElJRVN1K2Y1SnA1MThsDQptTG9sDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQoLCAEAALMBAAIAfDB6MBQGByqGSM49AgEGCSskAwMCCAEBCwNiAAQVJX4yUaEGUtjfaWawgtUdJsJ33Ie95O5VbiqlQ1jioy2z9hmZRjFyDDiyeNFeHAhpQlIOwaPBcwaErbTA6GbR7LaQHYIODVnDKyPXtbhNJmGJOOxnE/ul1lKJV2c25GhxgjbrbvHbgMVWYp/EXPpQACDX8EB1jB8s/7pFyVAw/h/o/QKO/T4IAb/qQ9eNfZdY2wdSLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmdrcWhraUc5dzBCQlF3d0hBUUlDZnNDaGp2WEkyZ0NBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3SFFZSllJWklBV1VEQkFFcUJCQTFkL2hiUTFDQjlZeDB4SjRCOUYxSkJJSUUKMEgrQTRqUEJmeENScE5hT1FrZzNtR0dDREY2SWd4czBabW1WS040RGpIc0pKVjRHYzRaaDdCcTJ2VTEwVkJiVAppRTlHYXhvL1oxNHYyZ0dHZGtWWkZxWTlqU2FYUFBTZVFIbk9XMWh5NHpqMkdRZmFtZDFndU8wbmptL2lJd3k0CjRab3E3dGNNT3RKdCtmVFJxaXhaQkQ3VnFBUTdTUDRFV1JZZjRpSW9ZNmVyRTJ0NlRaMFlFcWR6TnMrSWFOMS8KT2NVNDVqdWRRejJGdXFScFpRb1lRRXB4aStyanpoR1ZsL1g1MVZlZVlMTkpoNjNuK2VDYVNXc1d0cE96Q01DNAoyVFdBWHRIV1FQcG5kM3d2QUFHS3lUWVE5VzMxYzRtZlRSLzhSZ24zaTk4dzhYRVovQ3FBbEJIVnZZU2ZRbWlzClFRVkRBNTJwTml2VUljNVlTZmhRdGhUWWlqaVVabStTOXFUb0NpMVltb1pKbFk3aHNCZHlvS0dMMFFZUk0zUC8KL1VRVXdFNEp4Wm1Xc0dhS2szSk9IUDRRRTZ3amJsZ2xlRWpkOHY4SFp2dlNNbVhVVTVwUS94Tnppa1RnK1k4dApyVUYxWGJpTGIwZWJmWE5FTWEyY0FDTmRKMHNMYWpOcis5Zkk3VENETzliZWd4ZSthVER0VTJrbUJVVlJ3SmRECjBaQk5OcnhvRTdTb2FaWkdKeitkSzUzWEVTUG1NVFlwMTU2aXZpOXFldStwSDBPNTV1QjU5L1czdDZONUZ3TkoKR1NJY0xhV1lNY2Z5UUZKWmhHWFllWGFLclRMNWt4VCtiZmJYS3Ewbk02TWxteXdOT0hmaWNObjNlc1hmeGUrTQpMOGNISDBFQUpYbWVlUGUwL3NWWHJscXVvQUFhYURPTUNzamNGaFIyaEMrU3JlSlJneHZOUklGMmJqbmxlU0U5CkpwZFlEUm9NbWZLbHZTWjlSejhuamlqRWpTMkx5OHZkRzZOcW5jQ3hsQ3BhQUk2NDRLeXh3WW1YVlJkdGJ1RU0KUzIyYXJld2VtWEtMU0lJNnJjYnZ1V3VlTDlXVVFndWQvYUJYRFhteVF4TXBSVzF6KzczbjgxMlcrS095VUZKYwo5cVJBeEhiT0JCNkkwaCtSYzlCRGZlRXFOMjd6cWEzUFBoald2MEpvb2F5V0RRNHZON1hXRm85aitnU2NTSjI2CnhDWjg4WFRRZERkTHJZNUpjRVM1K3IzWVMxcHNuaitwUDNveDRCZTQyb0pFeXkrOHk4N1BZYnU5b1R5WFVTK3kKSjdjczBzTmFNRHhEOUVnaVhwTFFkVFYzZnBlaDBXUUZJTmwxZ05DNGZlV2VjOVFsZDNDOEZ3cUtJaVIyNzdQQwpmNm4yK2JKbXIvdmQ2Ui9tWXhxdkxyd2ZPR3E4L3ZlR1oxWWxzM0pEVVhWRkhvdkhBeWRVb1FWRGZKNG9yaXNsCnJ4b01YWTl0VlRCa1JXRTc4Z202WWY4WDkvSXB4dTdjNVVPTGt4NHA4dFcrMURRRzFlUmpFVlZDTC9XdStSSGsKdDM0SXEzUVhnQjREM2FyeTVNaEhRQmFtVXpVbGkwNXFOSk4yNTZRS2tvZWNteXdzU3haaG92QkpPeWNhWWMrSwpTanFpRHdIaE1KUUMycy91bVA2Z0xCcUlLNDRQQ1BEamNMWDdtQnBmdzV0Z0ZBNTgxTUFvc0hyZzQ3aUFlL1JaCmQ3UC9EREJzdEQvRXc2aDNLU1dxWm5WeFN6eVZlLzVGZGJ1dUg3NWRwQWJXRFZ5b3phUi9aT0VkR3plVG5XUlkKVWsxLzl0ZW5OM1U3SWVISVBXS0w2YWppY1BqV2lQMVVWbjRWek9MbmQwV3pkN2pSS2Y0ajRjTEZONUVUTGlNSgpnbzdiN2o4Ym9JWmxRZGF2VnhvNC9HWVNnOWx5SHFCMWZMSlNKTm1kZnJCZG1yVU55d0NhNGNQQW5qendrN3Y5CkEwRWNmbTcwcEpiMzZHQUxmM0w2dUpNTC80T0hBKzBLNVVySzBQR1AzTmFEOGxPUEZYR0oyazYvczZoUE9adHAKcnZ0V1E3TTRNcGVDUzhneUZXSlE0d09JZkJ0UkE4d3JxOFBPd3RpNmVkZ09HUUNDNTYwSkVmVDVhM0tQQUxYQQp3WFJ4TldmRG5ZaENoVitBbk4vSlJoNC9pS0I0ODhmdGtsSW8rekNYZGNRQQotLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQoAFENvbW1vbk5hbWVPckhvc3RuYW1lAgAAAAAAAAABAAAAAgAAAAAAAAAUAAnrm3TVFTnrmUh/f9zjkaK/yQL8cAUBAAVsLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEeURDQ0FyQ2dBd0lCQWdJVVVpL2lwR01vT3FHeFNuOGRoaGhQaDBySWlJUXdEUVlKS29aSWh2Y05BUUVMQlFBd2dZWXhDekFKDQpCZ05WQkFZVEFsaFlNUkl3RUFZRFZRUUlEQWxUZEdGMFpVNWhiV1V4RVRBUEJnTlZCQWNNQ0VOcGRIbE9ZVzFsTVJRd0VnWURWUVFLDQpEQXREYjIxd1lXNTVUbUZ0WlRFYk1Ca0dBMVVFQ3d3U1EyOXRjR0Z1ZVZObFkzUnBiMjVPWVcxbE1SMHdHd1lEVlFRRERCUkRiMjF0DQpiMjVPWVcxbFQzSkliM04wYm1GdFpUQWVGdzB5TlRBMU16QXdPRFEzTWpCYUZ3MHlOakExTXpBd09EUTNNakJhTUlHR01Rc3dDUVlEDQpWUVFHRXdKWVdERVNNQkFHQTFVRUNBd0pVM1JoZEdWT1lXMWxNUkV3RHdZRFZRUUhEQWhEYVhSNVRtRnRaVEVVTUJJR0ExVUVDZ3dMDQpRMjl0Y0dGdWVVNWhiV1V4R3pBWkJnTlZCQXNNRWtOdmJYQmhibmxUWldOMGFXOXVUbUZ0WlRFZE1Cc0dBMVVFQXd3VVEyOXRiVzl1DQpUbUZ0WlU5eVNHOXpkRzVoYldVd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM0Z3BJNVg2aDJmY3ZjDQpDWGt4RmpQbi9RL2RXYnFZaEtBb3VvQkV1QWhtS2J5QlFvU0VqSGw2WFM2YmU0QzU2ZWx2cnlHQ3lxNGUyUW5VYkhnTDM0Y2xUTFJQDQpwaWhqUk5BR2x1YkJUbndYeEJ3ZmNVMXM4T0lrRkhRUXNML3hPZ1QrbWhtQis0MU9mMDFoZnd5MUdVd292b1QxbTdXZEdTUEl4Y1ZyDQpGZjI3bS95Qm82cDZwQ2VaRndQOEVMYlh2VnptaDZ1c1g5eno1WTVkeHIrSjlnTVN2NGZvUUZQMWRiMEx5d3Q1OHNjM2MyWGd2ZFJSDQpDa1A3RlRrTFluK3ZrMUl5b01aVHQxWWQ0T1lLa2g2MlVyN3RiWjBWSGxTWlczSzVRLzNCSmo1VGlhZW12RHBGUXBZWHIxcU1GMXZoDQpiWENoSktlcER2Z216Rm5GY1huVG9zT1JBZ01CQUFHakxEQXFNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkVMT0I5eWI3WWduDQo0cVpmSm50aFpBeXloU2QvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCMkl0WGVQQklVaGJ6cW1raUpXakdBalhzYXo4aVMrNlBnDQpLMzY1N0JnMkp6cWhsOGlWM2lPTkgzV003bXVycUxsemhTcmM2dkUxVWtiUkhTazR6QXp1Q3pndXBRL0dUSnFLbW5SSjVSZ21EaHFyDQpJSlgycmcrY242NUYzNzBhbndwUzRsTGI5Q1pBQmowOGRBNEVURktCV2tJMHd0dzJZMXRxSkh2U293SkVHRXUrYUc1OXY0WUVnVVZjDQp5UjZ1ekJnbndFN1V3dUtpTmhsQzM3YjVmamxNSk0rSkpwTEtJNFB2RGl5aE53cjlzTlB4OEF0VExUOEhqUWRCeFZwTUVBMndFRkJsDQpDTGFMZGlZU3FkMnljbVdnc1RvTWVyYnJoeHFxUlF1N01HcTJ3RWNxbVNTZkpBNGdqNEN5RXhUQlVkY1RyVElJRVN1K2Y1SnA1MThsDQptTG9sDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQoLCAEAALMBAAIAfDB6MBQGByqGSM49AgEGCSskAwMCCAEBCwNiAAQYHcRvRMV8rPPTAvsPNjriwTJTsar04oTyRB9f4z3iXos/oN8V7VrpwVIuRcCgSp8Jlhl6zFMHV5fakoO6Zmf7cQ83mCM8KTiTmJlI3mNVGXENWjJXM7zrfTZcfLf685DLMiM78rfmkDobee4CZ6k0ACA8ZuAXYAvwhYyUZC78T0rgTCxgI4XMl/ykdTdoF3KusgdSLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmdrcWhraUc5dzBCQlF3d0hBUUlpTVRsTDNNTEZaY0NBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3SFFZSllJWklBV1VEQkFFcUJCQ3czcFM4V3NTU1BoUjZCdllWUHViU0JJSUUKMEFVVWVuaHlObWZkeU9OVXl1ZlcwZC9tMFJqWFZac1JHWmlvbEhscHJ1WUhmbzRoNEs0K2krbS95ZTZMdjE2NgpOVGhPT2Z1T0VWV0U0N3FjSXhzTEFCa1d2YjdLbEZMOGJqa0ZBaVc4dWJNam1zNXFvRlJUWFpxMjV1Z1QwWkgwClFpV3ArZG9DVUJHVlFvNm5QRlBmTFczbUpNcHI2cjkwejlYWmlIZmZGdXZSWXdPM0JBV2JjNytCYzJQZVlBNVEKWUlkWGIzdDBxREliYnJFVTg3MHRscWJ2MndOY3h5KzRDNUN0SWtrKzdkcmVGRm1CVTZQOGliQlRwbFVRWjJWcApXUFI0a0pyWU50N2xBQm9MRndHWGlPQmRiOWtVcE9XNEhBbStvUk4ydExwV3owUEdnbHM0eFFFSXZ4aTZHNWVLCm8vMmtqaU5VdlhwR1EvZUhDMWRLTTZZQ0VqM215SENGT25oZHg5OXBReE4vK1B3Y2VYRWtMeGhkdDljNE81a1gKSSsyYytobmJGNWZpQW5pNTJ1WGhXV1JDenJjRk5ybTZBMlVmeUpRVVR6VTFBYm5sdWNna3dNS1pRMEwrSWc5ZQo5YzVYa1J0U3NQbXZ4YW9yamkyeFZCVVVzTUJVcFowYkt2STcwWE1YUm9QY3h4SVI2ekRjMTQ4SlZmVStySXFWClJubElnQ2JyOEZoSFBWanZCUFRRcWNKa2pDTEhtdWdSamZmdFVFTjJrQWQ1Z3JnVlpTT1hQMWM0SER1K1NtaWIKK1dRYWhtbDd1cE9VYXdJY25hWElQV0E4T01oQTVROWl6d0ltNDBaNjczZ3dXd2RLSiszeXFBNkN2ZitvUGFhMApFSHA3R1ZldHZ5OVdEMVJ6eE1wT3V3YUgzM1d2TmZYRWxwM2JHbG4rUnRNdWhVZVErbTcxZk9aR0NjYWFhUzU1CnF2ZW5ESDlpdXlkelZoRGI1K25uZmRDcUdyK0svNHE1SjB2TWtTWkRSTjl1UE81d2M1ZG1sMEx4QnE4MmVGcnIKRkJaSGZRcVF2QmNQQ0UyV0QvSEdDc2tFQWErRmNWei9jRHUxZUFSd2NMSGhhaENTYlFZQWVBeU5lNXZDQ3JkQQpMSWNXdGxUUlMxZHFXcFdSSU92b0ZXREpXY2x4QmVsYVZPWmhwVFFMeVU5SlFkOVc2ZTBRM0NqWWZPbzJWSzE1ClROV2Y4S25RTU1oekw4b1FQUXg3bEFJWHArZmowdTdzODFWdzVXWGlWM09iUVJ4ZS95MlRYSG91NlpRWnhVcmgKR3JlU3g4aXZvbnJrRFlIUm54NFlpbVRyWmlnVU5IcHNsaTlSbkpsZUhFT1hJc1ZRajhLMVh3anVoS2xodDk0cwpqT2ZVV0dESE5qR09DUnRoa2t3ZW1oRFluZU10S0h2TCt6NGFTNXBoZy9GUnRPWU9BNTVXYUx3N1NnbW52NDRiClhsVzNzS1lUb3dRZVEwNUNjQWo2RkRtRlhPOTVIWGQvaC8wcEl1N3JoZ0dmM2pMQnNZR2JiQmNMV3NqZnh4QU0KQUxVaHVKS3RDWlZsYklINmZ3NWJUWU82OGgwYjNGQ1praUt2OGxhT2Voa2lUSEpvWlM4UjBrdmMwNkRnRGR6TAppM0VDWk9GSGRycHJjVzB4ai8ydm41bHBvaE5Sa0xORDY1Zi9OUzEzRUIzdWgrcVVpTzN3NlpLb0llK3U5R3ZHCncxWWxNTEZvSmwvVDRhekZ0VDBBWWtRVDhmQkt6d3VBb0U2MkhOVXNxMEI1T0pSSVFnZXdkdThSaHNRYW1OV2kKMmN6SW8xTWlrOGhERVlpOTY5VDJQYzN1UytwQS9lQ3B6aHZyNjRPZ3NLSGhsd3VrYzhTdE9CSEtCUzZOTlR3MQo1dlpqS3daN1ZTYW5Xa0RnZlpwNTdiL0xPcTRLY0RJMU4yOHBPRVZBSGFzM0h2WFFSMGF3K255RUZSOFhYTTNiCkhtTGNlRDRVaC9rK0ttOTl5dlFmaDBUVU9lamFuYW95SlZ4TE1EZDA5UDF6V05WL25sdCtlc2pXaXF1M1FZOWIKZkpxcS9IbHhNUHBQQ1JhRSs1NXk3cWhMb3lkczd6THE2UTQ3dzQySWRyYmF3WEpiN3RGMWZWQ2lIZ1drU3pENApEZmprd2hZU1hkZ2I0WlhWQTM1ZnBLVEU5WmRhaEJnRUZQeWdXUnYxMlgvbwotLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQoA", - "UserData": "AgAAAAAAAAAAAAAAAAAAAAEAAAADAGFkbXQAAAABAAABAQABBQAAJxAAAAAg6t8BV79Pa0LeyzfceggGI1nGViJQ1djoL3S8Mgwmor0AAABArA6kLuWvZfFzIAwMRGpVxzMlP/ecWM7wmmQlLRtFdx6pDIodvx87K5AEhOmQ6Rnkg6K/LWBKiIHZ5lGzylGThQA=", + "PKIData": "AQAAAAAAAAAAAAAAAAAAAAEBAewdAAAAAAAAAAAAAAAAAwAAAN8ALS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkFYOGc3a3I0QU5rQ0N5TXJ3Sy9Rem9xL3NpNgpUaXZhOUJLVko2Z3VXQmJqODhFWS9DdVh5eG1tZ2h0S0FhS0Z5bno5U0pFeWY3V0VxdVdnamZ6RFNNN1BPNHdaCmtabWdMRjI3WVpVaUZqeVY5WEFqU2krUzUwS0FVNUZzVTMzaDV3PT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCnsBAQACAAAnEAAgj6pb1Nhdi/uu8oTrbzfGaV/tlDOm55SNjxEW0Tl70/ABACAADAAQHF+jeXlKuXBE27yS5cj0lQEAAAE2W989SJQ2soB2fzxq6d1fop1+mZIkclCSZhGOPO43/KOnQx7VV6JJG8PaO+xU5RfZAz2vbHd8m4+QfC6aaKuyl6bcxikxLlHMNY2HrDTIyudJaXaa/4ATf9wPEvtt8ExEZp23L2AcT62ce70rh7HMDLX5bdE3WSpZQRYNtK8MqLeYqLKiZfm2gXooL3xUdv0QWO/+V9xv49eYgvOSKSiWQ3+yfwPyPcQPNuP35OK1ihR9Y/7gR79m0p/uvjU2aIWf92HO7sPaz1MZwUEY0xT5cPJZ/F/n60jP0JB9mcsPoATMet/7pw3OdxWXuUOovhRqgbWu9k+MGHcsAKPD3IfXEkuIynSWr5hrDYlAvUE/NfRSYtXE0GGzN/R85T7EyMELQWvVYyBP7WXq4/gNkOcQl3N8aCWdPQIAFENvbW1vbk5hbWVPckhvc3RuYW1lAQAAAAAAAAABAAAAAgAAAAAAAAAUAAnrm3TVFTnrmUh/f9zjkaK/yQL8cAUBAAVsLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEeURDQ0FyQ2dBd0lCQWdJVVVpL2lwR01vT3FHeFNuOGRoaGhQaDBySWlJUXdEUVlKS29aSWh2Y05BUUVMQlFBd2dZWXhDekFKDQpCZ05WQkFZVEFsaFlNUkl3RUFZRFZRUUlEQWxUZEdGMFpVNWhiV1V4RVRBUEJnTlZCQWNNQ0VOcGRIbE9ZVzFsTVJRd0VnWURWUVFLDQpEQXREYjIxd1lXNTVUbUZ0WlRFYk1Ca0dBMVVFQ3d3U1EyOXRjR0Z1ZVZObFkzUnBiMjVPWVcxbE1SMHdHd1lEVlFRRERCUkRiMjF0DQpiMjVPWVcxbFQzSkliM04wYm1GdFpUQWVGdzB5TlRBMU16QXdPRFEzTWpCYUZ3MHlOakExTXpBd09EUTNNakJhTUlHR01Rc3dDUVlEDQpWUVFHRXdKWVdERVNNQkFHQTFVRUNBd0pVM1JoZEdWT1lXMWxNUkV3RHdZRFZRUUhEQWhEYVhSNVRtRnRaVEVVTUJJR0ExVUVDZ3dMDQpRMjl0Y0dGdWVVNWhiV1V4R3pBWkJnTlZCQXNNRWtOdmJYQmhibmxUWldOMGFXOXVUbUZ0WlRFZE1Cc0dBMVVFQXd3VVEyOXRiVzl1DQpUbUZ0WlU5eVNHOXpkRzVoYldVd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM0Z3BJNVg2aDJmY3ZjDQpDWGt4RmpQbi9RL2RXYnFZaEtBb3VvQkV1QWhtS2J5QlFvU0VqSGw2WFM2YmU0QzU2ZWx2cnlHQ3lxNGUyUW5VYkhnTDM0Y2xUTFJQDQpwaWhqUk5BR2x1YkJUbndYeEJ3ZmNVMXM4T0lrRkhRUXNML3hPZ1QrbWhtQis0MU9mMDFoZnd5MUdVd292b1QxbTdXZEdTUEl4Y1ZyDQpGZjI3bS95Qm82cDZwQ2VaRndQOEVMYlh2VnptaDZ1c1g5eno1WTVkeHIrSjlnTVN2NGZvUUZQMWRiMEx5d3Q1OHNjM2MyWGd2ZFJSDQpDa1A3RlRrTFluK3ZrMUl5b01aVHQxWWQ0T1lLa2g2MlVyN3RiWjBWSGxTWlczSzVRLzNCSmo1VGlhZW12RHBGUXBZWHIxcU1GMXZoDQpiWENoSktlcER2Z216Rm5GY1huVG9zT1JBZ01CQUFHakxEQXFNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkVMT0I5eWI3WWduDQo0cVpmSm50aFpBeXloU2QvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCMkl0WGVQQklVaGJ6cW1raUpXakdBalhzYXo4aVMrNlBnDQpLMzY1N0JnMkp6cWhsOGlWM2lPTkgzV003bXVycUxsemhTcmM2dkUxVWtiUkhTazR6QXp1Q3pndXBRL0dUSnFLbW5SSjVSZ21EaHFyDQpJSlgycmcrY242NUYzNzBhbndwUzRsTGI5Q1pBQmowOGRBNEVURktCV2tJMHd0dzJZMXRxSkh2U293SkVHRXUrYUc1OXY0WUVnVVZjDQp5UjZ1ekJnbndFN1V3dUtpTmhsQzM3YjVmamxNSk0rSkpwTEtJNFB2RGl5aE53cjlzTlB4OEF0VExUOEhqUWRCeFZwTUVBMndFRkJsDQpDTGFMZGlZU3FkMnljbVdnc1RvTWVyYnJoeHFxUlF1N01HcTJ3RWNxbVNTZkpBNGdqNEN5RXhUQlVkY1RyVElJRVN1K2Y1SnA1MThsDQptTG9sDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQoLCAEAALMBAAIAfDB6MBQGByqGSM49AgEGCSskAwMCCAEBCwNiAARTA/Qv5B9MnZpFeHOwXZW53SIh/xgGNcjT1TPevyQA6pSNBc+H7WJqVEBp1kP9EQxNR2npPKkzTm+ctoiI3KaGPFMvjm9f36+WW27HgNI0D8/2qViWTGsdlVLEe6r9U0yTH5PPdzV2wrpsIq9TYH0IACCjI4mi085WOT+deW4xYakgwPLYJ3Hc5zRS4pSzNHcpMwdSLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmdrcWhraUc5dzBCQlF3d0hBUUlKQ09IMFhpQ3NMSUNBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3SFFZSllJWklBV1VEQkFFcUJCQlZ4Q2RBZkZ0ZDZxNHVjdGVXdDNQSUJJSUUKME9CME1GQ2VFb2U4aXkyV1NPSWZsdkNtc2FmNEQxUHN0dnh1cmIwVmd6QmtWYTZMMEdhQms1QkdkWlM1K2JYdwpzYjh6WndCVFZhMy9ObWFobnFPRkg5dFJxSGJwalgxRXd0YVVYeFBIUHZUdmwrcTk4dWZpU2M1N3AvL3dnZ2huCkRSYnhLUjlndHpUdTJIOXFSTDU3S3BWRGx3YUo0Q1M4TTFYblVMdWNUUXZiNzg1N2xRZ1p6NlZBeUludVpGcFoKdUZLUWJLOVFQK1dUUlgvS1ZjYjFGOFdpOWZjNkt2cHZCWXhQd3VBS2todzdjRC9pT2o0QW9YU1NrdWFPR0JCQQpXMVZYZHFUNU50emJseUhHVFk0NnRMVFAxS3RpdnpaWnBHZ29OUVVaL2NPRHkyeTNCMXNDVGdsd2NXejhIM2M2CkprbmIwbFlnckNjdDVsUDB3L2hsaVZPWG9zbC94T3d5a0w4Y0pDRldERGRKMFh4Q1U0S3ZSSWZGaWJQa0tXOHYKL0JKeStDWWx0WEgycXNUR045S0dpSVZ1UmhlLzVNN0lhYjB6aEN2TTJhd2RGWkxyc25TanZkV2RlVGRjSzZpQgpLQjNWUVBiZDZ2RkRPR05mY3NleEJPUW05dlMvL001VWdJWkp0MTE5Q3kvcFQ1WVM3MWNkaFBJN2JTVU5UTlJ4CmhWeUZ0d0Z4OWJuc2VsNHBhK2UwRWk3d3pmME5KZXF3cmJtYlBhUE5qdDVvYzVlMmQySGFZSFQ4ZFM2UVVDS1IKZy9iRWNUWkM2TEZMWWpqQzBZYmZZbVhKQXFxMk1mV2tmQUdlWlorOHRVTVhoUVRvMW5mbHVhTmwrTUNSbW5zUwpMS3RnNFV1MnJ3cTNDeEJiamlHVmQxUXM5M084VE5zNitPT01MQkttMCtVM2ZzZHRpeG5GNk9GalZ3azd5UWVRCnNqRll2dHF0MVhCUDE4bmdVaENDZGRMbnJ3NVRWUlBFQ3RseTdiK1pBQ0dDL05EdG01aXNxQ2tKYVRyRU1BenQKMzZraGI3U0lqYVl6V1RKN25aVWs1WEJqandoNGVTTUFNUDBueDVIRGhmYThCZmFDanRkRUNyMEJpY3JhekNWdQoxZ2tGU3RCYk1VbmUyR2ovL0UzOFR6R1FhaTJLelBOdnA0bDdSTDBnc0dncjhRZVZXaXU0Skg3QkxUNkdYTTNICnNreU12MzN6emxRdThjYjNrTVVSREVCQXEySXEyODZGUHlxNWcrT3VwcEYvMHpJOWdYOStoOEpRRGNSdWhNNk4KNm4weU9oUi94MmVqSzlSNHZXUDFodS91cWlseExyQnJqUC9EU1U4RmoyWHBTb2pCTGZOY3RLdDR4MGtINE5hbwpZdVlEdWx0U0ZKeFE0bTVudUNGZ1ZhdkZCVmVWNUF1QURPRGloTC9ET1BESkJSNTh3NW1IRW5ZOFEzYmFZNGlICnVWSUJ2SXQ5YVZqR2EvaE5leW85YncxS0V6VCtoVDREa1ZnbnMrN2VNU3AxS1FZTDZDS1hncitsZVg0ZlpJUzAKV05McVNkT0xpMkJhRmZ5YUs1dW0veTViTWZhUDYxUDJHYncxMFl0Z1g0Slc2OVRSRENTQ0l4Z2NDdnRrU09CawowcGxVcUNmbjd6UzZpTGh2TGNWQUFXN3JCNEt0bXZlUEREWC8zWHY4U2tjTXMxbXFDMkE2cFdPL2g2dEtmUnB6CnRxRHJKeWpTT2J6eE1YZm5jaE1jTVAzdVdzYkY2UmFkeU1KajN2M1F4SUtwcWY3RlpPRVR6N3dqUjg3bGdsWGYKdndTRUdhcTdJNGpQazd4VDN4ai9PbzdzOFJ4a3VkWWRXQnErU3pJZG5JRWdGdjJmMEJ2bGlYVzcxd2I5ajBTQwppMVUwdkVkemE1bWFEcmtMbGFacUR4MjR2RFZvMlhSdDNPLzJyTXplVEF5M0lnUWF5NWRDRVlUSjFHKzdlSndCCjZXVFlWeEhPVGVLa09lZXUzYXkzdjl3SXV3NnBCS04zbGJMM1dZa3Z3QVAyODJndjFnd1F2VmxPWFd3eG9YOFkKOXp3VDB1OHE5QjU4dHZ3TW9wQWZsOVIxbEhkYy91bnM5OUZRbVp2c3M5NnBuUXMwZVBUaGhOSFV4SzRNd2luOQpvTlZacVM3cTJPblpqd0xRRDVpcmNpYlRVdUZYR05pZXhScU1BTExhbmU1MQotLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQoAFENvbW1vbk5hbWVPckhvc3RuYW1lAgAAAAAAAAABAAAAAgAAAAAAAAAUAAnrm3TVFTnrmUh/f9zjkaK/yQL8cAUBAAVsLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEeURDQ0FyQ2dBd0lCQWdJVVVpL2lwR01vT3FHeFNuOGRoaGhQaDBySWlJUXdEUVlKS29aSWh2Y05BUUVMQlFBd2dZWXhDekFKDQpCZ05WQkFZVEFsaFlNUkl3RUFZRFZRUUlEQWxUZEdGMFpVNWhiV1V4RVRBUEJnTlZCQWNNQ0VOcGRIbE9ZVzFsTVJRd0VnWURWUVFLDQpEQXREYjIxd1lXNTVUbUZ0WlRFYk1Ca0dBMVVFQ3d3U1EyOXRjR0Z1ZVZObFkzUnBiMjVPWVcxbE1SMHdHd1lEVlFRRERCUkRiMjF0DQpiMjVPWVcxbFQzSkliM04wYm1GdFpUQWVGdzB5TlRBMU16QXdPRFEzTWpCYUZ3MHlOakExTXpBd09EUTNNakJhTUlHR01Rc3dDUVlEDQpWUVFHRXdKWVdERVNNQkFHQTFVRUNBd0pVM1JoZEdWT1lXMWxNUkV3RHdZRFZRUUhEQWhEYVhSNVRtRnRaVEVVTUJJR0ExVUVDZ3dMDQpRMjl0Y0dGdWVVNWhiV1V4R3pBWkJnTlZCQXNNRWtOdmJYQmhibmxUWldOMGFXOXVUbUZ0WlRFZE1Cc0dBMVVFQXd3VVEyOXRiVzl1DQpUbUZ0WlU5eVNHOXpkRzVoYldVd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM0Z3BJNVg2aDJmY3ZjDQpDWGt4RmpQbi9RL2RXYnFZaEtBb3VvQkV1QWhtS2J5QlFvU0VqSGw2WFM2YmU0QzU2ZWx2cnlHQ3lxNGUyUW5VYkhnTDM0Y2xUTFJQDQpwaWhqUk5BR2x1YkJUbndYeEJ3ZmNVMXM4T0lrRkhRUXNML3hPZ1QrbWhtQis0MU9mMDFoZnd5MUdVd292b1QxbTdXZEdTUEl4Y1ZyDQpGZjI3bS95Qm82cDZwQ2VaRndQOEVMYlh2VnptaDZ1c1g5eno1WTVkeHIrSjlnTVN2NGZvUUZQMWRiMEx5d3Q1OHNjM2MyWGd2ZFJSDQpDa1A3RlRrTFluK3ZrMUl5b01aVHQxWWQ0T1lLa2g2MlVyN3RiWjBWSGxTWlczSzVRLzNCSmo1VGlhZW12RHBGUXBZWHIxcU1GMXZoDQpiWENoSktlcER2Z216Rm5GY1huVG9zT1JBZ01CQUFHakxEQXFNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkVMT0I5eWI3WWduDQo0cVpmSm50aFpBeXloU2QvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCMkl0WGVQQklVaGJ6cW1raUpXakdBalhzYXo4aVMrNlBnDQpLMzY1N0JnMkp6cWhsOGlWM2lPTkgzV003bXVycUxsemhTcmM2dkUxVWtiUkhTazR6QXp1Q3pndXBRL0dUSnFLbW5SSjVSZ21EaHFyDQpJSlgycmcrY242NUYzNzBhbndwUzRsTGI5Q1pBQmowOGRBNEVURktCV2tJMHd0dzJZMXRxSkh2U293SkVHRXUrYUc1OXY0WUVnVVZjDQp5UjZ1ekJnbndFN1V3dUtpTmhsQzM3YjVmamxNSk0rSkpwTEtJNFB2RGl5aE53cjlzTlB4OEF0VExUOEhqUWRCeFZwTUVBMndFRkJsDQpDTGFMZGlZU3FkMnljbVdnc1RvTWVyYnJoeHFxUlF1N01HcTJ3RWNxbVNTZkpBNGdqNEN5RXhUQlVkY1RyVElJRVN1K2Y1SnA1MThsDQptTG9sDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQoLCAEAALMBAAIAfDB6MBQGByqGSM49AgEGCSskAwMCCAEBCwNiAASE6lA1E4I5D+zqc3KdJbYX7atQd44rSZtsM1f3uC2TLLZ0qXeMJSm6LDYns0Dq5uR8ou5Xz3S1norcNANvCoCxNvC0sNNhScpOYbNQfOB45E36jMFnzuzkGImG+9RwHjOGbI3MhOdoJ1j64D+ngMhnACBPQ0f7Iq4ljEjHr1wTj1W8lUs/LcxABZ7iiJbh9dj9IAdSLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmdrcWhraUc5dzBCQlF3d0hBUUlBZXBmZ2pRZVF0SUNBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3SFFZSllJWklBV1VEQkFFcUJCRGZCK3RkRFRLQXRMUTZYTnNldTk1a0JJSUUKMEM2KzJEYVk0eFgzZ3U4MjRiaFVIbGNmcHo1NnY4MkhiT0gvTEJSRmI5amtWdU9jTHk3ZUk0RHoybkdkRFo2cQpzbjgrZ1d2bTVTaElMOWY4N2FqcGZ1VkZHOTRYZE1mQzBSMDNpSzNoRnNuWEJXTDRXTHNIZXFNUEdJOE9FclBQCmVYY0duNnJJOVZ3QmR0aVZzWTRtN1hLR0VaSGdiOXA0S2Y3bTZDUlhBemN1MDYyN2g3a1VJa09ZZU1HT1VNSkYKN05pRWZnRDR1NkpHTU4zNzRCblZNVjhBSktuZ09SUFJ5Z0hsZXJhTkRFSGZsZzBYb2txbmpITjk5ZnpUa1dINwp3SmxFdnFKL3NLaWxaSnBSN1l6ZVZmNTRYdmpNbHg1d05XSTZPY3dybFVick9QUUxOUmlwK0xBdVY2SjFPQm8rCmtQcGhETVkxNmw3d1p6Qnc0R1VVWE1qdFJVWFFZSUd6c05zYUw0czlDREx6RTBjTFE3NTlSZE15SVJ6UHRLengKa2dDbnVzR201eUExOGxSNTRWWFptWUhwYmVKdlNLMFZ3SnhubHdMUTRMREZHcWpOU1hreGw3VEVDeUVvbVpRZQpqUVhyRXB4UE9JWmNDUUlUMnppU3Z0UFdHZjhZUzFKL0xSWlZob2tVRENPTHhEMEVpY0FYYXhnY2FXUVcwL3BtCi9OM3dtRTFBdjc4Ym9WbFpXbFhkbkhjektGVDZiRkpZRFZCaXZOY3M3TlRaL3AvWUlsMGFPMjlpUnhZSVpWeEIKTCtQSkxrejVGU2U1Tzg4VjJSTm9zNyt6TWdhVjNIdmtka2hFR0J2bi9RWEhsQXZOUEhOakdmL0laQi9jMERGcAplS1drQmpPa29Wa0k4elcvT09EVDlkMzdLamYyRTZLZk1adWNSdlJ5OHVlZWFKVTI3QUZEMVlucHlsQTVkTUh1Cm5abW1rcmRLYmFrYUFpT1VKMGUxdmJuY3lOaE1XR1RTZXpneCtvVmtEd3ZHRk9qQ0NETGdZcDF0dmJKdmNuQ3AKZ0p4ZEptbFVKeXFFSkVKZ01RQXNkYjEvMndDbW5aTDlsVUQ4NC9SeGZDY0xCbFQ2cTdkY3NDeWpOK1pwRHM0bQp4RGxCYnJjTjUvYU83QjMxYlZ6a0VRQUF4SS9YWnI3QkRnMmtIdUNmZUd5N1VvYks4eW5ZM1AyUDFRWWZKVXJsCmVqandnNTdEY3NRVkdpbFF5cThOZ1pMM0tacjk2dnpPZU9wcEdtb1ZlenJFRkF5ZEh1VURjQ2RTS25BcjZRbWUKZjZBZHRnck93V3RIZ0p5VFZmTFNHYnRKNHcwaVFiV041aEgvcVVjMlZWcjlxVnMrejd2NWNlVExoRFBJampFdgpmUS9MUlVsYWhGaCswOE9HNkNrSmk1MGMwMmFvZzJGaHNDOWtEUXR3NVdNS09wNkVrb0tEUG5mK3pseWNQSm5OCno0Z09aMTRLRkc4dTdueGNZOUh4NkQ5eDJnM0dJQWN5dFZnWWhWaVFWYnlFQUNkNGpXV2h2SFZDd21FMG95ajMKUUJ3d1Z2NTgwT29GeHZVeFRza0JIbUk4TVprYmR0U3BhSHNvcXhMVFB4ZW1HOFlibmxiNFVWWGp2M1NqSUozdApFd3JjbVppZ1JFNjE1M2V3cHFYM3E4MVM0TFFEcElnMGNLbUZFTmloZzZIcGhpQ2NwT3cvakdESUdSdVFBTlFuCklNVk8yZDRxZEMyU0lIdWFTWDBmZTFRRzJHa01ZbnJiUzZqQXdzUFloL016L3d6NGI3MDVaaTB5RGFVZmdVeDMKNHpKMnZLYjFJNUV2N0R1UEZGeHNmcDBUR2xVZHhsTlBpWTVOeGgzUSt0Nlk1aGF4TGg3MWFNYTE1QTRIQUc5SQp2bHJhbjdoY1M1dExzY0paTlp4Qmw2cUo1WkVZcHBRZFpoNU1OaWwzbmpHSVFzbktVdXRlbFdMaE0zbElsUUhuClF5MWZNVTJJVUpWK0hvUGQyR1VueVh6Q2hTeXQ1MlNNMVNkQWdEVTVWZ2pyNUJkSTBXRjRicGlvVStPZkZjNDcKOTlCYmpzTHdUY1dOWnpRYlFvNXNQUWVFRndBUnVSYWZ2amdYNFRXVS9VR0JOYkJxVElFSmlNaTVkSkM3Vjk4cgpST00vU093cW1tUWtHRytjMzFUZDI1bFIweFJrbDZHY3A4Y2cvdlA4cm4zSwotLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQoA", + "UserData": "AgAAAAAAAAAAAAAAAAAAAAEAAAADAGFkbXQAAAABAAABAQABBQAAJxAAAAAgS+Q9So1GhrWY6kSz22sV8gen4Fni6JNriJketIvFkCAAAABA2mspsyV+a6aX1Mtr/t9dl+7Uf8uM4tIape5E6F6Ho4xAItM5s7QJBdsskEDsqwLhhLJltScYZCSCa/wUSNV6uAA=", "CertificateAssignments": { "TLS": 1, "WebServer": 2 }, - "AccessProtectionData": "AQAAAAAAAAAAAAAAAAAAAAABAABQAAAAAAEBAAAAAgDQBwAAIADHubeUwG4VO1EVl4HRzkWFkC2uRUSckPqhFEtApZ+JpCAAKXZ77LHc+0srj0bTeJj3CJAnEca/gMBdTp6XkotxJvJQAAAAAAEBAAAAAgDQBwAAIADHubeUwG4VO1EVl4HRzkWFkC2uRUSckPqhFEtApZ+JpCAAd4xyau1Cjf42rhyY2jL+4Aegk7Yj03RHBXbZoHboFapQAAAAAAEBAAAAAgDQBwAAIADHubeUwG4VO1EVl4HRzkWFkC2uRUSckPqhFEtApZ+JpCAAKXZ77LHc+0srj0bTeJj3CJAnEca/gMBdTp6XkotxJvJQAAAAAAEBAAAAAgDQBwAAIADHubeUwG4VO1EVl4HRzkWFkC2uRUSckPqhFEtApZ+JpCAAKXZ77LHc+0srj0bTeJj3CJAnEca/gMBdTp6XkotxJvIgAAAAx7m3lMBuFTtRFZeB0c5FhZAtrkVEnJD6oRRLQKWfiaQ=" + "AccessProtectionData": "AQAAAAAAAAAAAAAAAAAAAAABAABQAAAAAAEBAAAAAgDQBwAAIAB4Z66EcflCTTVBFTw4YnCylXynaPhDyQVFgwSGXZ5lMSAAjteWhbDVmjOLGZh5AepCREDKOPz3+oxPLyAa8PwCughQAAAAAAEBAAAAAgDQBwAAIAB4Z66EcflCTTVBFTw4YnCylXynaPhDyQVFgwSGXZ5lMSAArvJb+L6KpxXsvHwTBZ1m+kBbbdykDMW2XDV3vjyaG+lQAAAAAAEBAAAAAgDQBwAAIAB4Z66EcflCTTVBFTw4YnCylXynaPhDyQVFgwSGXZ5lMSAAjteWhbDVmjOLGZh5AepCREDKOPz3+oxPLyAa8PwCughQAAAAAAEBAAAAAgDQBwAAIAB4Z66EcflCTTVBFTw4YnCylXynaPhDyQVFgwSGXZ5lMSAAjteWhbDVmjOLGZh5AepCREDKOPz3+oxPLyAa8PwCugggAAAAeGeuhHH5Qk01QRU8OGJwspV8p2j4Q8kFRYMEhl2eZTE=" } \ No newline at end of file diff --git a/src/AXSharp.connectors/tests/ax-test-project/ix/Resources/PlcStringResources.resx b/src/AXSharp.connectors/tests/ax-test-project/ix/Resources/PlcStringResources.resx new file mode 100644 index 00000000..e8ae276d --- /dev/null +++ b/src/AXSharp.connectors/tests/ax-test-project/ix/Resources/PlcStringResources.resx @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/sanbox/integration/ix-integration-plc/apax.yml b/src/sanbox/integration/ix-integration-plc/apax.yml index 9b0dfb50..62413ea6 100644 --- a/src/sanbox/integration/ix-integration-plc/apax.yml +++ b/src/sanbox/integration/ix-integration-plc/apax.yml @@ -83,8 +83,8 @@ variables: HWCONFIG: "HWC" COM_CERT_PATH: .\certs\Communication.cer scripts: - ixc: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net9.0 - ixd: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixr\\AXSharp.ixr.csproj --framework net9.0 + ixc: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net10.0 + ixd: dotnet run --project ..\\..\\..\\AXSharp.compiler\\src\\ixr\\AXSharp.ixr.csproj --framework net10.0 postbuild: - apax ixc - apax ixd diff --git a/src/tests.integrations/integrated/src/ax/apax.yml b/src/tests.integrations/integrated/src/ax/apax.yml index a875ae16..2f261fc8 100644 --- a/src/tests.integrations/integrated/src/ax/apax.yml +++ b/src/tests.integrations/integrated/src/ax/apax.yml @@ -18,8 +18,8 @@ variables: COM_CERT_PATH: .\certs\Communication.cer scripts: ixc: - - dotnet run --project ..\\..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net9.0 - postbuild: dotnet run --project ..\\..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net9.0 + - dotnet run --project ..\\..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net10.0 + postbuild: dotnet run --project ..\\..\\..\\..\\AXSharp.compiler\\src\\ixc\\AXSharp.ixc.csproj --framework net10.0 download: apax sld load --accept-security-disclaimer -t $AXTARGET -i $AXTARGETPLATFORMINPUT -r -C $COM_CERT_PATH --password $AX_TARGET_PWD --username $AX_USERNAME installStrategy: overridable apaxVersion: 3.1.1 diff --git a/templates/working/AXSharp.templates.csproj b/templates/working/AXSharp.templates.csproj index 4cabc264..d66c6760 100644 --- a/templates/working/AXSharp.templates.csproj +++ b/templates/working/AXSharp.templates.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 Template AXSharp.templates AXSharp templates diff --git a/test_L10.ps1 b/test_L10.ps1 index 891be513..21ef541e 100644 --- a/test_L10.ps1 +++ b/test_L10.ps1 @@ -1,4 +1,4 @@ # run build -dotnet run --project cake/Build.csproj --do-test --test-level 10 --framework net9.0 +dotnet run --project cake/Build.csproj --do-test --test-level 10 --framework net10.0 exit $LASTEXITCODE; \ No newline at end of file diff --git a/test_L2.ps1 b/test_L2.ps1 index 3d16e17b..95d3d007 100644 --- a/test_L2.ps1 +++ b/test_L2.ps1 @@ -1,4 +1,4 @@ # run build -dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 --framework net9.0 +dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 --framework net10.0 exit $LASTEXITCODE; \ No newline at end of file From 783a819bac510d53acc41a55773180722a444e5c Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:40:31 +0100 Subject: [PATCH 3/5] Update Build.csproj for executable output configuration Removed the `` property specifying `net9.0` and updated the `` to configure the project as an executable. Added `` set to `Exe`, `` set to `$(MSBuildProjectDirectory)`, and `` set to `false`. These changes shift the project focus to producing a runnable application rather than a library or package. --- cake/Build.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cake/Build.csproj b/cake/Build.csproj index 299450d4..277be026 100644 --- a/cake/Build.csproj +++ b/cake/Build.csproj @@ -1,6 +1,5 @@  - - net9.0 + Exe $(MSBuildProjectDirectory) false From f3528fb574c9de9a74e2cd5785e8d2a0a0a349ab Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:51:39 +0100 Subject: [PATCH 4/5] Update project files and workflows to target .NET 10.0, removing references to .NET 9.0 --- .github/workflows/dev.yml | 4 +-- .github/workflows/master.yml | 2 +- .github/workflows/pr-dev.yml | 2 +- .github/workflows/release.yml | 2 +- Directory.Packages.props | 28 ++++++++----------- build.ps1 | 2 +- cake/BuildContext.cs | 4 +-- pack-only.ps1 | 2 +- .../src/AXSharp.Cs.Compiler/CsProject.cs | 4 +-- src/AXSharp.compiler/src/ixc/apax.yml | 6 ++-- src/AXSharp.compiler/src/ixd/apax.yml | 6 ++-- src/AXSharp.compiler/src/ixr/apax.yml | 6 ++-- .../ConditionalDependenciesTests.cs | 10 +++---- .../axsharpblazor.twin/axsharpblazor.csproj | 2 +- .../axsharpblazor.twin.csproj | 2 +- .../axsharpconsole.twin/axsharpconsole.csproj | 2 +- .../axsharpconsole/axsharpconsole.app.csproj | 2 +- 17 files changed, 40 insertions(+), 46 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index a4ea1932..8e0e1d2b 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -35,13 +35,13 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'false' }} env: GH_TOKEN : ${{ secrets.GH_TOKEN }} - run: dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 --framework net9.0 + run: dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 - name: "Publish packages" if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true' }} env: GH_TOKEN: ${{ secrets.GH_TOKEN }} GH_USER: ${{ secrets.GH_USER }} - run: dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 --do-publish --do-publish-release --framework net9.0 + run: dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 --do-publish --do-publish-release # - name: Test Report # uses: dorny/test-reporter@v1 # if: success() || failure() diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index ef3f9868..413cbf1e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -35,7 +35,7 @@ jobs: - name: "Run build script" env: GH_TOKEN : ${{ secrets.GH_TOKEN }} - run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 100 --do-publish true --do-publish-release true --framework net9.0 + run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 100 --do-publish true --do-publish-release true - name: Test Report uses: dorny/test-reporter@v1 if: success() || failure() diff --git a/.github/workflows/pr-dev.yml b/.github/workflows/pr-dev.yml index ac10a15d..3defe322 100644 --- a/.github/workflows/pr-dev.yml +++ b/.github/workflows/pr-dev.yml @@ -27,7 +27,7 @@ jobs: run: dotnet build cake/Build.csproj - name: "Run build script" - run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 1 --framework net9.0 + run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 1 - name: Test Report uses: dorny/test-reporter@v1 if: success() || failure() diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f66f418c..234c1a8b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: - name: "Run build script" env: GH_TOKEN : ${{ secrets.GH_TOKEN }} - run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 2 --do-publish true --do-publish-release true --framework net9.0 + run: dotnet run --project cake/Build.csproj --do-test true --do-pack true --test-level 2 --do-publish true --do-publish-release true - name: Test Report uses: dorny/test-reporter@v1 if: success() || failure() diff --git a/Directory.Packages.props b/Directory.Packages.props index dc3fd519..46181176 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -57,21 +57,17 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/build.ps1 b/build.ps1 index 57738055..2dcbcf73 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,3 +1,3 @@ # run build -dotnet run --project cake/Build.csproj --framework net9.0 -- $args +dotnet run --project cake/Build.csproj -- $args exit $LASTEXITCODE; \ No newline at end of file diff --git a/cake/BuildContext.cs b/cake/BuildContext.cs index d6ef591b..73399999 100644 --- a/cake/BuildContext.cs +++ b/cake/BuildContext.cs @@ -91,7 +91,7 @@ public BuildContext(ICakeContext context, BuildParameters buildParameters) DotNetRunSettings = new DotNetRunSettings() { Verbosity = buildParameters.Verbosity, - Framework = "net9.0", + Framework = "net10.0", Configuration = buildParameters.Configuration, NoBuild = true, NoRestore = true, @@ -185,7 +185,7 @@ public void PushNugetPackages(string artifactDirectory) //} } - public IEnumerable TargetFrameworks { get; } = new List() { "net10.0", "net9.0" }; + public IEnumerable TargetFrameworks { get; } = new List() { "net10.0" }; public string ApaxSignKey { get; set; } = System.Environment.GetEnvironmentVariable("APAX_KEY"); public string GitHubUser { get; set; } = System.Environment.GetEnvironmentVariable("GH_USER"); public string GitHubToken { get; set; } = System.Environment.GetEnvironmentVariable("GH_TOKEN"); diff --git a/pack-only.ps1 b/pack-only.ps1 index 74929845..8a68dd4a 100644 --- a/pack-only.ps1 +++ b/pack-only.ps1 @@ -1,4 +1,4 @@ # run build -dotnet run --project cake/Build.csproj --do-pack --test-level 1 --framework net9.0 +dotnet run --project cake/Build.csproj --do-pack --test-level 1 exit $LASTEXITCODE; \ No newline at end of file diff --git a/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs b/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs index 64292649..9d1fef09 100644 --- a/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs +++ b/src/AXSharp.compiler/src/AXSharp.Cs.Compiler/CsProject.cs @@ -138,7 +138,7 @@ private void EnsureCsProjFile() var defaultCsProjectWhenNotProvidedByTemplate = $@" - net9.0;net10.0 + net10.0 enable enable @@ -709,7 +709,7 @@ internal static (Dictionary properties, List targetFramew if (frameworks.Count == 0) { // default fallback - frameworks.Add("net9.0"); + frameworks.Add("net10.0"); } return (props, frameworks); } diff --git a/src/AXSharp.compiler/src/ixc/apax.yml b/src/AXSharp.compiler/src/ixc/apax.yml index 5f056211..3dd30a8f 100644 --- a/src/AXSharp.compiler/src/ixc/apax.yml +++ b/src/AXSharp.compiler/src/ixc/apax.yml @@ -18,11 +18,11 @@ bugs: license: "MIT" author: "https://github.com/Inxton/axsharp/graphs/contributors" files: - - "bin/Release/net9.0/**" - - "!bin/Release/net9.0/.apax/.apax/**" + - "bin/Release/net10.0/**" + - "!bin/Release/net10.0/.apax/.apax/**" contributedCommands: ixc: - bin: "bin/Release/net9.0/AXSharp.ixc.exe" + bin: "bin/Release/net10.0/AXSharp.ixc.exe" description: "AX#Sharp twin compiler" hidden: false diff --git a/src/AXSharp.compiler/src/ixd/apax.yml b/src/AXSharp.compiler/src/ixd/apax.yml index 7815f69a..c9920890 100644 --- a/src/AXSharp.compiler/src/ixd/apax.yml +++ b/src/AXSharp.compiler/src/ixd/apax.yml @@ -18,10 +18,10 @@ bugs: license: "MIT" author: "https://github.com/Inxton/axsharp/graphs/contributors" files: - - "bin/Release/net9.0/**" - - "!bin/Release/net9.0/.apax/.apax/**" + - "bin/Release/net10.0/**" + - "!bin/Release/net10.0/.apax/.apax/**" contributedCommands: ixd: - bin: "bin/Release/net9.0/AXSharp.ixd.exe" + bin: "bin/Release/net10.0/AXSharp.ixd.exe" description: "AX#Sharp documentation compiler" hidden: false diff --git a/src/AXSharp.compiler/src/ixr/apax.yml b/src/AXSharp.compiler/src/ixr/apax.yml index 690b2f07..e57c15cd 100644 --- a/src/AXSharp.compiler/src/ixr/apax.yml +++ b/src/AXSharp.compiler/src/ixr/apax.yml @@ -18,10 +18,10 @@ bugs: license: "MIT" author: "https://github.com/Inxton/axsharp/graphs/contributors" files: - - "bin/Release/net9.0/**" - - "!bin/Release/net9.0/.apax/.apax/**" + - "bin/Release/net10.0/**" + - "!bin/Release/net10.0/.apax/.apax/**" contributedCommands: ixr: - bin: "bin/Release/net9.0/AXSharp.ixr.exe" + bin: "bin/Release/net10.0/AXSharp.ixr.exe" description: "AX#Sharp resources compiler" hidden: false diff --git a/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs b/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs index d18abe5c..9c4a95fd 100644 --- a/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs +++ b/src/AXSharp.compiler/tests/AXSharp.CompilerTests/ConditionalDependenciesTests.cs @@ -33,7 +33,7 @@ public void should_respect_itemgroup_condition_targetframework() var csproj = """ - net8.0;net10.0 + net10.0 @@ -48,9 +48,8 @@ public void should_respect_itemgroup_condition_targetframework() var ax = new AXSharpProject(new AxProject(projDir), Array.Empty(), typeof(CsProject), new CompilerTestOptions(){ OutputProjectFolder = projDir}); var target = (CsProject)ax.TargetProject; var refs = target.LoadReferences().OfType().ToList(); - Assert.Contains(refs, r => r.Include == "PkgOnlyNet8"); - // Assert.Contains(refs, r => r.Include == "PkgOnlyNet9"); we only use single target framework in this test, so net9.0 package should not be included - Assert.DoesNotContain(refs, r => r.Include == "PkgOnlyNet9"); + Assert.DoesNotContain(refs, r => r.Include == "PkgOnlyNet8"); + Assert.Contains(refs, r => r.Include == "PkgOnlyNet10"); } [Fact] @@ -69,8 +68,7 @@ public void should_respect_element_condition_inside_itemgroup() - - + """; diff --git a/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.csproj b/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.csproj index 664ca4bc..7e8c92c8 100644 --- a/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.csproj +++ b/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.twin.csproj b/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.twin.csproj index 46f4a777..5ca35eba 100644 --- a/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.twin.csproj +++ b/templates/working/templates/axsharpblazor/axsharpblazor.twin/axsharpblazor.twin.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/templates/working/templates/axsharpconsole/axsharpconsole.twin/axsharpconsole.csproj b/templates/working/templates/axsharpconsole/axsharpconsole.twin/axsharpconsole.csproj index 46f4a777..1d0e1d73 100644 --- a/templates/working/templates/axsharpconsole/axsharpconsole.twin/axsharpconsole.csproj +++ b/templates/working/templates/axsharpconsole/axsharpconsole.twin/axsharpconsole.csproj @@ -1,6 +1,6 @@ - net9.0;net10.0 + net10.0 enable enable diff --git a/templates/working/templates/axsharpconsole/axsharpconsole/axsharpconsole.app.csproj b/templates/working/templates/axsharpconsole/axsharpconsole/axsharpconsole.app.csproj index cb56ced5..9f72a80e 100644 --- a/templates/working/templates/axsharpconsole/axsharpconsole/axsharpconsole.app.csproj +++ b/templates/working/templates/axsharpconsole/axsharpconsole/axsharpconsole.app.csproj @@ -1,7 +1,7 @@ Exe - net9.0;net10.0 + net10.0 enable enable From 3dd532182c5d96cadc910c9f9267df48611c8150 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:58:46 +0100 Subject: [PATCH 5/5] Fix TargetFrameworks property to TargetFramework in Directory.Build.props --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 23921317..d2cda7eb 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - net10.0 + net10.0