luo 1 mesiac pred
rodič
commit
1da5b76e05

+ 3 - 1
AutoDeploy/App.axaml.cs

@@ -1,7 +1,9 @@
 using Avalonia;
 using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
+#if DEBUG
 using HotAvalonia;
+#endif
 using System.Runtime.InteropServices;
 
 namespace AutoDeploy;
@@ -10,7 +12,7 @@ public partial class App : Application
 {
     public override void Initialize()
     {
-        #if DEBUG
+#if DEBUG
         if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
         {
             this.EnableHotReload();

+ 1 - 1
Avalonia/ShakerApp/App.axaml.cs

@@ -28,7 +28,7 @@ public partial class App : Application
 #if DEBUG
         if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
         {
-            this.EnableHotReload();
+            //this.EnableHotReload();
         }
 #endif
         AvaloniaXamlLoader.Load(this);

+ 8 - 0
Avalonia/ShakerApp/ShakerApp.csproj

@@ -33,6 +33,8 @@
     <PackageReference Include="Avalonia.Diagnostics" Version="11.2.5" />
     <PackageReference Condition="'$(Configuration)'=='Debug'" Include="HotAvalonia" Version="2.1.0" />
     <PackageReference Condition="'$(Configuration)'=='Debug'" Include="HotAvalonia.Extensions" Version="2.1.0" />
+    <PackageReference Include="ICSharpCode.Decompiler" Version="9.0.0.7889" />
+    <PackageReference Include="log4net" Version="3.0.4" />
     <PackageReference Include="MessagePack" Version="3.1.3" />
     <PackageReference Include="System.ServiceModel.Primitives" Version="8.1.2" />
   </ItemGroup>
@@ -56,5 +58,11 @@
     </Compile>
   </ItemGroup>
 
+  <ItemGroup>
+    <None Update="log4net.config">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+
   <Import Project="..\..\TDMS\TDMS.projitems" Label="Shared" />
 </Project>

+ 19 - 1
Avalonia/ShakerApp/ViewModels/Log/LogViewModel.cs

@@ -1,5 +1,7 @@
 using Avalonia.Collections;
+using log4net;
 using Shaker.Models;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -9,14 +11,18 @@ namespace ShakerApp.ViewModels
 {
     internal class LogViewModel:DisplayViewModelBase<IModel>
     {
+        log4net.ILog log;
         public AvaloniaList<IndexValueItemViewModel<LogItemViewModel>> Logs { get; } = new AvaloniaList<IndexValueItemViewModel<LogItemViewModel>>();
         private LogViewModel()
         {
+            log = log4net.LogManager.GetLogger(typeof(LogViewModel));
+            System.IO.FileInfo file = new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"log4net.config");
+            log4net.Config.XmlConfigurator.ConfigureAndWatch(LogManager.GetRepository(typeof(LogViewModel).Assembly), file);
             ButtonVisibily = false;
             Content = typeof(Views.LogsView);
             GetEvent<Models.LogItemModel>().Subscrip((sender, args) =>
             {
-                Tools.DispatherInovke.Inovke(() => Logs.Add(new IndexValueItemViewModel<LogItemViewModel>(Logs.Count + 1, new LogItemViewModel(args.Data.Message, args.Data.LogType))));
+                AddLog(args.Data.Message, args.Data.LogType);
             });
             GetEvent(nameof(Models.LogItemModel)).Subscrip((sender, args) =>
             {
@@ -32,6 +38,18 @@ namespace ShakerApp.ViewModels
         }
         public void AddLog(string msg,LogType logType = LogType.Info)
         {
+            switch(logType)
+            {
+                case LogType.Error:
+                    log.Error(msg);
+                    break;
+                case LogType.Info:
+                    log.Info(msg);
+                    break;
+                case LogType.Warn:
+                    log.Warn(msg);
+                    break;
+            }
             Tools.DispatherInovke.Inovke(() => Logs.Add(new IndexValueItemViewModel<LogItemViewModel>(Logs.Count + 1, new LogItemViewModel(msg, logType))));
         }
         public static LogViewModel Instance { get; } = new LogViewModel();

+ 1 - 1
Avalonia/ShakerApp/ViewModels/MainViewModel.cs

@@ -28,7 +28,7 @@ public class MainViewModel : DisplayViewModelBase<IModel>
     private AvaloniaDictionary<string, Window?> OpenedWindows = new AvaloniaDictionary<string, Window?>();
     private bool canDebug = false;
 
-    private MainViewModel()
+    private unsafe MainViewModel()
     {
 #if DEBUG
         CanDebug = true;

+ 3 - 1
Avalonia/ShakerApp/ViewModels/Setting/ShakerSettingViewModel.cs

@@ -13,6 +13,7 @@ using System.Diagnostics.CodeAnalysis;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Threading;
 using System.Windows.Input;
 
 namespace ShakerApp.ViewModels
@@ -78,7 +79,8 @@ namespace ShakerApp.ViewModels
                 if (currentLanguage != null)
                 {
                     Language = currentLanguage.Key;
-                    
+                    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(currentLanguage.Key);
+                    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(currentLanguage.Key);
                 }
             }
         }

+ 2 - 0
Avalonia/ShakerApp/ViewModels/ShakerChannelViewModel.cs

@@ -57,6 +57,8 @@ namespace ShakerApp.ViewModels
                 return;
             }
             base.Save();
+            CommunicationViewModel.Instance.LocalCommunication?.GetEvent<Shaker.Models.ShakerChannelModel>()?.Publish(this, Model);
+            CommunicationViewModel.Instance.ServiceCommunication?.GetEvent<Shaker.Models.ShakerChannelModel>()?.Publish(this, Model);
         }
         public static ShakerChannelViewModel Instance { get; } = new ShakerChannelViewModel();
     }

+ 3 - 3
Avalonia/ShakerApp/ViewModels/ShakerConfig/SweepConfigViewModel.cs

@@ -446,9 +446,9 @@ namespace ShakerApp.ViewModels
                 double downstop = 0;
                 double downwarn = 0;
                 Model.CalcAmpt(freq, ref acc, ref upstop, ref upwarn, ref downstop, ref downwarn);
-                datas.Add(new SweepData(freq,double.NaN,Math.Round(acc,4),upstop,downstop,upwarn,downwarn));
-                velocitydata.Add(new DataPoint(freq,Math.Round(Shaker.Models.Tools.Tools.AccelerationToVelocity(acc,freq),4)));
-                displacementdata.Add(new DataPoint(freq,Math.Round(Shaker.Models.Tools.Tools.AccelerationToDisplacement(acc, freq),4)));
+                datas.Add(new SweepData(freq,double.NaN,acc,upstop,downstop,upwarn,downwarn));
+                velocitydata.Add(new DataPoint(freq,Shaker.Models.Tools.Tools.AccelerationToVelocity(acc,freq)));
+                displacementdata.Add(new DataPoint(freq,Shaker.Models.Tools.Tools.AccelerationToDisplacement(acc, freq)));
             }
             AccelerationModel.InvalidatePlot(false);
             VelocityModel.InvalidatePlot(false);

+ 15 - 10
Avalonia/ShakerApp/ViewModels/ShakerDataViewModel.cs

@@ -3,10 +3,12 @@ using OxyPlot;
 using Shaker.Models;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Diagnostics.CodeAnalysis;
 using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -42,7 +44,7 @@ namespace ShakerApp.ViewModels
         private void ReceiveData(byte[] data, uint row, uint col)
         {
             if (row == 0 || col == 0) return;
-            data = Shaker.Models.Tools.Tools.DecompressionBytes(data);
+           var rawdata  = Shaker.Models.Tools.Tools.DecompressionBytes(data);
             switch (ViewModels.ShakerStatusViewModel.Instance.RTStatus)
             {
                 case RTStatus.SignalGen:
@@ -67,7 +69,7 @@ namespace ShakerApp.ViewModels
                     }
                     break;
             }
-            CalcAnalog(data, row, col);
+            CalcAnalog(rawdata, row, col);
             if (ShakerStatusViewModel.Instance.RTStatus == RTStatus.SignalGen && tdmsfile != null)
             {
                 MainPageViewModel.Instance.SaveTestData(tdmsfile);
@@ -125,10 +127,13 @@ namespace ShakerApp.ViewModels
                 return AnalogDataCache[type][seindex].Item1.Select(x => x.Y).ToArray();
             }
         }
-        private void CalcAnalog(byte[] data,uint row,uint col)
+        private unsafe void CalcAnalog(byte[] data,uint row,uint col)
         {
-            if (data.Length == 0 || row == 0 || col == 0) return;
+            if (data.Length == 0 || row == 0 || col == 0 || data.Length<row*col*Unsafe.SizeOf<float>()) return;
             int bytecount = Unsafe.SizeOf<float>();
+            LogViewModel.Instance.AddLog(DateTime.Now.ToString());
+            byte* tempdata = stackalloc byte[data.Length];
+            Unsafe.CopyBlock(ref Unsafe.AsRef<byte>(tempdata), ref data[0], (uint)data.Length);
             lock (_datalocker)
             {
                 AnalogDataCache.Clear();
@@ -142,7 +147,7 @@ namespace ShakerApp.ViewModels
                     float v = 0;
                     for (int j= 0; j < col; j++)
                     {
-                        float tempv = Unsafe.As<byte, float>(ref data[j * bytecount + i * col * bytecount]);
+                        float tempv = Unsafe.As<byte, float>(ref tempdata[j * bytecount + i * col * bytecount]);
                         dataPoints.Add(new DataPoint(1.0 / ShakerConfigViewModel.Instance.SampleRate * j, tempv));
                         max = tempv > max ? tempv : max;
                         min = tempv < min ? tempv : min;
@@ -158,7 +163,7 @@ namespace ShakerApp.ViewModels
                             if(framecount>1)
                             {
                                 byte[] currentchanneldata = new byte[col * Unsafe.SizeOf<float>()];
-                                Unsafe.CopyBlock(ref currentchanneldata[0], ref data[i * col * bytecount], (uint)currentchanneldata.Length);
+                                Unsafe.CopyBlock(ref currentchanneldata[0], ref tempdata[i * col * bytecount], (uint)currentchanneldata.Length);
                                 queue.Enqueue(currentchanneldata);
                                 if (queue.Count > framecount) queue.Dequeue();
                                 currentchanneldata = queue.SelectMany(x => x).ToArray();
@@ -170,7 +175,7 @@ namespace ShakerApp.ViewModels
                                 {
                                     queue.Clear();
                                 }
-                                thd = Tools.Tools.CalcTHD(ref Unsafe.As<byte, float>(ref data[i * col * bytecount]), col);
+                                thd = Tools.Tools.CalcTHD(ref Unsafe.As<byte, float>(ref tempdata[i * col * bytecount]), col);
                             }
                         }
                         else
@@ -179,7 +184,7 @@ namespace ShakerApp.ViewModels
                             {
                                 queue.Clear();
                             }
-                            thd = Tools.Tools.CalcTHD(ref Unsafe.As<byte, float>(ref data[i * col * bytecount]), col);
+                            thd = Tools.Tools.CalcTHD(ref Unsafe.As<byte, float>(ref tempdata[i * col * bytecount]), col);
                         }
                     }
                     Models.StatisticsModel model = new Models.StatisticsModel()
@@ -187,7 +192,7 @@ namespace ShakerApp.ViewModels
                         Name = ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Name,
                         Max = max,
                         Min = min,
-                        RMS = Shaker.Models.Tools.Tools.Calc.Sum.Rms(ref Unsafe.As<byte,float>(ref data[i*bytecount*col]), col),
+                        RMS = Shaker.Models.Tools.Tools.Calc.Sum.Rms(ref Unsafe.As<byte,float>(ref tempdata[i*bytecount*col]), col),
                         Average = v/ col,
                         THD = thd,
                         Unit = ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Unit,
@@ -204,7 +209,7 @@ namespace ShakerApp.ViewModels
                     statistics.Add(model);
                 }
             }
-            GetEvent(Topic.DATA).Publish(this,null);
+             GetEvent(Topic.DATA).Publish(this,null);
         }
         public static ShakerDataViewModel Instance { get; } = new ShakerDataViewModel();
     }

+ 6 - 0
Avalonia/ShakerApp/ViewModels/ShakerStatus/ShakerStatusViewModel.cs

@@ -192,6 +192,12 @@ namespace ShakerApp.ViewModels
                     CommunicationViewModel.Instance.LocalCommunication?.GetEvent<MainPageType>()?.Publish(this, MainPageType.RandomPage);
                     RandomMainPageViewModel.Instance.Start();
                     break;
+                case MainPageType.OutSignal:
+                    CommunicationViewModel.Instance.LocalCommunication?.GetEvent<MainPageType>()?.Publish(this, MainPageType.OutSignal);
+                    break;
+                default:
+                    MainViewModel.Default.ShowToast("Notsupportstartcommand", Avalonia.Controls.Notifications.NotificationType.Error);
+                    return;
             }
             CommunicationViewModel.Instance.LocalCommunication?.GetEvent(Topic.STARTSIGNALGEN)?.Publish(this, null);
         }

+ 2 - 1
Avalonia/ShakerApp/ViewModels/SignalPreview/AnalogSignalPreviewViewModel.cs

@@ -131,7 +131,8 @@ namespace ShakerApp.ViewModels
                 PlotModel.Axes[0].Title = App.Current?.FindResource("Time") + "";
                 PlotModel.Axes[1].Title = App.Current?.FindResource("Ampt") + "";
                 UpdatePlotTitle(SelectedAnalog);
-                var config = ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs.First(x => x.AnalogType == SelectedAnalog);
+                var config = ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs.FirstOrDefault(x => x.AnalogType == SelectedAnalog);
+                if (config == null) return;
                 for(int i=0;i<PlotModel.Series.Count;i++)
                 {
                     PlotModel.Series[i].Title = App.Current?.FindResource(config.Name) + "";

+ 1 - 1
Avalonia/ShakerApp/Window1.axaml

@@ -14,5 +14,5 @@
     IsMenuVisible="{Binding IsMenuVisible}"
     MenuItems="{Binding Menus, Converter={StaticResource MenuItemConverter}}"
     mc:Ignorable="d">
-    <ColorPicker />
+    <TextBlock Text="{DynamicResource RandomValueUnit}" />
 </suki:SukiWindow>

+ 30 - 0
Avalonia/ShakerApp/log4net.config

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <configSections>
+    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
+  </configSections>
+  <log4net debug="true">
+    <root>
+      <level value="DEBUG" />
+      <appender-ref ref="RollingLogFileAppender" />
+      <appender-ref ref="ConsoleAppender" />
+    </root>
+    <appender name="ConsoleAppender"  type="log4net.Appender.ConsoleAppender" >
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="[%date] %level [%thread][%c{1}:%line] - %m%n" />
+      </layout>
+    </appender>
+    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
+      <param name="File" value="Log/"/>
+      <param name="DatePattern" value="'ShakerApp 'yyyy-MM-dd'.log'"/>
+      <param name="StaticLogFileName" value ="false"/>
+      <param name="AppendToFile" value="true" />
+      <param name="rollingStyle" value="Composite" />
+      <param name="maxSizeRollBackups" value="-1"/>
+      <param name="maximumFileSize" value="10MB"/>
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="[%date] %level [%thread][%c{1}:%line] - %m%n" />
+      </layout>
+    </appender>
+  </log4net>
+</configuration>

+ 1 - 0
Language/Zh-CN/Language.axaml

@@ -167,6 +167,7 @@
     <s:String x:Key="SweepTimeSetModelTime">时间</s:String>
     <s:String x:Key="SweepTimeSetModelOCT">OCT</s:String>
     <s:String x:Key="DisplacementPI">位移PI参数</s:String>
+    <s:String x:Key="Notsupportstartcommand">不支持的试验类型</s:String>
 
 
     <s:String x:Key="PlotConfig">曲线设置</s:String>

+ 8 - 1
OxyPlot/OxyPlot/PlotController/Manipulators/TrackerManipulator.cs

@@ -122,7 +122,14 @@ namespace OxyPlot
                 result.PlotModel = this.PlotView.ActualModel;
                 foreach (var item in result.PlotModel.Series.OfType<OxyPlot.Series.DataPointSeries>().ToList())
                 {
-                    result.TrackerDatas.Add(new TrackerData(item, item.ActualPoints[(int)result.Index]));
+                    if (result.Index >= 0 && result.Index < item.ActualPoints.Count)
+                    {
+                        result.TrackerDatas.Add(new TrackerData(item, item.ActualPoints[(int)result.Index]));
+                    }
+                    else
+                    {
+                        result.TrackerDatas.Add(new TrackerData(item, new DataPoint(double.NaN, double.NaN)));
+                    }
                 }
                 this.PlotView.ShowTracker(result);
                 this.PlotView.ActualModel.RaiseTrackerChanged(result);

+ 1 - 0
Shaker/Service.RTInit.cs

@@ -19,6 +19,7 @@ namespace ShakerService
             ShakerFpga.Instance.ChangeZero.Value = false;
             ServiceShakerConfigViewModel.Instance.SetFpga();
             ServiceShakerControlViewModel.Instance.SetFpga();
+            ServiceShakerChannelViewModel.Instance.SetFpga();
             ShakerFpga.Instance.AdjustmentCoefficient.Value = 1;
             ShakerFpga.Instance.Run();
             Log.Default.Info("初始化FPGA");

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 23472 - 35631
Shaker/Shaker.lvbitx


+ 5 - 0
Shaker/ViewModel/ServiceShakerChannelViewModel.cs

@@ -39,6 +39,11 @@ namespace ShakerService.ViewModel
                 ShakerFpga.Instance.DisplacementChannel.Value = DisplacementChannel;
                 ShakerFpga.Instance.AccelerationChannel0.Value = AccelerationChannel0;
                 ShakerFpga.Instance.AccelerationChannel1.Value = AccelerationChannel1;
+                if(ServiceShakerStatusViewModel.Instance.RTStatus!= Shaker.Models.RTStatus.SignalGen)
+                {
+                    ShakerFpga.Instance.SynthesisType.Value = (ushort)Shaker.Models.AccelerationSynthesisType.Synthesis;
+                    ShakerFpga.Instance.Weight.Value = new double[] { 1, 0 };
+                }
                 ShakerFpga.Instance.OutSignalChannel.Value = OutSignalChannel;
             }
             catch

+ 1 - 1
Shaker/ViewModel/ServiceSweepConfigViewModel.cs

@@ -49,7 +49,7 @@ namespace ShakerService.ViewModel
                 ShakerFpga.Instance.SweepCount.Value = SweepCount;
                 ShakerFpga.Instance.SweepDown.Value = SweepDirection == SweepDirection.Down;
                 ShakerFpga.Instance.Linear.Value = SweepType == SweepType.Linear;
-                ShakerFpga.Instance.SynthesisType.Value = (byte)AccelerationSynthesisType.Synthesis;
+                ShakerFpga.Instance.SynthesisType.Value = (ushort)AccelerationSynthesisType.Synthesis;
                 ShakerFpga.Instance.Weight.Value = SelectChannel == 0 ? new double[] { 1,0} : new double[] { 0,1};
                 double startfreq = SweepStartFrequency;
                 double startacc = Model.CalcAmpt(startfreq);

+ 0 - 44
ShakerControl.sln

@@ -116,20 +116,6 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WatsonTcp", "Communication\
 EndProject
 Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "TDMS", "TDMS\TDMS.shproj", "{51FAEDCD-D9D6-453A-B9D3-E85DB0406D19}"
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Veldrid", "Veldrid", "{04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Veldrid", "Veldrid\Veldrid\Veldrid.csproj", "{BF64A114-E7F9-47A1-B131-95BE5F068BB0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Veldrid.MetalBindings", "Veldrid\Veldrid.MetalBindings\Veldrid.MetalBindings.csproj", "{66F0F28B-254B-4368-932F-E4B67A505B03}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Veldrid.OpenGLBindings", "Veldrid\Veldrid.OpenGLBindings\Veldrid.OpenGLBindings.csproj", "{B97CA136-3C63-4222-BBA5-1DC045400824}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Veldrid.SPIRV", "Veldrid\Veldrid.SPIRV\Veldrid.SPIRV.csproj", "{5EE34A19-57C3-4697-BCEF-7D941CFD2C92}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VeldridChart", "Veldrid\VeldridChart\VeldridChart.csproj", "{E240B8C5-CE15-461C-B2E3-E57F64781A03}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvaloniaApplication1", "Veldrid\AvaloniaApplication1\AvaloniaApplication1.csproj", "{5A606A3D-B741-4DA1-868D-9E7D240839B5}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoDeploy", "AutoDeploy\AutoDeploy.csproj", "{5D0B2B0F-9339-47DD-BF28-CBF19E1D62B1}"
 EndProject
 Global
@@ -230,30 +216,6 @@ Global
 		{1C9C9ED0-2215-43CC-8557-99CDFDD31219}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1C9C9ED0-2215-43CC-8557-99CDFDD31219}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1C9C9ED0-2215-43CC-8557-99CDFDD31219}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BF64A114-E7F9-47A1-B131-95BE5F068BB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BF64A114-E7F9-47A1-B131-95BE5F068BB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BF64A114-E7F9-47A1-B131-95BE5F068BB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BF64A114-E7F9-47A1-B131-95BE5F068BB0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{66F0F28B-254B-4368-932F-E4B67A505B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{66F0F28B-254B-4368-932F-E4B67A505B03}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{66F0F28B-254B-4368-932F-E4B67A505B03}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{66F0F28B-254B-4368-932F-E4B67A505B03}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B97CA136-3C63-4222-BBA5-1DC045400824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B97CA136-3C63-4222-BBA5-1DC045400824}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B97CA136-3C63-4222-BBA5-1DC045400824}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B97CA136-3C63-4222-BBA5-1DC045400824}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5EE34A19-57C3-4697-BCEF-7D941CFD2C92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5EE34A19-57C3-4697-BCEF-7D941CFD2C92}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5EE34A19-57C3-4697-BCEF-7D941CFD2C92}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5EE34A19-57C3-4697-BCEF-7D941CFD2C92}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E240B8C5-CE15-461C-B2E3-E57F64781A03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E240B8C5-CE15-461C-B2E3-E57F64781A03}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E240B8C5-CE15-461C-B2E3-E57F64781A03}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E240B8C5-CE15-461C-B2E3-E57F64781A03}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5A606A3D-B741-4DA1-868D-9E7D240839B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5A606A3D-B741-4DA1-868D-9E7D240839B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5A606A3D-B741-4DA1-868D-9E7D240839B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5A606A3D-B741-4DA1-868D-9E7D240839B5}.Release|Any CPU.Build.0 = Release|Any CPU
 		{5D0B2B0F-9339-47DD-BF28-CBF19E1D62B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5D0B2B0F-9339-47DD-BF28-CBF19E1D62B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5D0B2B0F-9339-47DD-BF28-CBF19E1D62B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -299,12 +261,6 @@ Global
 		{33C2C0A8-F484-4F92-8DE8-71FF1AAEC529} = {E6D664F7-E527-4F99-B705-D8A9B0AAF98B}
 		{3279E103-E03F-4D4D-A6EE-27250C33BAA7} = {E6D664F7-E527-4F99-B705-D8A9B0AAF98B}
 		{CC64DB65-9EFC-4ECC-BB38-2FF5C7440ECD} = {5014ECCD-852C-4054-83FA-74E2D6A66589}
-		{BF64A114-E7F9-47A1-B131-95BE5F068BB0} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
-		{66F0F28B-254B-4368-932F-E4B67A505B03} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
-		{B97CA136-3C63-4222-BBA5-1DC045400824} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
-		{5EE34A19-57C3-4697-BCEF-7D941CFD2C92} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
-		{E240B8C5-CE15-461C-B2E3-E57F64781A03} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
-		{5A606A3D-B741-4DA1-868D-9E7D240839B5} = {04BA1022-962A-4EFD-AE7E-C8E44A6ADF99}
 		{5D0B2B0F-9339-47DD-BF28-CBF19E1D62B1} = {E6D664F7-E527-4F99-B705-D8A9B0AAF98B}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov