Registry improved
BaSyx CLI project added
diff --git a/sdks/dotnet/basyx-components/BaSyx.CLI/Options/RefineOptions.cs b/sdks/dotnet/basyx-components/BaSyx.CLI/Options/RefineOptions.cs
new file mode 100644
index 0000000..923d942
--- /dev/null
+++ b/sdks/dotnet/basyx-components/BaSyx.CLI/Options/RefineOptions.cs
@@ -0,0 +1,113 @@
+using BaSyx.Models.Core.AssetAdministrationShell.Identification;
+using BaSyx.Models.Export;
+using BaSyx.Utils.PathHandling;
+using CommandLine;
+using NLog;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Linq;
+
+namespace BaSyx.CLI.Options
+{
+ [Verb("refine", HelpText = "Refine Asset Adminstration Shell XML and JSON serialization according to schema")]
+ class RefineOptions
+ {
+ [Option('i', Required = true, HelpText = "Input file (e.g. .aasx, .xml, .json)")]
+ public string InputFileName { get; set; }
+
+ [Option('o', Required = true, HelpText = "Output file (e.g. .aasx, .xml, .json)")]
+ public string OutputFileName { get; set; }
+
+ [Option('v', Required = false, HelpText = "Re-Validate at the end")]
+ public bool Revalidate { get; set; }
+
+ private static readonly Logger logger = LogManager.GetCurrentClassLogger();
+
+ public static int RunRefineAndReturnExitCode(RefineOptions opts)
+ {
+ string fileExtension = Path.GetExtension(opts.InputFileName);
+ switch (fileExtension)
+ {
+ case ".aasx":
+ {
+ try
+ {
+ string tempEnvironmentFile = Path.GetTempFileName() + ".xml";
+ DirectoryInfo tempDirInfo = Directory.CreateDirectory("tempSupplementaryFiles");
+ Dictionary<Uri, string> files = new Dictionary<Uri, string>();
+ Identifier aasIdentifier = null;
+ FileInfo thumbnail = null;
+
+ using (AASX aasx = new AASX(opts.InputFileName))
+ {
+ AssetAdministrationShellEnvironment_V2_0 env = aasx.GetEnvironment_V2_0();
+
+ aasIdentifier = env.AssetAdministrationShells.First().Identification;
+ env.WriteEnvironment_V2_0(ExportType.Xml, tempEnvironmentFile);
+
+ foreach (var file in aasx.SupplementaryFiles)
+ {
+ using (Stream stream = file.GetStream(FileMode.Open, FileAccess.Read))
+ {
+ string[] splitted = file.Uri.ToString().Split(new char[] { '/' });
+ string fileName = splitted[splitted.Length - 1];
+ string filePath = Path.Combine(tempDirInfo.FullName, fileName);
+
+ using (FileStream dest = File.Open(filePath, FileMode.OpenOrCreate))
+ stream.CopyTo(dest);
+
+ files.Add(file.Uri, filePath);
+ }
+ }
+ PackagePart thumbnailPackagePart = aasx.GetThumbnailAsPackagePart();
+ if (thumbnailPackagePart != null)
+ {
+ string thumbnailFilePath = tempDirInfo.FullName + thumbnailPackagePart.Uri.ToString();
+ thumbnail = thumbnailPackagePart.GetStream(FileMode.Open, FileAccess.Read).ToFile(thumbnailFilePath);
+ }
+ }
+
+ using (AASX aasx_new = new AASX(opts.OutputFileName))
+ {
+ aasx_new.AddEnvironment(aasIdentifier, tempEnvironmentFile);
+ foreach (var file in files)
+ {
+ aasx_new.AddFileToAASX(file.Key.ToString(), file.Value);
+ }
+ if (thumbnail != null)
+ aasx_new.AddThumbnail(thumbnail.FullName);
+ }
+
+ if (opts.Revalidate)
+ {
+ logger.Info($"Validate {opts.OutputFileName}...");
+ using (AASX aasx_new = new AASX(opts.OutputFileName))
+ {
+ AssetAdministrationShellEnvironment_V2_0 env = aasx_new.GetEnvironment_V2_0();
+ }
+ }
+ //Clear all temporary ressources
+ Directory.Delete(tempDirInfo.FullName, true);
+ File.Delete(tempEnvironmentFile);
+ if (thumbnail != null)
+ File.Delete(thumbnail.FullName);
+
+ return 0;
+ }
+ catch (Exception e)
+ {
+ logger.Error(e, e.Message);
+ return -1;
+ }
+ }
+ default:
+ logger.Error($"Unable to parse file extension ${fileExtension}");
+ return -1;
+ }
+ }
+ }
+
+
+}
diff --git a/sdks/dotnet/basyx-components/BaSyx.CLI/Program.cs b/sdks/dotnet/basyx-components/BaSyx.CLI/Program.cs
index da1e7a0..81087a2 100644
--- a/sdks/dotnet/basyx-components/BaSyx.CLI/Program.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.CLI/Program.cs
@@ -1,15 +1,7 @@
-using BaSyx.Models.Core.AssetAdministrationShell.Generics;
-using BaSyx.Models.Core.AssetAdministrationShell.Identification;
-using BaSyx.Models.Core.Common;
-using BaSyx.Models.Export;
-using BaSyx.Utils.PathHandling;
+using BaSyx.CLI.Options;
using CommandLine;
using NLog;
-using System;
using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Linq;
namespace BaSyx.CLI
{
@@ -17,18 +9,6 @@
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
- [Verb("refine", HelpText = "Refine Asset Adminstration Shell XML and JSON serialization according to schema")]
- class RefineOptions
- {
- [Option('i', Required = true, HelpText = "Input file (e.g. .aasx, .xml, .json)")]
- public string InputFileName { get; set; }
-
- [Option('o', Required = true, HelpText = "Output file (e.g. .aasx, .xml, .json)")]
- public string OutputFileName { get; set; }
-
- [Option('v', Required = false, HelpText = "Re-Validate at the end")]
- public bool Revalidate { get; set; }
- }
static int Main(string[] args)
{
@@ -36,96 +16,10 @@
return Parser.Default.ParseArguments<RefineOptions>(args)
.MapResult(
- (RefineOptions opts) => RunRefineAndReturnExitCode(opts),
+ (RefineOptions opts) => RefineOptions.RunRefineAndReturnExitCode(opts),
HandleParseError);
}
- static int RunRefineAndReturnExitCode(RefineOptions opts)
- {
- string fileExtension = Path.GetExtension(opts.InputFileName);
- switch (fileExtension)
- {
- case ".aasx":
- {
- try
- {
- string tempEnvironmentFile = Path.GetTempFileName() + ".xml";
- DirectoryInfo tempDirInfo = Directory.CreateDirectory("tempSupplementaryFiles");
- Dictionary<Uri, string> files = new Dictionary<Uri, string>();
- Identifier aasIdentifier = null;
- FileInfo thumbnail = null;
- using (AASX aasx = new AASX(opts.InputFileName))
- {
- AssetAdministrationShellEnvironment_V2_0 env = aasx.GetEnvironment_V2_0();
-
- aasIdentifier = env.AssetAdministrationShells.First().Identification;
- env.WriteEnvironment_V2_0(ExportType.Xml, tempEnvironmentFile);
-
- foreach (var file in aasx.SupplementaryFiles)
- {
- using (Stream stream = file.GetStream(FileMode.Open, FileAccess.Read))
- {
- string[] splitted = file.Uri.ToString().Split(new char[] { '/' });
- string fileName = splitted[splitted.Length - 1];
- string filePath = Path.Combine(tempDirInfo.FullName, fileName);
-
- using (FileStream dest = File.Open(filePath, FileMode.OpenOrCreate))
- stream.CopyTo(dest);
-
- files.Add(file.Uri, filePath);
- }
- }
- PackagePart thumbnailPackagePart = aasx.GetThumbnailAsPackagePart();
- if (thumbnailPackagePart != null)
- {
- string thumbnailFilePath = tempDirInfo.FullName + thumbnailPackagePart.Uri.ToString();
- thumbnail = thumbnailPackagePart.GetStream(FileMode.Open, FileAccess.Read).ToFile(thumbnailFilePath);
- }
- }
-
- using (AASX aasx_new = new AASX(opts.OutputFileName))
- {
- aasx_new.AddEnvironment(aasIdentifier, tempEnvironmentFile);
- foreach (var file in files)
- {
- aasx_new.AddFileToAASX(file.Key.ToString(), file.Value);
- }
- if(thumbnail != null)
- aasx_new.AddThumbnail(thumbnail.FullName);
- }
-
- if(opts.Revalidate)
- {
- logger.Info($"Validate {opts.OutputFileName}...");
- using (AASX aasx_new = new AASX(opts.OutputFileName))
- {
- AssetAdministrationShellEnvironment_V2_0 env = aasx_new.GetEnvironment_V2_0();
- }
- }
- //Clear all temporary ressources
- Directory.Delete(tempDirInfo.FullName, true);
- File.Delete(tempEnvironmentFile);
- if(thumbnail != null)
- File.Delete(thumbnail.FullName);
-
- return 0;
- }
- catch (Exception e)
- {
- logger.Error(e, e.Message);
- return -1;
- }
- }
- default:
- logger.Error($"Unable to parse file extension ${fileExtension}");
- return -1;
- }
- }
-
- static int HandleParseError(IEnumerable<Error> errs)
- {
- return -1;
- }
-
+ static int HandleParseError(IEnumerable<Error> errs) => -1;
}
}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs b/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
index 055b975..deae290 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
@@ -133,8 +133,30 @@
var mvcBuilder = services.AddMvc();
foreach (var controllerAssemblyName in controllerConfig.Controllers)
{
- Assembly controllerAssembly = Assembly.Load(controllerAssemblyName);
- mvcBuilder.AddApplicationPart(controllerAssembly);
+ Assembly controllerAssembly = null;
+ try
+ {
+ controllerAssembly = Assembly.Load(controllerAssemblyName);
+ }
+ catch (Exception e)
+ {
+ logger.Warn(e, $"Assembly {controllerAssemblyName} cannot be loaded - maybe it is not referenced. Try reading from file...");
+ try
+ {
+ if (File.Exists(controllerAssemblyName))
+ controllerAssembly = Assembly.LoadFile(controllerAssemblyName);
+ else if (File.Exists(controllerAssemblyName + ".dll"))
+ controllerAssembly = Assembly.LoadFile(controllerAssemblyName + ".dll");
+ else
+ controllerAssembly = Assembly.LoadFrom(controllerAssemblyName);
+ }
+ catch (Exception exp)
+ {
+ logger.Warn(exp, $"Assembly {controllerAssemblyName} can finally not be loaded");
+ }
+ }
+ if(controllerAssembly != null)
+ mvcBuilder.AddApplicationPart(controllerAssembly);
}
mvcBuilder.AddControllersAsServices();
}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Components.sln b/sdks/dotnet/basyx-components/BaSyx.Components.sln
index 29ae2b0..2d36cd9 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Components.sln
+++ b/sdks/dotnet/basyx-components/BaSyx.Components.sln
@@ -37,7 +37,9 @@
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{EB38D1D3-2539-4EA3-9FA9-B91487278FC2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaSyx.Components.Tests", "BaSyx.Components.Tests\BaSyx.Components.Tests.csproj", "{A925E735-99D9-44F8-A7BE-36836D7CC1C2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BaSyx.Components.Tests", "BaSyx.Components.Tests\BaSyx.Components.Tests.csproj", "{A925E735-99D9-44F8-A7BE-36836D7CC1C2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BaSyx.CLI", "BaSyx.CLI\BaSyx.CLI.csproj", "{E61A0596-326A-4967-8CA4-FE31A0321603}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -93,6 +95,10 @@
{A925E735-99D9-44F8-A7BE-36836D7CC1C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A925E735-99D9-44F8-A7BE-36836D7CC1C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A925E735-99D9-44F8-A7BE-36836D7CC1C2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E61A0596-326A-4967-8CA4-FE31A0321603}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E61A0596-326A-4967-8CA4-FE31A0321603}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E61A0596-326A-4967-8CA4-FE31A0321603}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E61A0596-326A-4967-8CA4-FE31A0321603}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -110,6 +116,7 @@
{D8A737D1-4275-4DB2-9C1F-0C942C71E0B0} = {12CD4BF1-B0A6-4DBD-AFB6-6F232C92AAFA}
{CACC3BFB-04DF-4E46-BBBD-2A5DA27D957D} = {D3E29E3D-ECAC-4F1E-A3F7-7236ED32A4C4}
{A925E735-99D9-44F8-A7BE-36836D7CC1C2} = {EB38D1D3-2539-4EA3-9FA9-B91487278FC2}
+ {E61A0596-326A-4967-8CA4-FE31A0321603} = {12CD4BF1-B0A6-4DBD-AFB6-6F232C92AAFA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8DC440E9-3A4D-4D67-B741-72B8F15EB8C7}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/Discovery.cs b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/Discovery.cs
new file mode 100644
index 0000000..a89553c
--- /dev/null
+++ b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/Discovery.cs
@@ -0,0 +1,55 @@
+using BaSyx.AAS.Client.Http;
+using BaSyx.Utils.Network;
+using System;
+using System.Threading.Tasks;
+
+namespace BaSyx.Discovery.mDNS
+{
+ public static class Discovery
+ {
+ /// <summary>
+ /// Returns an AssetAdministrationShell-Http-Client if found via mDNS Discovery
+ /// </summary>
+ /// <param name="aasId">The Asset Administration Shell's unique id to look for</param>
+ /// <param name="timeout">Timeout in ms until it stops looking</param>
+ /// <returns></returns>
+ public static async Task<AssetAdministrationShellHttpClient> GetHttpClientByShellIdAsync(string aasId, int timeout)
+ {
+ AssetAdministrationShellHttpClient client = null;
+ DiscoveryServer discoveryServer = new DiscoveryServer(ServiceTypes.AAS_SERVICE_TYPE);
+
+ EventHandler<ServiceInstanceEventArgs> eventHandler = async(sender, e) =>
+ {
+ var found = e.TxtRecords.Find(f => f.Contains(aasId));
+ if (found != null)
+ foreach (var server in e.Servers)
+ {
+ bool pingable = await NetworkUtils.PingHostAsync(server.Address.ToString());
+ if (pingable)
+ {
+ var endpointRecord = e.TxtRecords.Find(f => f.Contains(server.Address.ToString()));
+ if (endpointRecord.Contains("="))
+ {
+ string[] splitted = endpointRecord.Split(new char[] { '=' }, StringSplitOptions.None);
+ Uri endpoint = new Uri(splitted[1]);
+ client = new AssetAdministrationShellHttpClient(endpoint);
+ }
+ }
+ }
+ };
+
+ discoveryServer.ServiceInstanceDiscovered += eventHandler;
+ discoveryServer.Start();
+
+ Task timeoutTask = Task.Delay(timeout);
+
+ while (client == null && !timeoutTask.IsCompleted)
+ await Task.Delay(100);
+
+ discoveryServer.ServiceInstanceDiscovered -= eventHandler;
+ discoveryServer.Stop();
+
+ return client;
+ }
+ }
+}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryExtensions.cs b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryExtensions.cs
index de7426d..39c9d95 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryExtensions.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryExtensions.cs
@@ -175,6 +175,8 @@
public static void StopDiscovery(this IAssetAdministrationShellRegistry registryHttpServer)
{
+ discoveryServer.ServiceInstanceDiscovered -= DiscoveryServer_ServiceInstanceDiscovered;
+ discoveryServer.ServiceInstanceShutdown -= DiscoveryServer_ServiceInstanceShutdown;
discoveryServer.Stop();
}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryServer.cs b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryServer.cs
index 4570a9a..cb6f87f 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryServer.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Discovery.mDNS/DiscoveryServer.cs
@@ -149,7 +149,7 @@
{
logger.Info("Discover thread stopping...");
cancellationToken?.Cancel();
- bool success = discoverThread.Join(5000);
+ bool success = discoverThread.Join(DISCOVER_THREAD_DELAY + 500);
logger.Info("Discover thread stopped successfully:" + success);
}
}
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/BaSyx.Registry.Server.Http.Component.csproj b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/BaSyx.Registry.Server.Http.Component.csproj
index c550464..6aaab96 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/BaSyx.Registry.Server.Http.Component.csproj
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/BaSyx.Registry.Server.Http.Component.csproj
@@ -26,6 +26,10 @@
</ItemGroup>
<ItemGroup>
+ <PackageReference Include="CommandLineParser" Version="2.8.0" />
+ </ItemGroup>
+
+ <ItemGroup>
<ProjectReference Include="..\BaSyx.Discovery.mDNS\BaSyx.Discovery.mDNS.csproj" />
<ProjectReference Include="..\BaSyx.Registry.ReferenceImpl.FileBased\BaSyx.Registry.ReferenceImpl.FileBased.csproj" />
<ProjectReference Include="..\BaSyx.Registry.Server.Http\BaSyx.Registry.Server.Http.csproj" />
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/Program.cs b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/Program.cs
index 1bd9714..ce26e8a 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/Program.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/Program.cs
@@ -11,18 +11,77 @@
using BaSyx.Registry.ReferenceImpl.FileBased;
using BaSyx.Discovery.mDNS;
using BaSyx.Utils.Settings.Types;
+using CommandLine;
+using NLog;
+using System;
+using System.Linq;
+using System.Collections.Generic;
namespace BaSyx.Registry.Server.Http.Component
{
class Program
{
+ private static readonly Logger logger = LogManager.GetCurrentClassLogger();
+
+ public class ServerOptions
+ {
+ [Option('s', "settings", Required = false, HelpText = "Path to the ServerSettings.xml")]
+ public string SettingsFilePath { get; set; }
+
+ [Option('u', "urls", Required = false, HelpText = "Hosting Urls (semicolon separated), e.g. http://+:4999")]
+ public string Urls { get; set; }
+ }
+
static void Main(string[] args)
{
- ServerSettings registrySettings = ServerSettings.LoadSettings();
- RegistryHttpServer registryServer = new RegistryHttpServer(registrySettings);
- FileBasedRegistry fileBasedRegistry = new FileBasedRegistry();
- fileBasedRegistry.StartDiscovery();
+ ServerSettings serverSettings = null;
+
+ //Parse command line arguments based on the options above
+ Parser.Default.ParseArguments<ServerOptions>(args)
+ .WithParsed<ServerOptions>(o =>
+ {
+ if (!string.IsNullOrEmpty(o.SettingsFilePath))
+ serverSettings = ServerSettings.LoadSettingsFromFile(o.SettingsFilePath);
+ else
+ serverSettings = ServerSettings.LoadSettings();
+
+ if(!string.IsNullOrEmpty(o.Urls))
+ {
+ if (o.Urls.Contains(";"))
+ {
+ string[] splittedUrls = o.Urls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
+ serverSettings.ServerConfig.Hosting.Urls = splittedUrls.ToList();
+ }
+ else
+ serverSettings.ServerConfig.Hosting.Urls = new List<string>() { o.Urls };
+ }
+ });
+
+ if(args.Contains("--help") || args.Contains("--version"))
+ return;
+
+ //Instantiate blank Registry-Http-Server with previously loaded server settings
+ RegistryHttpServer registryServer = new RegistryHttpServer(serverSettings);
+
+ //Instantiate implementation backend for the Registry
+ FileBasedRegistry fileBasedRegistry = new FileBasedRegistry();
+
+ //Assign implemenation backend to blank Registry-Http-Server
registryServer.SetRegistryProvider(fileBasedRegistry);
+
+ //Start mDNS Discovery ability when the server successfully booted up
+ registryServer.ApplicationStarted = () =>
+ {
+ fileBasedRegistry.StartDiscovery();
+ };
+
+ //Start mDNS Discovery when the server is shutting down
+ registryServer.ApplicationStopping = () =>
+ {
+ fileBasedRegistry.StopDiscovery();
+ };
+
+ //Run the server
registryServer.Run();
}
}
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
index f8ac636..ef68b70 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
index 6c7ac5f..11e1b21 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
index 5821dda..c5cc7db 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
index d0b6bd5..a03d234 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
index e935a98..6817deb 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
index 23315a2..06ef4c8 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
index a83cae0..ce2598d 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
index 0603504..a5a824e 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
index 6cb7c8b..790a22f 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
index 719baad..c606dcb 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
Binary files differ