diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3e783fc801efbb38fbb6e041916e7a929217052b..598a27eb6b7a3d9b0261ddca6c8d81ca84b8573c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,11 +6,19 @@ stages:
   - release
   - deploy
 
+before_script:
+  - apt-get update && apt-get install -y wget
+  - wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
+  - chmod +x dotnet-install.sh
+
 build:
   stage: build
   tags: 
     - net5
   script:
+    - ./dotnet-install.sh -c 6.0 --install-dir /usr/share/dotnet
+    - ./dotnet-install.sh -c 7.0 --install-dir /usr/share/dotnet
+    - export PATH="$PATH:/usr/share/dotnet"
     - dotnet build
 
 test:
@@ -18,6 +26,9 @@ test:
   tags: 
     - net5
   script:
+    - ./dotnet-install.sh -c 6.0 --install-dir /usr/share/dotnet
+    - ./dotnet-install.sh -c 7.0 --install-dir /usr/share/dotnet
+    - export PATH="$PATH:/usr/share/dotnet"
     - dotnet test
 
 release:
@@ -31,7 +42,9 @@ release:
       - SDK/
     expire_in: 1 week
   script:
-    - dotnet publish -c Release -o ../SDK SDK/SDK.csproj
+    - dotnet publish -c Release -o ../SDK -f net6.0 SDK/SDK.csproj
+    - dotnet publish -c Release -o ../SDK -f net7.0 SDK/SDK.csproj
+    - dotnet publish -c Release -o ../SDK -f net8.0 SDK/SDK.csproj
 
 deploy:
   stage: deploy
diff --git a/Main/Main.csproj b/Main/Main.csproj
index 246431a6d3c3d89f44b64f70cff8b1285b3722ac..4d4d71b93d3e7799debbba33995034f4dcb7f2ed 100644
--- a/Main/Main.csproj
+++ b/Main/Main.csproj
@@ -1,8 +1,8 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
     <AssemblyVersion>2021.6.22.8</AssemblyVersion>
     <FileVersion>2021.6.22.8</FileVersion>
     <Version>1.0</Version>
diff --git a/Main/TestData.cs b/Main/TestData.cs
index 02667f4a1162a7a8eca1b4f28b234fca08e1fd1e..4392f3e36aad2ef33f1e3ddb5c4f44f58313aa76 100644
--- a/Main/TestData.cs
+++ b/Main/TestData.cs
@@ -50,47 +50,124 @@ namespace Main
 
         public static DeviceLocationContract[] GetLocalizationDataBatch()
         {
-            DistanceContract[] distanceContract1 =
-            [
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-            ];
+            DistanceContract[] distanceContract1 = new DistanceContract[3];
+            distanceContract1[0] = new DistanceContract { BeaconId = 34, RSSI = -56 };
+            distanceContract1[1] = new DistanceContract { BeaconId = 34, RSSI = -56 };
+            distanceContract1[2] = new DistanceContract { BeaconId = 34, RSSI = -56 };
 
-            LocationContract[] locationContract =
-            [
-                new LocationContract {SectorId = 1, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 2, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 3, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 4, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-            ];
+            LocationContract[] locationContract = new LocationContract[4];
+            locationContract[0] = new LocationContract
+            {
+                SectorId = 1,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[1] = new LocationContract
+            {
+                SectorId = 2,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[2] = new LocationContract
+            {
+                SectorId = 3,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[3] = new LocationContract
+            {
+                SectorId = 4,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+
+            DeviceLocationContract[] deviceLocationContracts = new DeviceLocationContract[1];
+            deviceLocationContracts[0] = new DeviceLocationContract { Login = "sdk-device", Locations = locationContract };
 
-            return [new DeviceLocationContract { Login = "sdk-device", Locations = locationContract }];
+            return deviceLocationContracts;
         }
         public static LocationContract[] GetLocalizationData()
         {
-            DistanceContract[] distanceContract1 =
-            [
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-            ];
+            DistanceContract[] distanceContract1 = new DistanceContract[3];
+            distanceContract1[0] = new DistanceContract { BeaconId = 34, RSSI = -56 };
+            distanceContract1[1] = new DistanceContract { BeaconId = 34, RSSI = -56 };
+            distanceContract1[2] = new DistanceContract { BeaconId = 34, RSSI = -56 };
+
+            LocationContract[] locationContract = new LocationContract[4];
+            locationContract[0] = new LocationContract
+            {
+                SectorId = 1,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[1] = new LocationContract
+            {
+                SectorId = 2,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[2] = new LocationContract
+            {
+                SectorId = 3,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
+            locationContract[3] = new LocationContract
+            {
+                SectorId = 4,
+                Battery = 100,
+                IsMoving = true,
+                Timestamp = 1599644652178,
+                X = 0,
+                Y = 0,
+                Z = 0,
+                Interval = 300,
+                Distances = distanceContract1
+            };
 
-            return
-            [
-                new LocationContract {SectorId = 1, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 2, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 3, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-                new LocationContract {SectorId = 4, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
-                    X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-            ];
+            return locationContract;
         }
 
         public static SensorContract GetSensor()
@@ -111,13 +188,14 @@ namespace Main
                 DataType = SensorDataType.Decimal,
                 Index = 1
             };
-            SensorDataContract[] sensorDataContracts = [data1, data2];
+            SensorDataContract[] sensorDataContracts = new SensorDataContract[2];
+            sensorDataContracts[0] = data1;
+            sensorDataContracts[1] = data2;
 
             SensorContract sensor = new SensorContract
             {
                 Id = 7351,
                 Login = "sdk-sensor2",
-                //Password = "sdk",
                 Title = "testtt",
                 SectorId = 2,
                 SensorData = sensorDataContracts,
@@ -166,7 +244,10 @@ namespace Main
                 Unit = "unit",
                 Index = 2
             };
-            SensorDataContract[] sensorDataContracts = [data1, data2, data3];
+            SensorDataContract[] sensorDataContracts = new SensorDataContract[3];
+            sensorDataContracts[0] = data1;
+            sensorDataContracts[1] = data2;
+            sensorDataContracts[2] = data3;
 
             SensorContract sensor = new SensorContract
             {
@@ -175,7 +256,8 @@ namespace Main
                 SensorData = sensorDataContracts,
                 AreaId = 24
             };
-            SensorContract[] sensorContracts = [sensor];
+            SensorContract[] sensorContracts = new SensorContract[1];
+            sensorContracts[0] = sensor;
 
             return sensorContracts;
         }
@@ -206,7 +288,10 @@ namespace Main
                 Unit = "unit",
                 Index = 2
             };
-            SensorDataContract[] sensorDataContracts = [data1, data2, data3];
+            SensorDataContract[] sensorDataContracts = new SensorDataContract[3];
+            sensorDataContracts[0] = data1;
+            sensorDataContracts[1] = data2;
+            sensorDataContracts[2] = data3;
 
             return sensorDataContracts;
         }
diff --git a/SDK/SDK.csproj b/SDK/SDK.csproj
index e89d2af42d89719a712228a176ea7f13f76200bd..914a6a2bc969080b5e9d9cc43ce607ca77848313 100644
--- a/SDK/SDK.csproj
+++ b/SDK/SDK.csproj
@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <PackageId>tDevKit</PackageId>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
     <AssemblyVersion>2021.6.28.25</AssemblyVersion>
     <FileVersion>2021.6.28.25</FileVersion>
     <Version>4.12.0</Version>
diff --git a/Test/Test/Test.csproj b/Test/Test/Test.csproj
index b2c38d4fe41b5fd68c6679116c45dfdbab966086..4061fe87bf6158b5342ebaca2676d877f6367ff5 100644
--- a/Test/Test/Test.csproj
+++ b/Test/Test/Test.csproj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
 
     <IsPackable>false</IsPackable>
 
diff --git a/Test/Test/TestData.cs b/Test/Test/TestData.cs
index 59f7e6dfeccb1eec756d4345087116902866a141..101a46e99782327dbe0d547bc0c965f52d7aa096 100644
--- a/Test/Test/TestData.cs
+++ b/Test/Test/TestData.cs
@@ -73,15 +73,15 @@ namespace Main
 
         public static DeviceLocationContract[] GetLocalizationDataBatch()
         {
-            DistanceContract[] distanceContract1 =
-            [
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-                new DistanceContract {BeaconId = 34, RSSI= -56},
-            ];
+            DistanceContract[] distanceContract1 = new [] 
+            {
+                new DistanceContract { BeaconId = 34, RSSI = -56 },
+                new DistanceContract { BeaconId = 34, RSSI = -56 },
+                new DistanceContract { BeaconId = 34, RSSI = -56 },
+            };
 
-            LocationContract[] locationContract =
-            [
+            LocationContract[] locationContract = new[]
+            {
                 new LocationContract {SectorId = 1, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
                 new LocationContract {SectorId = 2, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
@@ -90,21 +90,21 @@ namespace Main
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
                 new LocationContract {SectorId = 4, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-            ];
+            };
 
-            return [new DeviceLocationContract { Login = "rtu-sdk", Locations = locationContract }];
+            return new[] { new DeviceLocationContract { Login = "rtu-sdk", Locations = locationContract } };
         }
         public static LocationContract[] GetLocalizationData()
         {
-            DistanceContract[] distanceContract1 =
-            [
+            DistanceContract[] distanceContract1 = new[]
+            {
                 new DistanceContract {BeaconId = 34, RSSI= -56},
                 new DistanceContract {BeaconId = 34, RSSI= -56},
                 new DistanceContract {BeaconId = 34, RSSI= -56},
-            ];
+            };
 
-            return
-            [
+            return new[]
+            {
                 new LocationContract {SectorId = 1, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
                 new LocationContract {SectorId = 2, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
@@ -113,7 +113,7 @@ namespace Main
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
                 new LocationContract {SectorId = 4, Battery = 100, IsMoving = true, Timestamp = 1599644652178,
                     X = 0, Y = 0, Z = 0, Interval = 300, Distances = distanceContract1 },
-            ];
+            };
         }
 
         public static SectorContract GetSector()
@@ -145,7 +145,7 @@ namespace Main
                 Unit = "%",
                 DataType = SensorDataType.Decimal
             };
-            SensorDataContract[] sensorDataContracts = [data1, data2];
+            SensorDataContract[] sensorDataContracts = new [] { data1, data2 };
 
             SensorContract sensor = new SensorContract
             {
@@ -235,7 +235,7 @@ namespace Main
                 Unit = "unit"
             };
 
-            SensorDataContract[] sensorDataContracts = [data1, data2, data3];
+            SensorDataContract[] sensorDataContracts = new[] { data1, data2, data3 };
 
             return sensorDataContracts;
         }