Files
Marc Schier 7fb986bd0d Add recycling operator console and sample container images (#4810)
# Description

Add a local browser-based operator console for the synthetic recycling
line, using direct, encrypted OPC UA connections and the existing typed
coordination interface.

- Extract a sample-local, non-packable `Recycling.Client` library shared
by the server and console. Preserve the model XML bytes, namespace/type
identifiers, resource identity, wire format and journal schema; the
server retains its .NET 8/9/10 targets.
- Add a .NET 10 ASP.NET Core workstation host with bounded SSE
state/trend delivery, native companion inspection, paged
material/genealogy reads, and role-limited coordinator commands. Exact
command envelopes are retained for explicit retries; uncertain outcomes
are not automatically reissued.
- Add the operator interface using local HTML/SVG, CSS and JavaScript
modules: ten process groups, substep inspection, faults/constraints,
persistent quality holds, trends, material tracing and simulator
administration. Show raw quality/provenance and handle stale data, run
changes, browser expiry and large identifiers explicitly. No
browser-generated plant telemetry or frontend framework/npm build is
introduced.
- Keep application/user credentials in external certificate stores. Use
strict X.509 trust, signed/encrypted UA sessions, local browser
bootstrap sessions, same-origin/CSRF checks, and a conservative
configured control ceiling. This is a local synthetic sample, not a
physical emergency-stop or shared remote-user system.
- Register `recyclingserver` and `recyclingclient` in the existing
Images CI matrix, using source/prebuilt Dockerfile stages and the
existing portable-IL/multiarchitecture packaging flow. Add an optional
loopback-published Compose console service. No new schedules or NuGet
publication entries are added.
- Add managed, real-UA, Chromium, NativeAOT and image-contract
qualification, with Microsoft.Playwright as a test-only centrally
managed dependency, and update usage/deployment documentation.

## Checklist

_Put an `x` in the boxes that apply. You can complete these step by step
after opening the PR._

- [ ] I have signed the
[CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf)
and read the
[CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md)
doc.
- [ ] I have added tests that prove my fix is effective or that my
feature works and increased code coverage.
- [x] I have added all necessary documentation.
- [x] I have verified that my changes do not introduce (new) build or
analyzer warnings.
- [ ] I ran **all** tests locally using the **UA.slnx** solution against
at least .net **framework** and .net **10**, and all passed.
- [ ] I fixed **all** failing and flaky tests in the CI pipelines and
**all** CodeQL warnings.
- [ ] I have addressed **all** PR feedback received.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-17 16:16:29 +02:00

481 lines
30 KiB
XML

<Solution>
<Folder Name="/samples/">
<File Path="samples/UAReferenceServer.ctt.xml" />
<Project Path="samples/WotCon/AggregationClient/AggregationClient.csproj" />
<Project Path="samples/WotCon/AggregationServer/AggregationServer.csproj" />
<Project Path="samples/WotCon/FlatTagServer/FlatTagServer.csproj" />
<Project Path="samples/Robotics/MinimalRobotServer/MinimalRobotServer.csproj" />
<Project Path="samples/Robotics/IntentEnabledRobot/IntentEnabledRobot.csproj" />
<Project Path="samples/Robotics/IntentViewerClient/IntentViewerClient.csproj" />
<Project Path="samples/Robotics/BinPickingCell/BinPickingCell.csproj" />
<Project Path="samples/Robotics/BinPickingClient/BinPickingClient.csproj" />
<Project Path="samples/Vision/VisualInspectionCell/VisualInspectionCell.csproj" />
<Project Path="samples/Vision/VisualInspectionAgent/VisualInspectionAgent.csproj" />
<Project Path="samples/Vision/MachineVisionServer/MachineVisionServer.csproj" />
<Project Path="samples/Vision/MachineVisionClient/MachineVisionClient.csproj" />
<Project Path="samples/CompanionSuite/CompanionSuite.csproj" />
<Project Path="samples/GMS/GmsClient/GmsClient.csproj" />
<Project Path="samples/GMS/GmsServer/GmsServer.csproj" />
<Project Path="samples/MachineTool/MachineToolClient/MachineToolClient.csproj" />
<Project Path="samples/MachineTool/MachineToolServer/MachineToolServer.csproj" />
<Project Path="samples/Quickstarts.Servers/Quickstarts.Servers.csproj" />
</Folder>
<Folder Name="/samples/AI/">
<Project Path="samples/AI/ModelManagementServer/ModelManagementServer.csproj" />
<Project Path="samples/AI/ModelManagementClient/ModelManagementClient.csproj" />
</Folder>
<Folder Name="/samples/AMB/">
<Project Path="samples/AMB/AmbServer/AmbServer.csproj" />
<Project Path="samples/AMB/AmbClient/AmbClient.csproj" />
</Folder>
<Folder Name="/samples/CranesHoists/">
<Project Path="samples/CranesHoists/CranesHoistsClient/CranesHoistsClient.csproj" />
<Project Path="samples/CranesHoists/CranesHoistsServer/CranesHoistsServer.csproj" />
</Folder>
<Folder Name="/samples/DI/">
<Project Path="samples/DI/PumpDeviceIntegrationServer/PumpDeviceIntegrationServer.csproj" />
</Folder>
<Folder Name="/samples/FluentApi/">
<Project Path="samples/FluentApi/BasicFluentApiServer/BasicFluentApiServer.csproj" />
</Folder>
<Folder Name="/samples/Gds/">
<Project Path="samples/Gds/OnboardingClient/OnboardingClient.csproj" />
<Project Path="samples/Gds/OnboardingRegistrar/OnboardingRegistrar.csproj" />
</Folder>
<Folder Name="/samples/Machinery/">
<Project Path="samples/Machinery/MachineryServer/MachineryServer.csproj" />
<Project Path="samples/Machinery/MachineryClient/MachineryClient.csproj" />
</Folder>
<Folder Name="/samples/Pumps/">
<Project Path="samples/Pumps/PumpsServer/PumpsServer.csproj" />
<Project Path="samples/Pumps/PumpsClient/PumpsClient.csproj" />
</Folder>
<Folder Name="/samples/Scales/">
<Project Path="samples/Scales/ScalesServer/ScalesServer.csproj" />
<Project Path="samples/Scales/ScalesClient/ScalesClient.csproj" />
</Folder>
<Folder Name="/samples/Isa95/">
<Project Path="samples/Isa95/MinimalIsa95Server/MinimalIsa95Server.csproj" />
</Folder>
<Folder Name="/samples/Lds/">
<Project Path="samples/Lds/ConsoleLdsServer/ConsoleLdsServer.csproj" />
</Folder>
<Folder Name="/samples/MinimalApi/">
<Project Path="samples/MinimalApi/MinimalBoilerServer/MinimalBoilerServer.csproj" />
<Project Path="samples/MinimalApi/MinimalCalcServer/MinimalCalcServer.csproj" />
<Project Path="samples/MinimalApi/MinimalClient/MinimalClient.csproj" />
</Folder>
<Folder Name="/samples/OpenUsd/">
<Project Path="samples/OpenUsd/GeneratorServer/GeneratorServer.csproj" />
<Project Path="samples/OpenUsd/SiteCompositionServer/SiteCompositionServer.csproj" />
</Folder>
<Folder Name="/samples/PubSub/">
<Project Path="samples/PubSub/ConsoleReferencePubSubClient/ConsoleReferencePubSubClient.csproj" />
</Folder>
<Folder Name="/samples/Recycling/">
<Project Path="samples/Recycling/Recycling.Client/Recycling.Client.csproj" />
<Project Path="samples/Recycling/RecyclingOperatorConsole/RecyclingOperatorConsole.csproj" />
<Project Path="samples/Recycling/RecyclingServer/RecyclingServer.csproj" />
</Folder>
<Folder Name="/samples/Redundancy/">
<Project Path="samples/Redundancy/RedundantClient/RedundantClient.csproj" />
<Project Path="samples/Redundancy/RedundantPubSub/RedundantPubSub.csproj" />
<Project Path="samples/Redundancy/RedundantServer/RedundantServer.csproj" />
</Folder>
<Folder Name="/samples/Reference/">
<Project Path="samples/Reference/ConsoleReferenceClient/ConsoleReferenceClient.csproj" />
<Project Path="samples/Reference/ConsoleReferenceServer/ConsoleReferenceServer.csproj" />
</Folder>
<Folder Name="/fuzzing/">
<File Path="fuzzing/Fuzzing.md" />
<File Path="fuzzing/fuzz-targets.json" />
<File Path="fuzzing/fuzz-parity.runsettings" />
<Project Path="fuzzing/Opc.Ua.Certificates.Fuzz/Opc.Ua.Certificates.Fuzz.csproj" />
<Project Path="fuzzing/Opc.Ua.Certificates.Fuzz.Tests/Opc.Ua.Certificates.Fuzz.Tests.csproj" />
<Project Path="fuzzing/Opc.Ua.Certificates.Fuzz.Tools/Opc.Ua.Certificates.Fuzz.Tools.csproj" />
<Project Path="fuzzing/Opc.Ua.Encoders.Fuzz/Opc.Ua.Encoders.Fuzz.csproj" />
<Project Path="fuzzing/Opc.Ua.Encoders.Fuzz.Tests/Opc.Ua.Encoders.Fuzz.Tests.csproj" />
<Project Path="fuzzing/Opc.Ua.Encoders.Fuzz.Tools/Opc.Ua.Encoders.Fuzz.Tools.csproj" />
<Project Path="fuzzing/Opc.Ua.Fuzzing.Tests/Opc.Ua.Fuzzing.Tests.csproj" />
<Project Path="fuzzing/Opc.Ua.Network.Fuzz/Opc.Ua.Network.Fuzz.csproj" />
<Project Path="fuzzing/Opc.Ua.Network.Fuzz.Tests/Opc.Ua.Network.Fuzz.Tests.csproj" />
<Project Path="fuzzing/Opc.Ua.Network.Fuzz.Tools/Opc.Ua.Network.Fuzz.Tools.csproj" />
<Project Path="fuzzing/Opc.Ua.PubSub.Fuzz/Opc.Ua.PubSub.Fuzz.csproj" />
<Project Path="fuzzing/Opc.Ua.PubSub.Fuzz.Tests/Opc.Ua.PubSub.Fuzz.Tests.csproj" />
<Project Path="fuzzing/Opc.Ua.PubSub.Fuzz.Tools/Opc.Ua.PubSub.Fuzz.Tools.csproj" />
<Project Path="fuzzing/OneFuzz/Opc.Ua.OneFuzz.Validator/Opc.Ua.OneFuzz.Validator.csproj" />
<Project Path="fuzzing/OneFuzz/Opc.Ua.OneFuzz.Validator.Tests/Opc.Ua.OneFuzz.Validator.Tests.csproj" />
<Project Path="fuzzing/OneFuzz/Opc.Ua.OneFuzz.TestTarget/Opc.Ua.OneFuzz.TestTarget.csproj" />
</Folder>
<Folder Name="/fuzzing/Common/Fuzz/">
<File Path="fuzzing/Common/Fuzz/FuzzMethods.cs" />
<File Path="fuzzing/Common/Fuzz/Program.cs" />
</Folder>
<Folder Name="/fuzzing/Common/" />
<Folder Name="/fuzzing/Common/Fuzz.Tests/">
<File Path="fuzzing/Common/Fuzz.Tests/FuzzProcessWatchdog.cs" />
<File Path="fuzzing/Common/Fuzz.Tests/FuzzReplayProgram.cs" />
<File Path="fuzzing/Common/Fuzz.Tests/FuzzTargetFunction.cs" />
<File Path="fuzzing/Common/Fuzz.Tests/FuzzTargetTestsBase.cs" />
<File Path="fuzzing/Common/Fuzz.Tests/TestAssetUtils.cs" />
<File Path="fuzzing/Common/Fuzz.Tests/TestcaseAsset.cs" />
</Folder>
<Folder Name="/fuzzing/Common/Fuzz.Tools/">
<File Path="fuzzing/Common/Fuzz.Tools/Logging.cs" />
<File Path="fuzzing/Common/Fuzz.Tools/Playback.cs" />
<File Path="fuzzing/Common/Fuzz.Tools/Program.cs" />
<File Path="fuzzing/Common/Fuzz.Tools/Testcases.cs" />
</Folder>
<Folder Name="/fuzzing/Dictionaries/">
<File Path="fuzzing/Dictionaries/asn1.dict" />
<File Path="fuzzing/Dictionaries/binary.dict" />
<File Path="fuzzing/Dictionaries/json.dict" />
<File Path="fuzzing/Dictionaries/nodeid.dict" />
<File Path="fuzzing/Dictionaries/tcp.dict" />
<File Path="fuzzing/Dictionaries/uasc.dict" />
<File Path="fuzzing/Dictionaries/xml.dict" />
</Folder>
<Folder Name="/fuzzing/Scripts/">
<File Path="fuzzing/Scripts/build-onefuzz.ps1" />
<File Path="fuzzing/Scripts/fuzz-afl.ps1" />
<File Path="fuzzing/Scripts/fuzz-libfuzzer.ps1" />
<File Path="fuzzing/Scripts/fuzz-menu.ps1" />
<File Path="fuzzing/Scripts/install.sh" />
<File Path="fuzzing/Scripts/readme.txt" />
<File Path="fuzzing/Scripts/test-fuzzing.ps1" />
<File Path="fuzzing/Scripts/validate-fuzz-manifest.ps1" />
</Folder>
<Folder Name="/src/">
<Project Path="src/Opc.Ua.Client.ComplexTypes/Opc.Ua.Client.ComplexTypes.csproj" />
<Project Path="src/Opc.Ua.Client/Opc.Ua.Client.csproj" />
<Project Path="src/Opc.Ua.Configuration/Opc.Ua.Configuration.csproj" />
<Project Path="src/Opc.Ua.CranesHoists.Client/Opc.Ua.CranesHoists.Client.csproj" />
<Project Path="src/Opc.Ua.CranesHoists.Server/Opc.Ua.CranesHoists.Server.csproj" />
<Project Path="src/Opc.Ua.CranesHoists/Opc.Ua.CranesHoists.csproj" />
<Project Path="src/Opc.Ua.Di.Client/Opc.Ua.Di.Client.csproj" />
<Project Path="src/Opc.Ua.Di.Server/Opc.Ua.Di.Server.csproj" />
<Project Path="src/Opc.Ua.Di/Opc.Ua.Di.csproj" />
<Project Path="src/Opc.Ua.GMS.Client/Opc.Ua.GMS.Client.csproj" />
<Project Path="src/Opc.Ua.GMS.Server/Opc.Ua.GMS.Server.csproj" />
<Project Path="src/Opc.Ua.GMS/Opc.Ua.GMS.csproj" />
<Project Path="src/Opc.Ua.IA/Opc.Ua.IA.csproj" />
<Project Path="src/Opc.Ua.ECM/Opc.Ua.ECM.csproj" />
<Project Path="src/Opc.Ua.PADIM/Opc.Ua.PADIM.csproj" />
<Project Path="src/Opc.Ua.PackML/Opc.Ua.PackML.csproj" />
<Project Path="src/Opc.Ua.Machinery/Opc.Ua.Machinery.csproj" />
<Project Path="src/Opc.Ua.Machinery.Jobs/Opc.Ua.Machinery.Jobs.csproj" />
<Project Path="src/Opc.Ua.Machinery.Result/Opc.Ua.Machinery.Result.csproj" />
<Project Path="src/Opc.Ua.Machinery.ProcessValues/Opc.Ua.Machinery.ProcessValues.csproj" />
<Project Path="src/Opc.Ua.Machinery.Energy/Opc.Ua.Machinery.Energy.csproj" />
<Project Path="src/Opc.Ua.Machinery.Server/Opc.Ua.Machinery.Server.csproj" />
<Project Path="src/Opc.Ua.Machinery.Client/Opc.Ua.Machinery.Client.csproj" />
<Project Path="src/Opc.Ua.OpenUsd/Opc.Ua.OpenUsd.csproj" />
<Project Path="src/Opc.Ua.OpenUsd.Server/Opc.Ua.OpenUsd.Server.csproj" />
<Project Path="src/Opc.Ua.OpenUsd.Client/Opc.Ua.OpenUsd.Client.csproj" />
<Project Path="src/Opc.Ua.Positioning/Opc.Ua.Positioning.csproj" />
<Project Path="src/Opc.Ua.PlasticsRubber.Client/Opc.Ua.PlasticsRubber.Client.csproj" />
<Project Path="src/Opc.Ua.PlasticsRubber.Server/Opc.Ua.PlasticsRubber.Server.csproj" />
<Project Path="src/Opc.Ua.PlasticsRubber/Opc.Ua.PlasticsRubber.csproj" />
<Project Path="src/Opc.Ua.Positioning.Client/Opc.Ua.Positioning.Client.csproj" />
<Project Path="src/Opc.Ua.Positioning.Server/Opc.Ua.Positioning.Server.csproj" />
<Project Path="src/Opc.Ua.Pumps/Opc.Ua.Pumps.csproj" />
<Project Path="src/Opc.Ua.Pumps.Client/Opc.Ua.Pumps.Client.csproj" />
<Project Path="src/Opc.Ua.Pumps.Server/Opc.Ua.Pumps.Server.csproj" />
<Project Path="src/Opc.Ua.Scales/Opc.Ua.Scales.csproj" />
<Project Path="src/Opc.Ua.Scales.Client/Opc.Ua.Scales.Client.csproj" />
<Project Path="src/Opc.Ua.Scales.Server/Opc.Ua.Scales.Server.csproj" />
<Project Path="src/Opc.Ua.AMB/Opc.Ua.AMB.csproj" />
<Project Path="src/Opc.Ua.AMB.Client/Opc.Ua.AMB.Client.csproj" />
<Project Path="src/Opc.Ua.AMB.Server/Opc.Ua.AMB.Server.csproj" />
<Project Path="src/Opc.Ua.Robotics/Opc.Ua.Robotics.csproj" />
<Project Path="src/Opc.Ua.Robotics.Server/Opc.Ua.Robotics.Server.csproj" />
<Project Path="src/Opc.Ua.Robotics.Client/Opc.Ua.Robotics.Client.csproj" />
<Project Path="src/Opc.Ua.Vision/Opc.Ua.Vision.csproj" />
<Project Path="src/Opc.Ua.Vision.Client/Opc.Ua.Vision.Client.csproj" />
<Project Path="src/Opc.Ua.Vision.Server/Opc.Ua.Vision.Server.csproj" />
<Project Path="src/Opc.Ua.MachineVision/Opc.Ua.MachineVision.csproj" />
<Project Path="src/Opc.Ua.MachineTool.Client/Opc.Ua.MachineTool.Client.csproj" />
<Project Path="src/Opc.Ua.MachineTool.Server/Opc.Ua.MachineTool.Server.csproj" />
<Project Path="src/Opc.Ua.MachineTool/Opc.Ua.MachineTool.csproj" />
<Project Path="src/Opc.Ua.MachineVision.Client/Opc.Ua.MachineVision.Client.csproj" />
<Project Path="src/Opc.Ua.MachineVision.Server/Opc.Ua.MachineVision.Server.csproj" />
<Project Path="src/Opc.Ua.Vision.OpenUsd/Opc.Ua.Vision.OpenUsd.csproj" />
<Project Path="src/Opc.Ua.Gds/Opc.Ua.Gds.csproj" />
<Project Path="src/Opc.Ua.Extrusion.Client/Opc.Ua.Extrusion.Client.csproj" />
<Project Path="src/Opc.Ua.Extrusion.Server/Opc.Ua.Extrusion.Server.csproj" />
<Project Path="src/Opc.Ua.Extrusion/Opc.Ua.Extrusion.csproj" />
<Project Path="src/Opc.Ua.Gds.Client/Opc.Ua.Gds.Client.csproj" />
<Project Path="src/Opc.Ua.Gds.Server/Opc.Ua.Gds.Server.csproj" />
<Project Path="src/Opc.Ua.ISA95.Client/Opc.Ua.ISA95.Client.csproj" />
<Project Path="src/Opc.Ua.ISA95.Server/Opc.Ua.ISA95.Server.csproj" />
<Project Path="src/Opc.Ua.ISA95/Opc.Ua.ISA95.csproj" />
<Project Path="src/Opc.Ua.Lds.Server/Opc.Ua.Lds.Server.csproj" />
<Project Path="src/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj" />
<Project Path="src/Opc.Ua.Redundancy/Opc.Ua.Redundancy.csproj" />
<Project Path="src/Opc.Ua.PubSub.Adapter/Opc.Ua.PubSub.Adapter.csproj" />
<Project Path="src/Opc.Ua.PubSub.Diagnostics/Opc.Ua.PubSub.Diagnostics.csproj" />
<Project Path="src/Opc.Ua.PubSub.Mqtt/Opc.Ua.PubSub.Mqtt.csproj" />
<Project Path="src/Opc.Ua.PubSub.Schema/Opc.Ua.PubSub.Schema.csproj" />
<Project Path="src/Opc.Ua.PubSub.Server/Opc.Ua.PubSub.Server.csproj" />
<Project Path="src/Opc.Ua.PubSub.Eth/Opc.Ua.PubSub.Eth.csproj" />
<Project Path="src/Opc.Ua.PubSub.Kafka/Opc.Ua.PubSub.Kafka.csproj" />
<Project Path="src/Opc.Ua.PubSub.Udp/Opc.Ua.PubSub.Udp.csproj" />
<Project Path="src/Opc.Ua.Redundancy.PubSub/Opc.Ua.Redundancy.PubSub.csproj" />
<Project Path="src/Opc.Ua.Server/Opc.Ua.Server.csproj" />
<Project Path="src/Opc.Ua.AI/Opc.Ua.AI.csproj" />
<Project Path="src/Opc.Ua.AI.Inference/Opc.Ua.AI.Inference.csproj" />
<Project Path="src/Opc.Ua.AI.Server/Opc.Ua.AI.Server.csproj" />
<Project Path="src/Opc.Ua.AI.Client/Opc.Ua.AI.Client.csproj" />
<Project Path="src/Opc.Ua.XRegistry/Opc.Ua.XRegistry.csproj" />
<Project Path="src/Opc.Ua.XRegistry.Client/Opc.Ua.XRegistry.Client.csproj" />
<Project Path="src/Opc.Ua.XRegistry.Server/Opc.Ua.XRegistry.Server.csproj" />
<Project Path="src/Opc.Ua.Redundancy.Server/Opc.Ua.Redundancy.Server.csproj" />
<Project Path="src/Opc.Ua.Redundancy.Client/Opc.Ua.Redundancy.Client.csproj" />
<Project Path="src/Opc.Ua.Redundancy.Kubernetes/Opc.Ua.Redundancy.Kubernetes.csproj" />
<Project Path="src/Opc.Ua.WotCon/Opc.Ua.WotCon.csproj" />
<Project Path="src/Opc.Ua.WotCon.Bindings/Opc.Ua.WotCon.Bindings.csproj" />
<Project Path="src/Opc.Ua.WotCon.Bindings.Mqtt/Opc.Ua.WotCon.Bindings.Mqtt.csproj" />
<Project Path="src/Opc.Ua.WotCon.Client/Opc.Ua.WotCon.Client.csproj" />
<Project Path="src/Opc.Ua.WotCon.Server/Opc.Ua.WotCon.Server.csproj" />
<Project Path="src/Opc.Ua.Bindings.Https/Opc.Ua.Bindings.Https.csproj" />
<Project Path="src/Opc.Ua.Core/Opc.Ua.Core.csproj" />
<Project Path="src/Opc.Ua.Core.Types/Opc.Ua.Core.Types.csproj" />
<Project Path="src/Opc.Ua.Core.Diagnostics/Opc.Ua.Core.Diagnostics.csproj" />
<Project Path="src/Opc.Ua.Core.Schema/Opc.Ua.Core.Schema.csproj" />
<Project Path="src/Opc.Ua.Security.Certificates/Opc.Ua.Security.Certificates.csproj" />
<Project Path="src/Opc.Ua.Security.Pkcs11/Opc.Ua.Security.Pkcs11.csproj" />
<Project Path="src/Opc.Ua.Types/Opc.Ua.Types.csproj" />
</Folder>
<Folder Name="/Solution Items/">
<File Path=".dockerignore" />
<File Path=".editorconfig" />
<File Path=".gitattributes" />
<File Path=".github/copilot-instructions.md" />
<File Path=".gitignore" />
<File Path="common.props" />
<File Path="coverage-thresholds.json" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path="README.md" />
<File Path="targets.props" />
<File Path="tests/benchmarks.cmd" />
<File Path="tests/codecoverage.cmd" />
<File Path="tests/codecoverage.sh" />
<File Path="tests/coverlet.runsettings.xml" />
<File Path="tests/customtest.bat" />
<File Path="version.json" />
<File Path="version.props" />
</Folder>
<Folder Name="/Solution Items/Actions/">
<File Path=".github/workflows/buildandtest.yml" />
<File Path=".github/workflows/codeql-analysis.yml" />
<File Path=".github/workflows/docker-image.yml" />
<File Path=".github/workflows/stability-test.yml" />
</Folder>
<Folder Name="/Solution Items/Azurepipelines/">
<File Path=".azurepipelines/check-coverage.ps1" />
<File Path=".azurepipelines/set-version.ps1" />
<File Path=".azurepipelines/signlistDebug.txt" />
<File Path=".azurepipelines/signlistRelease.txt" />
</Folder>
<Folder Name="/Solution Items/Nuget/">
<File Path="nuget/Opc.Ua.nuspec" />
</Folder>
<Folder Name="/Solution Items/docs/">
<File Path="docs/Aggregates.md" />
<File Path="docs/AlarmsAndConditions.md" />
<File Path="docs/AliasNames.md" />
<File Path="docs/AsyncServerSupport.md" />
<File Path="docs/AuthorizationService.md" />
<File Path="docs/CertificateManager.md" />
<File Path="docs/Certificates.md" />
<File Path="docs/ComplexTypes.md" />
<File Path="docs/ContainerReferenceServer.md" />
<File Path="docs/CoreNodeManagerVsCustomNodeManager2.md" />
<File Path="docs/DependencyInjection.md" />
<File Path="docs/DeveloperGuide.md" />
<File Path="docs/DeviceIntegration.md" />
<File Path="docs/Diagnostics.md" />
<File Path="docs/DurableSubscription.md" />
<File Path="docs/EccProfiles.md" />
<File Path="docs/FileSystemClient.md" />
<File Path="docs/GDS.md" />
<File Path="docs/HistoricalAccess.md" />
<File Path="docs/IdentityProviders.md" />
<File Path="docs/KeyCredentialService.md" />
<File Path="docs/McpServer.md" />
<File Path="docs/MigrationGuide.md" />
<File Path="docs/ModelChangeTracking.md" />
<File Path="docs/ModelDependencies.md" />
<File Path="docs/NativeAoT.md" />
<File Path="docs/NodeManagement.md" />
<File Path="docs/NodeSetExport.md" />
<File Path="docs/Profiles.md" />
<File Path="docs/ProvisioningMode.md" />
<File Path="docs/PubSub.md" />
<File Path="docs/README.md" />
<File Path="docs/ReleaseProcess.md" />
<File Path="docs/ReverseConnect.md" />
<File Path="docs/RoleBasedUserManagement.md" />
<File Path="docs/Sessions.md" />
<File Path="docs/SoftwareUpdate.md" />
<File Path="docs/SourceGeneratedDataTypes.md" />
<File Path="docs/SourceGeneratedNodeManagers.md" />
<File Path="docs/StateMachines.md" />
<File Path="docs/Subscriptions.md" />
<File Path="docs/TransferSubscription.md" />
<File Path="docs/WhatsNewIn2.0.md" />
<File Path="docs/WoTConnectivity.md" />
</Folder>
<Folder Name="/Solution Items/docs/migrate/" />
<Folder Name="/Solution Items/docs/migrate/2.0.x/">
<File Path="docs/migrate/2.0.x/alarms-model-change.md" />
<File Path="docs/migrate/2.0.x/certificates.md" />
<File Path="docs/migrate/2.0.x/configuration.md" />
<File Path="docs/migrate/2.0.x/encoders.md" />
<File Path="docs/migrate/2.0.x/identity.md" />
<File Path="docs/migrate/2.0.x/node-states.md" />
<File Path="docs/migrate/2.0.x/packages.md" />
<File Path="docs/migrate/2.0.x/pubsub.md" />
<File Path="docs/migrate/2.0.x/README.md" />
<File Path="docs/migrate/2.0.x/sessions-subscriptions.md" />
<File Path="docs/migrate/2.0.x/source-generation.md" />
<File Path="docs/migrate/2.0.x/telemetry.md" />
<File Path="docs/migrate/2.0.x/timeprovider.md" />
<File Path="docs/migrate/2.0.x/types.md" />
</Folder>
<Folder Name="/Solution Items/docs/perf/">
<File Path="docs/perf/PooledNotificationBenchmarks.md" />
</Folder>
<Folder Name="/Solution Items/Skills/">
<File Path=".github/agents/coverage-test-generator.agent.md" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/Opc.Ua.Client.ComplexTypes.Tests/Opc.Ua.Client.ComplexTypes.Tests.csproj" />
<Project Path="tests/Opc.Ua.Recycling.Samples.Tests/Opc.Ua.Recycling.Samples.Tests.csproj" />
<Project Path="tests/Opc.Ua.Recycling.Operator.Tests/Opc.Ua.Recycling.Operator.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Client.Tests/Opc.Ua.Redundancy.Client.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Schema.Tests/Opc.Ua.Core.Schema.Tests.csproj" />
<Project Path="tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj" />
<Project Path="tests/Opc.Ua.Aot.Tests/Opc.Ua.Aot.Tests.csproj" />
<Project Path="tests/Opc.Ua.Aot.Tests.Historian/Opc.Ua.Aot.Tests.Historian.csproj" />
<Project Path="tests/Opc.Ua.Aot.Tests.Mcp/Opc.Ua.Aot.Tests.Mcp.csproj" />
<Project Path="tests/Opc.Ua.Configuration.Tests/Opc.Ua.Configuration.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Encoders.Tests/Opc.Ua.Core.Encoders.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Security.Tests/Opc.Ua.Core.Security.Tests.csproj" />
<Project Path="tests/Opc.Ua.CranesHoists.Tests/Opc.Ua.CranesHoists.Tests.csproj" />
<Project Path="tests/Opc.Ua.Di.Tests/Opc.Ua.Di.Tests.csproj" />
<Project Path="tests/Opc.Ua.OpenUsd.Tests/Opc.Ua.OpenUsd.Tests.csproj" />
<Project Path="tests/Opc.Ua.Robotics.Tests/Opc.Ua.Robotics.Tests.csproj" />
<Project Path="tests/Opc.Ua.Robotics.Intent.Tests/Opc.Ua.Robotics.Intent.Tests.csproj" />
<Project Path="tests/Opc.Ua.Vision.Tests/Opc.Ua.Vision.Tests.csproj" />
<Project Path="tests/Opc.Ua.VisualInspection.Tests/Opc.Ua.VisualInspection.Tests.csproj" />
<Project Path="tests/Opc.Ua.Vision.Intent.Tests/Opc.Ua.Vision.Intent.Tests.csproj" />
<Project Path="tests/Opc.Ua.Core.Diagnostics.Tests/Opc.Ua.Core.Diagnostics.Tests.csproj" />
<Project Path="tests/Opc.Ua.Bindings.Https.WebApi.Tests/Opc.Ua.Bindings.Https.WebApi.Tests.csproj" />
<Project Path="tests/Opc.Ua.Extrusion.Tests/Opc.Ua.Extrusion.Tests.csproj" />
<Project Path="tests/Opc.Ua.Features.Tests/Opc.Ua.Features.Tests.csproj" />
<Project Path="tests/Opc.Ua.GMS.Tests/Opc.Ua.GMS.Tests.csproj" />
<Project Path="tests/Opc.Ua.History.Tests/Opc.Ua.History.Tests.csproj" />
<Project Path="tests/Opc.Ua.InformationModel.Tests/Opc.Ua.InformationModel.Tests.csproj" />
<Project Path="tests/Opc.Ua.Interop.Tests/Opc.Ua.Interop.Tests.csproj" />
<Project Path="tests/Opc.Ua.Lds.Tests/Opc.Ua.Lds.Tests.csproj" />
<Project Path="tests/Opc.Ua.Sessions.Tests/Opc.Ua.Sessions.Tests.csproj" />
<Project Path="tests/Opc.Ua.Stress.Tests/Opc.Ua.Stress.Tests.csproj" />
<Project Path="tests/Opc.Ua.Subscriptions.Tests/Opc.Ua.Subscriptions.Tests.csproj" />
<Project Path="tests/Opc.Ua.Subscriptions.Classic.Tests/Opc.Ua.Subscriptions.Classic.Tests.csproj" />
<Project Path="tests/Opc.Ua.Subscriptions.Durable.Tests/Opc.Ua.Subscriptions.Durable.Tests.csproj" />
<Project Path="tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj" />
<Project Path="tests/Opc.Ua.ISA95.Tests/Opc.Ua.ISA95.Tests.csproj" />
<Project Path="tests/Opc.Ua.Machinery.Tests/Opc.Ua.Machinery.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Adapter.Tests/Opc.Ua.PubSub.Adapter.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Udp.Tests/Opc.Ua.PubSub.Udp.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Eth.Tests/Opc.Ua.PubSub.Eth.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Kafka.Tests/Opc.Ua.PubSub.Kafka.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Mqtt.Tests/Opc.Ua.PubSub.Mqtt.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Schema.Tests/Opc.Ua.PubSub.Schema.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Server.Tests/Opc.Ua.PubSub.Server.Tests.csproj" />
<Project Path="tests/Opc.Ua.PubSub.Diagnostics.Tests/Opc.Ua.PubSub.Diagnostics.Tests.csproj" />
<Project Path="tests/Opc.Ua.PlasticsRubber.Datasets.Tests/Opc.Ua.PlasticsRubber.Datasets.Tests.csproj" />
<Project Path="tests/Opc.Ua.PlasticsRubber.Runtime.Tests/Opc.Ua.PlasticsRubber.Runtime.Tests.csproj" />
<Project Path="tests/Opc.Ua.PlasticsRubber.Tests/Opc.Ua.PlasticsRubber.Tests.csproj" />
<Project Path="tests/Opc.Ua.Positioning.Tests/Opc.Ua.Positioning.Tests.csproj" />
<Project Path="tests/Opc.Ua.Pumps.Tests/Opc.Ua.Pumps.Tests.csproj" />
<Project Path="tests/Opc.Ua.Scales.Tests/Opc.Ua.Scales.Tests.csproj" />
<Project Path="tests/Opc.Ua.AMB.Tests/Opc.Ua.AMB.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.PubSub.Tests/Opc.Ua.Redundancy.PubSub.Tests.csproj" />
<Project Path="tests/Opc.Ua.Security.Certificates.Tests/Opc.Ua.Security.Certificates.Tests.csproj" />
<Project Path="tests/Opc.Ua.Security.Pkcs11.Tests/Opc.Ua.Security.Pkcs11.Tests.csproj" />
<Project Path="tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj" />
<Project Path="tests/Opc.Ua.XRegistry.Tests/Opc.Ua.XRegistry.Tests.csproj" />
<Project Path="tests/Opc.Ua.AI.Tests/Opc.Ua.AI.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Server.Tests/Opc.Ua.Redundancy.Server.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Kubernetes.Tests/Opc.Ua.Redundancy.Kubernetes.Tests.csproj" />
<Project Path="tests/Opc.Ua.Redundancy.Samples.Tests/Opc.Ua.Redundancy.Samples.Tests.csproj" />
<Project Path="tests/Opc.Ua.SourceGeneration.Core.Tests/Opc.Ua.SourceGeneration.Core.Tests.csproj" />
<Project Path="tests/Opc.Ua.SourceGeneration.Stack.Tests/Opc.Ua.SourceGeneration.Stack.Tests.csproj" />
<Project Path="tests/Opc.Ua.SourceGeneration.Tests/Opc.Ua.SourceGeneration.Tests.csproj" />
<Project Path="tests/Opc.Ua.MachineTool.Tests/Opc.Ua.MachineTool.Tests.csproj" />
<Project Path="tests/Opc.Ua.MigrationAnalyzer.Core.Tests/Opc.Ua.MigrationAnalyzer.Core.Tests.csproj" />
<Project Path="tests/Opc.Ua.MigrationAnalyzer.Tests/Opc.Ua.MigrationAnalyzer.Tests.csproj" />
<Project Path="tests/Opc.Ua.Tools.Tests/Opc.Ua.Tools.Tests.csproj" />
<Project Path="tests/Opc.Ua.Types.Tests/Opc.Ua.Types.Tests.csproj" />
<Project Path="tests/Opc.Ua.WotCon.Tests/Opc.Ua.WotCon.Tests.csproj" />
<Project Path="tests/Opc.Ua.WotCon.Bindings.Tests/Opc.Ua.WotCon.Bindings.Tests.csproj" />
<Project Path="tests/Opc.Ua.WotCon.Samples.Tests/Opc.Ua.WotCon.Samples.Tests.csproj" />
</Folder>
<Folder Name="/tests/TestFramework/">
<Project Path="tests/Opc.Ua.Test.Common/Opc.Ua.Test.Common.csproj" />
<Project Path="tests/Opc.Ua.Server.TestFramework/Opc.Ua.Server.TestFramework.csproj" />
<Project Path="tests/Opc.Ua.Client.TestFramework/Opc.Ua.Client.TestFramework.csproj" />
<Project Path="tests/Opc.Ua.Core.TestFramework/Opc.Ua.Core.TestFramework.csproj" />
</Folder>
<Folder Name="/tools/">
<Project Path="tools/Opc.Ua.Mcp/Opc.Ua.Mcp.csproj" />
<Project Path="tools/Opc.Ua.Mcp.AMB/Opc.Ua.Mcp.AMB.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Core/Opc.Ua.Mcp.Core.csproj" />
<Project Path="tools/Opc.Ua.Mcp.CranesHoists/Opc.Ua.Mcp.CranesHoists.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Di/Opc.Ua.Mcp.Di.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Diagnostics/Opc.Ua.Mcp.Diagnostics.csproj" />
<Project Path="tools/Opc.Ua.Mcp.GMS/Opc.Ua.Mcp.GMS.csproj" />
<Project Path="tools/Opc.Ua.Mcp.ISA95/Opc.Ua.Mcp.ISA95.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Machinery/Opc.Ua.Mcp.Machinery.csproj" />
<Project Path="tools/Opc.Ua.Mcp.MachineTool/Opc.Ua.Mcp.MachineTool.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Positioning/Opc.Ua.Mcp.Positioning.csproj" />
<Project Path="tools/Opc.Ua.Mcp.PubSub/Opc.Ua.Mcp.PubSub.csproj" />
<Project Path="tools/Opc.Ua.Mcp.PubSub.Diagnostics/Opc.Ua.Mcp.PubSub.Diagnostics.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Pumps/Opc.Ua.Mcp.Pumps.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Robotics/Opc.Ua.Mcp.Robotics.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Scales/Opc.Ua.Mcp.Scales.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Vision/Opc.Ua.Mcp.Vision.csproj" />
<Project Path="tools/Opc.Ua.Mcp.WotCon/Opc.Ua.Mcp.WotCon.csproj" />
<Project Path="tools/Opc.Ua.Mcp.XRegistry/Opc.Ua.Mcp.XRegistry.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Schema/Opc.Ua.Mcp.Schema.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Gds/Opc.Ua.Mcp.Gds.csproj" />
<Project Path="tools/Opc.Ua.Mcp.Workflows/Opc.Ua.Mcp.Workflows.csproj" />
<Project Path="tools/Opc.Ua.OpenUsd.Connector/Opc.Ua.OpenUsd.Connector.csproj" />
<Project Path="tools/Opc.Ua.OpenUsd.Connector.Viewer/Opc.Ua.OpenUsd.Connector.Viewer.csproj" />
</Folder>
<Folder Name="/tools/MigrationAnalyzer/">
<Project Path="tools/Opc.Ua.MigrationAnalyzer.CodeFixer/Opc.Ua.MigrationAnalyzer.CodeFixer.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer.Core/Opc.Ua.MigrationAnalyzer.Core.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer.Generator/Opc.Ua.MigrationAnalyzer.Generator.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer/Opc.Ua.MigrationAnalyzer.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer.Roslyn4_14/Opc.Ua.MigrationAnalyzer.Roslyn4_14.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer.CodeFixer.Roslyn4_14/Opc.Ua.MigrationAnalyzer.CodeFixer.Roslyn4_14.csproj" />
<Project Path="tools/Opc.Ua.MigrationAnalyzer.Generator.Roslyn4_14/Opc.Ua.MigrationAnalyzer.Generator.Roslyn4_14.csproj" />
</Folder>
<Folder Name="/tools/SourceGeneration/">
<Project Path="tools/Opc.Ua.SourceGeneration.Core/Opc.Ua.SourceGeneration.Core.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Pack/Opc.Ua.SourceGeneration.Pack.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Stack/Opc.Ua.SourceGeneration.Stack.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Stack.Pack/Opc.Ua.SourceGeneration.Stack.Pack.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Tester/Opc.Ua.SourceGeneration.Tester.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration/Opc.Ua.SourceGeneration.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Roslyn4_14/Opc.Ua.SourceGeneration.Roslyn4_14.csproj" />
<Project Path="tools/Opc.Ua.SourceGeneration.Stack.Roslyn4_14/Opc.Ua.SourceGeneration.Stack.Roslyn4_14.csproj" />
</Folder>
</Solution>