-
Notifications
You must be signed in to change notification settings - Fork 1k
Dynamic Complex Type System for OPC UA Server applications #3818
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please move those 3 files you moved here back to Opc.Ua.Client. The reason there is Opc.Ua.Client.ComplexTypes is strictly for back compat with 1.5 and to segregate the legacy reflection based type builders. These old reflection emit type builders should not pollute the 1.6 native AOT paths. This also extends to the pieces you moved to Opc.Ua.ComplexTypes, move the reflection.emit bits back to this project too (Opc.Ua.Client.ComplexTypes). OR - if you absolutely need the reflection emit path on the server side, create a Opc.Ua.ComplexTypes.Reflection package that essentially replaces Opc.Ua.Client.ComplexTypes (today). We can then add a metadata nuget in nuget.spec to wrap it so it keeps its name. |
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Once you moved the reflection emit code back out, link this package from Opc.Ua.Server and Opc.Ua.Client, so comes "for free" when bringing either one in. Also - I would suggest a new Opc.Ua.ComplexTypes.Tests project that covers the code in this new project in particular (but not by pulling in Opc.Ua.Client, or server, just the remaining code. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk"> | ||
| <PropertyGroup> | ||
| <AssemblyName>$(AssemblyPrefix).ComplexTypes</AssemblyName> | ||
| <TargetFrameworks>$(LibxTargetFrameworks)</TargetFrameworks> | ||
| <PackageId>$(PackagePrefix).Opc.Ua.ComplexTypes</PackageId> | ||
| <RootNamespace>Opc.Ua.ComplexTypes</RootNamespace> | ||
| <Description>OPC UA Complex Types Common Class Library</Description> | ||
| <IsPackable>true</IsPackable> | ||
| <GenerateDocumentationFile>true</GenerateDocumentationFile> | ||
| <IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))">true</IsAotCompatible> | ||
| <Nullable>enable</Nullable> | ||
| </PropertyGroup> | ||
| <ItemGroup> | ||
| <InternalsVisibleTo Include="Opc.Ua.Client" /> | ||
| <InternalsVisibleTo Include="Opc.Ua.Client.ComplexTypes" /> | ||
| <InternalsVisibleTo Include="Opc.Ua.Server.ComplexTypes" /> | ||
| <InternalsVisibleTo Include="Opc.Ua.Client.ComplexTypes.Tests" /> | ||
| <InternalsVisibleTo Include="Opc.Ua.Client.Tests" /> | ||
| </ItemGroup> | ||
| <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> | ||
| <PackageId>$(PackageId).Debug</PackageId> | ||
| </PropertyGroup> | ||
| <ItemGroup> | ||
| <ProjectReference Include="..\..\Stack\Opc.Ua.Core\Opc.Ua.Core.csproj" /> | ||
| </ItemGroup> | ||
| <Target Name="GetPackagingOutputs" /> | ||
| </Project> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| /* ======================================================================== | ||
| * Copyright (c) 2005-2025 The OPC Foundation, Inc. All rights reserved. | ||
| * | ||
| * OPC Foundation MIT License 1.00 | ||
| * | ||
| * Permission is hereby granted, free of charge, to any person | ||
| * obtaining a copy of this software and associated documentation | ||
| * files (the "Software"), to deal in the Software without | ||
| * restriction, including without limitation the rights to use, | ||
| * copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| * copies of the Software, and to permit persons to whom the | ||
| * Software is furnished to do so, subject to the following | ||
| * conditions: | ||
| * | ||
| * The above copyright notice and this permission notice shall be | ||
| * included in all copies or substantial portions of the Software. | ||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
| * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
| * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
| * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
| * OTHER DEALINGS IN THE SOFTWARE. | ||
| * | ||
| * The complete license agreement can be found here: | ||
| * http://opcfoundation.org/License/MIT/1.00/ | ||
| * ======================================================================*/ | ||
|
|
||
| using System; | ||
|
|
||
| [assembly: CLSCompliant(false)] |
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I do not see the need for Opc.Ua.Server.ComplexTypes, can you move the code under the Opc.Ua.Server project, and into a ComplexTypes folder?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See previous comment. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk"> | ||
| <PropertyGroup> | ||
| <AssemblyName>$(AssemblyPrefix).Server.ComplexTypes</AssemblyName> | ||
| <TargetFrameworks>$(LibxTargetFrameworks)</TargetFrameworks> | ||
| <PackageId>$(PackagePrefix).Opc.Ua.Server.ComplexTypes</PackageId> | ||
| <RootNamespace>Opc.Ua.Server.ComplexTypes</RootNamespace> | ||
| <Description>OPC UA Complex Types Server Class Library</Description> | ||
| <IsPackable>true</IsPackable> | ||
| <GenerateDocumentationFile>true</GenerateDocumentationFile> | ||
| <IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))">true</IsAotCompatible> | ||
| <Nullable>enable</Nullable> | ||
| </PropertyGroup> | ||
| <ItemGroup> | ||
| <InternalsVisibleTo Include="Opc.Ua.Server.ComplexTypes.Tests" /> | ||
| </ItemGroup> | ||
| <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> | ||
| <PackageId>$(PackageId).Debug</PackageId> | ||
| </PropertyGroup> | ||
| <ItemGroup> | ||
| <ProjectReference Include="..\..\Stack\Opc.Ua.Core\Opc.Ua.Core.csproj" /> | ||
| <ProjectReference Include="..\Opc.Ua.Server\Opc.Ua.Server.csproj" /> | ||
| <ProjectReference Include="..\Opc.Ua.ComplexTypes\Opc.Ua.ComplexTypes.csproj" /> | ||
| </ItemGroup> | ||
| <Target Name="GetPackagingOutputs" /> | ||
| </Project> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should pull this in via Opc.Ua.Client.csproj, not seperate.