Files
Marc Schier 82347dc1da Address PR #3852 review feedback
- Move all channel-related types into `Stack/Opc.Ua.Core/Stack/Client/Channels/`
  subfolder (#13).
- Un-obsolete `SessionReconnectHandler` and the SessionExtensions
  `ReconnectAsync(connection, ct)` / `(channel, ct)` extensions; remove
  all SRH-related `#pragma warning disable CS0618` suppressions from
  applications and tests. AttachChannel/DetachChannel remain obsolete (#1, #4).
- Remove the shared-budget section from MigrationGuide.md (#3).
- Mark `ManagedSession.AttachChannel`/`DetachChannel` `[Obsolete]` so the
  warning surfaces all the way up the supported API surface (#9).
- Break the `<see cref=…>` line in `Session.ChannelManager.cs` to stay under
  140 chars (#10).
- Move `ChannelManagerSessionFactory` from `Opc.Ua.Gds.Client.Common` into
  `Opc.Ua.Client` as a public, documented session-factory option (#11).
- Audit other client classes for `IClientChannelManager`-aware overloads;
  add `ISessionFactory`-accepting overloads on `GlobalDiscoveryServerClient`,
  `LocalDiscoveryServerClient`, `ServerPushConfigurationClient` so any
  session factory (including `ChannelManagerSessionFactory`) works (#12).
- Refactor MCP server (`OpcUaSessionManager`, `Program`) to use
  `ManagedSession` + DI-resolved `IClientChannelManager`; remove
  `SessionReconnectHandler` and manual keep-alive reconnect (#2).
- ConnectionStateMachine code-style fixes: use named delegate types,
  collapse multi-line callback properties to single lines, swap
  `timeProvider`/`maxTotalReconnectTime` constructor param order,
  fix multi-line declaration (#6, #7, #8).
- HTTPS resilience: confirmed `Microsoft.Extensions.Http` and
  `Microsoft.Extensions.Http.Resilience` 10.6.0 support
  `net472`/`net48`/`netstandard2.1`; removed `#if NET8_0_OR_GREATER`
  gating from `ManagedSessionBuilder` and `OpcUaClientBuilderExtensions`
  and HTTPS csproj package refs (#5).

Verification:
- `Opc.Ua.Client` + `Opc.Ua.Core` + `Opc.Ua.Gds.Client.Common` build
  clean (0 warnings, 0 errors).
- 56/56 core channel-manager / retry-budget / HTTPS factory tests pass.
- 129/129 client (ManagedSession + legacy SRH back-compat + SessionExtensions)
  tests pass.
2026-06-05 17:22:41 +02:00

62 lines
3.1 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyName>$(AssemblyPrefix).Client</AssemblyName>
<TargetFrameworks>$(LibTargetFrameworks)</TargetFrameworks>
<PackageId>$(PackagePrefix).Opc.Ua.Client</PackageId>
<RootNamespace>Opc.Ua.Client</RootNamespace>
<Description>OPC UA Client Class Library</Description>
<IsPackable>true</IsPackable>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Nullable>enable</Nullable>
<DefineConstants>$(DefineConstants);OPCUA_V1_CLIENT</DefineConstants>
<IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))">true</IsAotCompatible>
<EnableConfigurationBindingGenerator>true</EnableConfigurationBindingGenerator>
<!--
SYSLIB1100/1101: the configuration binding source generator emits informational
diagnostics for properties whose type is an interface or non-default-constructible
class (e.g. ApplicationConfiguration, IUserIdentity, ISubscriptionEngineFactory).
Those properties are runtime-only and never bound from IConfiguration; the binder
silently skips them, which is the desired behavior.
-->
<NoWarn>$(NoWarn);SYSLIB1100;SYSLIB1101</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net472' OR '$(TargetFramework)' == 'net48'">
<!--
Microsoft.Extensions.Http.Resilience provides net462 assets for the .NET Framework builds,
but its buildTransitive support target warns that these TFMs are untested. TODO: remove this
suppression when the library matrix drops .NET Framework or the package stops warning.
-->
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
</PropertyGroup>
<ItemGroup>
<InternalsVisibleTo Include="Opc.Ua.Client.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Client.ComplexTypes.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Client.TestFramework" />
<InternalsVisibleTo Include="Opc.Ua.Core.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Session.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Sessions.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Subscriptions.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Subscriptions.Classic.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Subscriptions.Durable.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Features.Tests" />
<InternalsVisibleTo Include="Opc.Ua.Stress.Tests" />
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<PackageId>$(PackageId).Debug</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http.Resilience" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Stack\Opc.Ua.Core\Opc.Ua.Core.csproj" />
<ProjectReference Include="..\Opc.Ua.Configuration\Opc.Ua.Configuration.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Tools\Opc.Ua.SourceGeneration\Opc.Ua.SourceGeneration.csproj">
<OutputItemType>Analyzer</OutputItemType>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Target Name="GetPackagingOutputs" />
</Project>