diff --git a/Pilz.IO/EmbeddedFilesContainer.cs b/Pilz.IO/EmbeddedFilesContainer.cs new file mode 100644 index 0000000..9a0114f --- /dev/null +++ b/Pilz.IO/EmbeddedFilesContainer.cs @@ -0,0 +1,129 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilz.IO +{ + public class EmbeddedFilesContainer + { + [JsonProperty("CompressedFiles")] + private readonly Dictionary compressedFiles = new Dictionary(); + + [JsonIgnore] + public IEnumerable AllFileNames + { + get => compressedFiles.Keys; + } + + public Task AddFileAsync(string fileName, string filePath) + { + return Task.Run(() => AddFile(fileName, filePath)); + } + + public bool AddFile(string fileName, string filePath) + { + bool success; + FileStream fs = null; + MemoryStream compressed = null; + +#if !DEBUG + try + { +#endif + fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + compressed = new MemoryStream(); + using (var compressor = new DeflateStream(compressed, CompressionLevel.Optimal, true)) + fs.CopyTo(compressor); + success = true; +#if !DEBUG + } + catch (Exception) + { + success = false; + } +#endif + + if (success) + { + var compressedBytes = compressed.ToArray(); + if (compressedFiles.ContainsKey(fileName)) + compressedFiles[fileName] = compressedBytes; + else + compressedFiles.Add(fileName, compressedBytes); + } + + compressed?.Close(); + fs?.Close(); + + return success; + } + + public void RemoveFile(string fileName) + { + if (compressedFiles.ContainsKey(fileName)) + compressedFiles.Remove(fileName); + } + + public bool HasFile(string fileName) + { + return compressedFiles.ContainsKey(fileName); + } + + public Task GetStreamAsync(string fileName) + { + return Task.Run(() => GetStream(fileName)); + } + + public Stream GetStream(string fileName) + { + Stream decompressed = null; + + if (compressedFiles.ContainsKey(fileName)) + { + decompressed = new MemoryStream(); + DecompressToStream(decompressed, compressedFiles[fileName]); + } + + return decompressed; + } + + public Task GetLocalFilePathAsync(string fileName) + { + return Task.Run(() => GetLocalFilePath(fileName)); + } + + public string GetLocalFilePath(string fileName) + { + string filePath = string.Empty; + + if (compressedFiles.ContainsKey(fileName)) + { + filePath = Path.GetTempFileName(); + + if (Path.HasExtension(fileName)) + filePath = Path.ChangeExtension(filePath, Path.GetExtension(fileName)); + + var decompressed = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite); + DecompressToStream(decompressed, compressedFiles[fileName]); + decompressed.Flush(); + decompressed.Close(); + } + + return filePath; + } + + private void DecompressToStream(Stream decompressed, byte[] compressedData) + { + var compressed = new MemoryStream(compressedData); + var decompressor = new DeflateStream(compressed, CompressionMode.Decompress, true); + decompressor.CopyTo(decompressed); + decompressor.Close(); + compressed.Close(); + } + } +} diff --git a/Pilz.IO/EventArgs/DataEventargs.cs b/Pilz.IO/EventArgs/DataEventargs.cs new file mode 100644 index 0000000..a8f4e1b --- /dev/null +++ b/Pilz.IO/EventArgs/DataEventargs.cs @@ -0,0 +1,14 @@ +using System; + +namespace Pilz.IO +{ + public class DataEventArgs : EventArgs + { + public readonly byte[] Data; + + public DataEventArgs(byte[] bytes) : base() + { + Data = bytes; + } + } +} \ No newline at end of file diff --git a/Pilz.IO/EventArgs/DataEventargs.vb b/Pilz.IO/EventArgs/DataEventargs.vb deleted file mode 100644 index 83073f9..0000000 --- a/Pilz.IO/EventArgs/DataEventargs.vb +++ /dev/null @@ -1,10 +0,0 @@ -Public Class DataEventArgs : Inherits EventArgs - - Public ReadOnly Data As Byte() - - Public Sub New(bytes As Byte()) - MyBase.New() - Data = bytes - End Sub - -End Class diff --git a/Pilz.IO/ManagedPipes/ManagedPipe.cs b/Pilz.IO/ManagedPipes/ManagedPipe.cs new file mode 100644 index 0000000..9546e5d --- /dev/null +++ b/Pilz.IO/ManagedPipes/ManagedPipe.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Pilz.IO +{ + /// + /// stellt den Erben "Server" und "Client" 2 verschiedene + /// Message-Events zur Verfügung, und ein Event-Raisendes Dispose + /// + public abstract class ManagedPipe : IDisposable + { + public delegate void EventHandlerWithOneArgument(T0 Sender); + + /// + /// Zur Ausgabe chat-verwaltungstechnischer Status-Informationen + /// + public event EventHandler StatusMessage; + /// Zur Ausgabe von Chat-Messages + public event EventHandler RetriveData; + public event EventHandlerWithOneArgument Disposed; + + private bool _IsDisposed = false; + + protected abstract void Dispose(bool disposing); + public abstract void Send(byte[] bytes); + public abstract Task SendAsnyc(byte[] bytes); + + protected void OnStatusMessage(DataEventArgs e) + { + StatusMessage?.Invoke(this, e); + } + + protected void OnRetriveData(DataEventArgs e) + { + RetriveData?.Invoke(this, e); + } + + public void RemoveFrom(ICollection Coll) where T : ManagedPipe + { + Coll.Remove((T)this); + } + + public bool IsDisposed + { + get + { + return _IsDisposed; + } + } + + public void AddTo(ICollection Coll) where T : ManagedPipe + { + Coll.Add((T)this); + } + + public void Dispose() + { + if (_IsDisposed) + return; + _IsDisposed = true; + Dispose(true); // rufe die erzwungenen Überschreibungen von Sub Dispose(Boolean) + Disposed?.Invoke(this); + GC.SuppressFinalize(this); + } + } +} \ No newline at end of file diff --git a/Pilz.IO/ManagedPipes/ManagedPipe.vb b/Pilz.IO/ManagedPipes/ManagedPipe.vb deleted file mode 100644 index ff64541..0000000 --- a/Pilz.IO/ManagedPipes/ManagedPipe.vb +++ /dev/null @@ -1,53 +0,0 @@ -''' -''' stellt den Erben "Server" und "Client" 2 verschiedene -''' Message-Events zur Verfügung, und ein Event-Raisendes Dispose -''' -Public MustInherit Class ManagedPipe : Implements IDisposable - - Public Delegate Sub EventHandlerWithOneArgument(Of T0)(Sender As T0) - - ''' - ''' Zur Ausgabe chat-verwaltungstechnischer Status-Informationen - ''' - Public Event StatusMessage As EventHandler(Of DataEventArgs) - ''' Zur Ausgabe von Chat-Messages - Public Event RetriveData As EventHandler(Of DataEventArgs) - Public Event Disposed As EventHandlerWithOneArgument(Of ManagedPipe) - - Private _IsDisposed As Boolean = False - - Protected MustOverride Sub Dispose(disposing As Boolean) - Public MustOverride Sub Send(bytes As Byte()) - Public MustOverride Function SendAsnyc(bytes As Byte()) As Task - - Protected Sub OnStatusMessage(ByVal e As DataEventArgs) - RaiseEvent StatusMessage(Me, e) - End Sub - - Protected Sub OnRetriveData(ByVal e As DataEventArgs) - RaiseEvent RetriveData(Me, e) - End Sub - - Public Sub RemoveFrom(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T)) - Coll.Remove(DirectCast(Me, T)) - End Sub - - Public ReadOnly Property IsDisposed() As Boolean - Get - Return _IsDisposed - End Get - End Property - - Public Sub AddTo(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T)) - Coll.Add(Me) - End Sub - - Public Sub Dispose() Implements IDisposable.Dispose - If _IsDisposed Then Return - _IsDisposed = True - Dispose(True) ' rufe die erzwungenen Überschreibungen von Sub Dispose(Boolean) - RaiseEvent Disposed(Me) - GC.SuppressFinalize(Me) - End Sub - -End Class diff --git a/Pilz.IO/ManagedPipes/ManagedPipeClient.cs b/Pilz.IO/ManagedPipes/ManagedPipeClient.cs new file mode 100644 index 0000000..4264079 --- /dev/null +++ b/Pilz.IO/ManagedPipes/ManagedPipeClient.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using global::System.IO.Pipes; +using System.Threading.Tasks; +using global::Pilz.Threading; + +namespace Pilz.IO +{ + public class ManagedPipeClient : ManagedPipe + { + private PipeStream pipeStream; + private byte[] _Buf = new byte[1024]; + + public bool RaiseEventsGui { get; set; } = true; + + public ManagedPipeClient(string pipeName) : this(pipeName, ".") + { + } + + public ManagedPipeClient(string pipeName, string serverName) : this(pipeName, serverName, -1) + { + } + + public ManagedPipeClient(string pipeName, int connectionTimeout) : this(pipeName, ".", connectionTimeout) + { + } + + public ManagedPipeClient(string pipeName, string serverName, int connectionTimeout) + { + var clnt = new NamedPipeClientStream(serverName, pipeName, PipeDirection.InOut, PipeOptions.Asynchronous); + clnt.Connect(connectionTimeout); + if (!clnt.IsConnected) + { + throw new TimeoutException("Connection timeout!"); + } + + SetPipe(clnt); + } + + public ManagedPipeClient(PipeStream pipe) + { + SetPipe(pipe); + } + + private void SetPipe(PipeStream pipe) + { + pipeStream = pipe; + pipeStream.BeginRead(_Buf, 0, _Buf.Length, EndRead, null); + } + + private void EndRead(IAsyncResult ar) + { + if (IsDisposed) + return; + int bytesCount = pipeStream.EndRead(ar); + if (bytesCount == 0) // leere Datenübermittlung signalisiert Verbindungsabbruch + { + if (RaiseEventsGui) + { + CrossThreadsInvokeing.RunGui(Dispose); + } + else + { + Dispose(); + } + + return; + } + + var list = new List(); + for (int i = 0, loopTo = bytesCount - 1; i <= loopTo; i++) + list.Add(_Buf[i]); + while (bytesCount == _Buf.Length) + { + bytesCount = pipeStream.Read(_Buf, 0, _Buf.Length); + for (int i = 0, loopTo1 = bytesCount - 1; i <= loopTo1; i++) + list.Add(_Buf[i]); + } + + var deargs = new DataEventArgs(list.ToArray()); + if (RaiseEventsGui) + { + CrossThreadsInvokeing.RunGui(OnRetriveData, deargs); + } + else + { + OnRetriveData(deargs); + } + + pipeStream.BeginRead(_Buf, 0, _Buf.Length, EndRead, null); + } + + public override Task SendAsnyc(byte[] bytes) + { + return Task.Run(() => Send(bytes)); + } + + public override void Send(byte[] data) + { + pipeStream.Write(data, 0, data.Length); + } + + protected override void Dispose(bool disposing) + { + pipeStream.Dispose(); + } + } +} \ No newline at end of file diff --git a/Pilz.IO/ManagedPipes/ManagedPipeClient.vb b/Pilz.IO/ManagedPipes/ManagedPipeClient.vb deleted file mode 100644 index d0ef505..0000000 --- a/Pilz.IO/ManagedPipes/ManagedPipeClient.vb +++ /dev/null @@ -1,91 +0,0 @@ -Imports System.Net -Imports System.Text -Imports System.IO.Pipes -Imports Pilz.Threading - -Public Class ManagedPipeClient : Inherits ManagedPipe - - Private pipeStream As PipeStream - Private _Buf(&H400 - 1) As Byte - - Public Property RaiseEventsGui As Boolean = True - - Public Sub New(pipeName As String) - Me.New(pipeName, ".") - End Sub - - Public Sub New(pipeName As String, serverName As String) - Me.New(pipeName, serverName, -1) - End Sub - - Public Sub New(pipeName As String, connectionTimeout As Integer) - Me.New(pipeName, ".", connectionTimeout) - End Sub - - Public Sub New(pipeName As String, serverName As String, connectionTimeout As Integer) - Dim clnt As New NamedPipeClientStream(serverName, pipeName, PipeDirection.InOut, PipeOptions.Asynchronous) - clnt.Connect(connectionTimeout) - If Not clnt.IsConnected Then - Throw New TimeoutException("Connection timeout!") - End If - SetPipe(clnt) - End Sub - - Public Sub New(pipe As PipeStream) - SetPipe(pipe) - End Sub - - Private Sub SetPipe(pipe As PipeStream) - pipeStream = pipe - pipeStream.BeginRead(_Buf, 0, _Buf.Length, AddressOf EndRead, Nothing) - End Sub - - Private Sub EndRead(ar As IAsyncResult) - If IsDisposed Then Return - - Dim bytesCount As Integer = pipeStream.EndRead(ar) - If bytesCount = 0 Then 'leere Datenübermittlung signalisiert Verbindungsabbruch - If RaiseEventsGui Then - CrossThreadsInvokeing.RunGui(AddressOf Dispose) - Else - Dispose() - End If - Return - End If - - Dim list As New List(Of Byte) - - For i As Integer = 0 To bytesCount - 1 - list.Add(_Buf(i)) - Next - - Do While bytesCount = _Buf.Length - bytesCount = pipeStream.Read(_Buf, 0, _Buf.Length) - For i As Integer = 0 To bytesCount - 1 - list.Add(_Buf(i)) - Next - Loop - - Dim deargs As New DataEventArgs(list.ToArray) - If RaiseEventsGui Then - CrossThreadsInvokeing.RunGui(AddressOf OnRetriveData, deargs) - Else - OnRetriveData(deargs) - End If - - pipeStream.BeginRead(_Buf, 0, _Buf.Length, AddressOf EndRead, Nothing) - End Sub - - Public Overrides Function SendAsnyc(bytes() As Byte) As Task - Return Task.Run(Sub() Send(bytes)) - End Function - - Public Overrides Sub Send(data As Byte()) - pipeStream.Write(data, 0, data.Length) - End Sub - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - pipeStream.Dispose() - End Sub - -End Class diff --git a/Pilz.IO/ManagedPipes/ManagedPipeServer.cs b/Pilz.IO/ManagedPipes/ManagedPipeServer.cs new file mode 100644 index 0000000..2f673f9 --- /dev/null +++ b/Pilz.IO/ManagedPipes/ManagedPipeServer.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using global::System.IO.Pipes; +using System.Threading.Tasks; + +namespace Pilz.IO +{ + public class ManagedPipeServer : ManagedPipe + { + + // Pro Verbindung (Anfrage) wird ein Client-Objekt generiert, das den Datenaustausch dieser Verbindung abwickelt + public List Clients { get; private set; } = new List(); + + private readonly string pipeName = ""; + private readonly int maxNumbersOfServerInstances; + private int numberOfStartedServerInstances = 0; + + public ManagedPipeServer(string pipeName) : this(pipeName, 1) + { + } + + public ManagedPipeServer(string pipeName, int maxNumbersOfServerInstances) + { + this.pipeName = pipeName; + this.maxNumbersOfServerInstances = maxNumbersOfServerInstances; + CreateWaitingStream(); + } + + private void CreateWaitingStream() + { + if (numberOfStartedServerInstances < maxNumbersOfServerInstances) + { + var strm = new NamedPipeServerStream(pipeName, PipeDirection.InOut, maxNumbersOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); + numberOfStartedServerInstances += 1; + strm.BeginWaitForConnection(EndAccept, strm); + } + } + + private void EndAccept(IAsyncResult ar) + { + NamedPipeServerStream strm = (NamedPipeServerStream)ar.AsyncState; + strm.EndWaitForConnection(ar); + if (IsDisposed) + { + strm.Dispose(); + return; + } + + { + var withBlock = new ManagedPipeClient(strm); + withBlock.RetriveData += Client_RetriveData; + withBlock.StatusMessage += Client_StatusMessage; + withBlock.Disposed += Client_Disposed; + withBlock.AddTo(Clients); + } + + CreateWaitingStream(); + } + + /* TODO ERROR: Skipped RegionDirectiveTrivia */ + private void Client_Disposed(ManagedPipe Sender) + { + // den Client für die beendete Verbindung entfernen + Sender.RemoveFrom(Clients); + numberOfStartedServerInstances -= 1; + CreateWaitingStream(); + } + + private void Client_RetriveData(object sender, DataEventArgs e) + { + // einkommende ChatMessages anzeigen, und an alle versenden + OnRetriveData(e); + } + + private void Client_StatusMessage(object sender, DataEventArgs e) + { + // einkommende StatusMessages durchreichen (zur Anzeige) + OnStatusMessage(e); + } + + /* TODO ERROR: Skipped EndRegionDirectiveTrivia */ + public override Task SendAsnyc(byte[] bytes) + { + return Task.Run(() => Send(bytes)); + } + + public override void Send(byte[] data) + { + foreach (ManagedPipeClient client in Clients) // an alle versenden + client.Send(data); + } + + protected override void Dispose(bool disposing) + { + if (numberOfStartedServerInstances < maxNumbersOfServerInstances) + { + using (var clnt = new NamedPipeClientStream(pipeName)) + { + // Herstellen einer Dummi-Verbindung, damit der ServerStream aus dem Wartezustand herauskommt. + clnt.Connect(); + } + } + + for (int i = Clients.Count - 1; i >= 0; i -= 1) + Clients[i].Dispose(); + } + } +} \ No newline at end of file diff --git a/Pilz.IO/ManagedPipes/ManagedPipeServer.vb b/Pilz.IO/ManagedPipes/ManagedPipeServer.vb deleted file mode 100644 index 3afe662..0000000 --- a/Pilz.IO/ManagedPipes/ManagedPipeServer.vb +++ /dev/null @@ -1,95 +0,0 @@ -Imports System.Net -Imports System.IO.Pipes -Imports Pilz.Threading - -Public Class ManagedPipeServer : Inherits ManagedPipe - - 'Pro Verbindung (Anfrage) wird ein Client-Objekt generiert, das den Datenaustausch dieser Verbindung abwickelt - Public ReadOnly Property Clients As New List(Of ManagedPipeClient) - Private ReadOnly pipeName As String = "" - Private ReadOnly maxNumbersOfServerInstances As Integer - Private numberOfStartedServerInstances As Integer = 0 - - Public Sub New(ByVal pipeName As String) - Me.New(pipeName, 1) - End Sub - - Public Sub New(pipeName As String, maxNumbersOfServerInstances As Integer) - Me.pipeName = pipeName - Me.maxNumbersOfServerInstances = maxNumbersOfServerInstances - CreateWaitingStream() - End Sub - - Private Sub CreateWaitingStream() - If numberOfStartedServerInstances < maxNumbersOfServerInstances Then - Dim strm = New NamedPipeServerStream(pipeName, PipeDirection.InOut, maxNumbersOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.Asynchronous) - numberOfStartedServerInstances += 1 - strm.BeginWaitForConnection(AddressOf EndAccept, strm) - End If - End Sub - - Private Sub EndAccept(ByVal ar As IAsyncResult) - Dim strm = DirectCast(ar.AsyncState, NamedPipeServerStream) - - strm.EndWaitForConnection(ar) - - If IsDisposed Then - strm.Dispose() - Return - End If - - With New ManagedPipeClient(strm) - AddHandler .RetriveData, AddressOf Client_RetriveData - AddHandler .StatusMessage, AddressOf Client_StatusMessage - AddHandler .Disposed, AddressOf Client_Disposed - .AddTo(_Clients) - End With - - CreateWaitingStream() - End Sub - -#Region "_Clients-Ereignisverarbeitung" - - Private Sub Client_Disposed(ByVal Sender As ManagedPipe) - 'den Client für die beendete Verbindung entfernen - Sender.RemoveFrom(_Clients) - numberOfStartedServerInstances -= 1 - CreateWaitingStream() - End Sub - - Private Sub Client_RetriveData(ByVal sender As Object, ByVal e As DataEventArgs) - 'einkommende ChatMessages anzeigen, und an alle versenden - OnRetriveData(e) - End Sub - - Private Sub Client_StatusMessage(ByVal sender As Object, ByVal e As DataEventArgs) - 'einkommende StatusMessages durchreichen (zur Anzeige) - OnStatusMessage(e) - End Sub - -#End Region - - Public Overrides Function SendAsnyc(bytes() As Byte) As Task - Return Task.Run(Sub() Send(bytes)) - End Function - - Public Overrides Sub Send(data As Byte()) - For Each client As ManagedPipeClient In _Clients 'an alle versenden - client.Send(data) - Next - End Sub - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - If numberOfStartedServerInstances < maxNumbersOfServerInstances Then - Using clnt As New NamedPipeClientStream(pipeName) - 'Herstellen einer Dummi-Verbindung, damit der ServerStream aus dem Wartezustand herauskommt. - clnt.Connect() - End Using - End If - - For i As Integer = _Clients.Count - 1 To 0 Step -1 - _Clients(i).Dispose() - Next - End Sub - -End Class diff --git a/Pilz.IO/My Project/Application.Designer.cs b/Pilz.IO/My Project/Application.Designer.cs new file mode 100644 index 0000000..2be760e --- /dev/null +++ b/Pilz.IO/My Project/Application.Designer.cs @@ -0,0 +1,11 @@ +// ------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +// ------------------------------------------------------------------------------ + + diff --git a/Pilz.IO/My Project/Application.Designer.vb b/Pilz.IO/My Project/Application.Designer.vb deleted file mode 100644 index 8ab460b..0000000 --- a/Pilz.IO/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' Dieser Code wurde von einem Tool generiert. -' Laufzeitversion:4.0.30319.42000 -' -' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -' der Code erneut generiert wird. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Pilz.IO/My Project/AssemblyInfo.vb b/Pilz.IO/My Project/AssemblyInfo.vb deleted file mode 100644 index ed26f17..0000000 --- a/Pilz.IO/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' Allgemeine Informationen über eine Assembly werden über die folgenden -' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -' die einer Assembly zugeordnet sind. - -' Werte der Assemblyattribute überprüfen - - - - - - - - - - -'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird. - - -' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -' -' Hauptversion -' Nebenversion -' Buildnummer -' Revision -' -' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, -' übernehmen, indem Sie "*" eingeben: -' - - - diff --git a/Pilz.IO/My Project/MyNamespace.Static.1.Designer.cs b/Pilz.IO/My Project/MyNamespace.Static.1.Designer.cs new file mode 100644 index 0000000..f592364 --- /dev/null +++ b/Pilz.IO/My Project/MyNamespace.Static.1.Designer.cs @@ -0,0 +1,192 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Diagnostics; +using Microsoft.VisualBasic; + +/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ +/* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia */ +/* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia *//* TODO ERROR: Skipped DefineDirectiveTrivia */ +/* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ +/* TODO ERROR: Skipped IfDirectiveTrivia */ +namespace Pilz.IO.My +{ + + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + + /* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped ElifDirectiveTrivia */ + internal partial class MyApplication : Microsoft.VisualBasic.ApplicationServices.ApplicationBase + { + /* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + } + + /* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + + /* TODO ERROR: Skipped IfDirectiveTrivia */ + internal partial class MyComputer : Microsoft.VisualBasic.Devices.Computer + { + /* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + [DebuggerHidden()] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public MyComputer() : base() + { + } + } + /* TODO ERROR: Skipped EndIfDirectiveTrivia */ + [HideModuleName()] + [System.CodeDom.Compiler.GeneratedCode("MyTemplate", "11.0.0.0")] + internal static class MyProject + { + + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.ComponentModel.Design.HelpKeyword("My.Computer")] + internal static MyComputer Computer + { + [DebuggerHidden()] + get + { + return m_ComputerObjectProvider.GetInstance; + } + } + + private readonly static ThreadSafeObjectProvider m_ComputerObjectProvider = new ThreadSafeObjectProvider(); + /* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.ComponentModel.Design.HelpKeyword("My.Application")] + internal static MyApplication Application + { + [DebuggerHidden()] + get + { + return m_AppObjectProvider.GetInstance; + } + } + + private readonly static ThreadSafeObjectProvider m_AppObjectProvider = new ThreadSafeObjectProvider(); + /* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.ComponentModel.Design.HelpKeyword("My.User")] + internal static Microsoft.VisualBasic.ApplicationServices.User User + { + [DebuggerHidden()] + get + { + return m_UserObjectProvider.GetInstance; + } + } + + private readonly static ThreadSafeObjectProvider m_UserObjectProvider = new ThreadSafeObjectProvider(); + /* TODO ERROR: Skipped ElifDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [System.ComponentModel.Design.HelpKeyword("My.WebServices")] + internal static MyWebServices WebServices + { + [DebuggerHidden()] + get + { + return m_MyWebServicesObjectProvider.GetInstance; + } + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [MyGroupCollection("System.Web.Services.Protocols.SoapHttpClientProtocol", "Create__Instance__", "Dispose__Instance__", "")] + internal sealed class MyWebServices + { + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [DebuggerHidden()] + public override bool Equals(object o) + { + return base.Equals(o); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [DebuggerHidden()] + public override int GetHashCode() + { + return base.GetHashCode(); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [DebuggerHidden()] + internal new Type GetType() + { + return typeof(MyWebServices); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [DebuggerHidden()] + public override string ToString() + { + return base.ToString(); + } + + [DebuggerHidden()] + private static T Create__Instance__(T instance) where T : new() + { + if (instance == null) + { + return new T(); + } + else + { + return instance; + } + } + + [DebuggerHidden()] + private void Dispose__Instance__(ref T instance) + { + instance = default; + } + + [DebuggerHidden()] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public MyWebServices() : base() + { + } + } + + private readonly static ThreadSafeObjectProvider m_MyWebServicesObjectProvider = new ThreadSafeObjectProvider(); + /* TODO ERROR: Skipped EndIfDirectiveTrivia */ + /* TODO ERROR: Skipped IfDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [System.Runtime.InteropServices.ComVisible(false)] + internal sealed class ThreadSafeObjectProvider where T : new() + { + internal T GetInstance + { + /* TODO ERROR: Skipped IfDirectiveTrivia */ + [DebuggerHidden()] + get + { + var Value = m_Context.Value; + if (Value == null) + { + Value = new T(); + m_Context.Value = Value; + } + + return Value; + } + /* TODO ERROR: Skipped ElseDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + } + + [DebuggerHidden()] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public ThreadSafeObjectProvider() : base() + { + } + + /* TODO ERROR: Skipped IfDirectiveTrivia */ + private readonly Microsoft.VisualBasic.MyServices.Internal.ContextValue m_Context = new Microsoft.VisualBasic.MyServices.Internal.ContextValue(); + /* TODO ERROR: Skipped ElseDirectiveTrivia *//* TODO ERROR: Skipped DisabledTextTrivia *//* TODO ERROR: Skipped EndIfDirectiveTrivia */ + } + } +} +/* TODO ERROR: Skipped EndIfDirectiveTrivia */ diff --git a/Pilz.IO/My Project/MyNamespace.Static.2.Designer.cs b/Pilz.IO/My Project/MyNamespace.Static.2.Designer.cs new file mode 100644 index 0000000..dc1cdcf --- /dev/null +++ b/Pilz.IO/My Project/MyNamespace.Static.2.Designer.cs @@ -0,0 +1,253 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +// See Compiler::LoadXmlSolutionExtension +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.Xml.Linq; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; + +namespace Pilz.IO.My +{ + [Embedded()] + [DebuggerNonUserCode()] + [System.Runtime.CompilerServices.CompilerGenerated()] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal sealed class InternalXmlHelper + { + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + private InternalXmlHelper() + { + } + + public static string get_Value(IEnumerable source) + { + foreach (XElement item in source) + return item.Value; + return null; + } + + public static void set_Value(IEnumerable source, string value) + { + foreach (XElement item in source) + { + item.Value = value; + break; + } + } + + public static string get_AttributeValue(IEnumerable source, XName name) + { + foreach (XElement item in source) + return Conversions.ToString(item.Attribute(name)); + return null; + } + + public static void set_AttributeValue(IEnumerable source, XName name, string value) + { + foreach (XElement item in source) + { + item.SetAttributeValue(name, value); + break; + } + } + + public static string get_AttributeValue(XElement source, XName name) + { + return Conversions.ToString(source.Attribute(name)); + } + + public static void set_AttributeValue(XElement source, XName name, string value) + { + source.SetAttributeValue(name, value); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public static XAttribute CreateAttribute(XName name, object value) + { + if (value is null) + { + return null; + } + + return new XAttribute(name, value); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public static XAttribute CreateNamespaceAttribute(XName name, XNamespace ns) + { + var a = new XAttribute(name, ns.NamespaceName); + a.AddAnnotation(ns); + return a; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public static object RemoveNamespaceAttributes(string[] inScopePrefixes, XNamespace[] inScopeNs, List attributes, object obj) + { + if (obj is object) + { + XElement elem = obj as XElement; + if (elem is object) + { + return RemoveNamespaceAttributes(inScopePrefixes, inScopeNs, attributes, elem); + } + else + { + IEnumerable elems = obj as IEnumerable; + if (elems is object) + { + return RemoveNamespaceAttributes(inScopePrefixes, inScopeNs, attributes, elems); + } + } + } + + return obj; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public static IEnumerable RemoveNamespaceAttributes(string[] inScopePrefixes, XNamespace[] inScopeNs, List attributes, IEnumerable obj) + { + if (obj is object) + { + IEnumerable elems = obj as IEnumerable; + if (elems is object) + { + return elems.Select(new RemoveNamespaceAttributesClosure(inScopePrefixes, inScopeNs, attributes).ProcessXElement); + } + else + { + return obj.Cast().Select(new RemoveNamespaceAttributesClosure(inScopePrefixes, inScopeNs, attributes).ProcessObject); + } + } + + return obj; + } + + [DebuggerNonUserCode()] + [System.Runtime.CompilerServices.CompilerGenerated()] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + private sealed class RemoveNamespaceAttributesClosure + { + private readonly string[] m_inScopePrefixes; + private readonly XNamespace[] m_inScopeNs; + private readonly List m_attributes; + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal RemoveNamespaceAttributesClosure(string[] inScopePrefixes, XNamespace[] inScopeNs, List attributes) + { + m_inScopePrefixes = inScopePrefixes; + m_inScopeNs = inScopeNs; + m_attributes = attributes; + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal XElement ProcessXElement(XElement elem) + { + return RemoveNamespaceAttributes(m_inScopePrefixes, m_inScopeNs, m_attributes, elem); + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + internal object ProcessObject(object obj) + { + XElement elem = obj as XElement; + if (elem is object) + { + return RemoveNamespaceAttributes(m_inScopePrefixes, m_inScopeNs, m_attributes, elem); + } + else + { + return obj; + } + } + } + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public static XElement RemoveNamespaceAttributes(string[] inScopePrefixes, XNamespace[] inScopeNs, List attributes, XElement e) + { + if (e is object) + { + var a = e.FirstAttribute; + while (a is object) + { + var nextA = a.NextAttribute; + if (a.IsNamespaceDeclaration) + { + var ns = a.Annotation(); + string prefix = a.Name.LocalName; + if (ns is object) + { + if (inScopePrefixes is object && inScopeNs is object) + { + int lastIndex = inScopePrefixes.Length - 1; + for (int i = 0, loopTo = lastIndex; i <= loopTo; i++) + { + string currentInScopePrefix = inScopePrefixes[i]; + var currentInScopeNs = inScopeNs[i]; + if (prefix.Equals(currentInScopePrefix)) + { + if (ns == currentInScopeNs) + { + // prefix and namespace match. Remove the unneeded ns attribute + a.Remove(); + } + + // prefix is in scope but refers to something else. Leave the ns attribute. + a = null; + break; + } + } + } + + if (a is object) + { + // Prefix is not in scope + // Now check whether it's going to be in scope because it is in the attributes list + + if (attributes is object) + { + int lastIndex = attributes.Count - 1; + for (int i = 0, loopTo1 = lastIndex; i <= loopTo1; i++) + { + var currentA = attributes[i]; + string currentInScopePrefix = currentA.Name.LocalName; + var currentInScopeNs = currentA.Annotation(); + if (currentInScopeNs is object) + { + if (prefix.Equals(currentInScopePrefix)) + { + if (ns == currentInScopeNs) + { + // prefix and namespace match. Remove the unneeded ns attribute + a.Remove(); + } + + // prefix is in scope but refers to something else. Leave the ns attribute. + a = null; + break; + } + } + } + } + + if (a is object) + { + // Prefix is definitely not in scope + a.Remove(); + // namespace is not defined either. Add this attributes list + attributes.Add(a); + } + } + } + } + + a = nextA; + } + } + + return e; + } + } +} \ No newline at end of file diff --git a/Pilz.IO/My Project/MyNamespace.Static.3.Designer.cs b/Pilz.IO/My Project/MyNamespace.Static.3.Designer.cs new file mode 100644 index 0000000..b2b5044 --- /dev/null +++ b/Pilz.IO/My Project/MyNamespace.Static.3.Designer.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.VisualBasic +{ + [Embedded()] + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Module | AttributeTargets.Assembly, Inherited = false)] + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [System.Runtime.CompilerServices.CompilerGenerated()] + internal sealed class Embedded : Attribute + { + } +} \ No newline at end of file diff --git a/Pilz.IO/My Project/Resources.Designer.vb b/Pilz.IO/My Project/Resources.Designer.vb deleted file mode 100644 index 1d554f0..0000000 --- a/Pilz.IO/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' Dieser Code wurde von einem Tool generiert. -' Laufzeitversion:4.0.30319.42000 -' -' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -' der Code erneut generiert wird. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. - ''' - ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Pilz.IO.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/Pilz.IO/My Project/Settings.Designer.vb b/Pilz.IO/My Project/Settings.Designer.vb deleted file mode 100644 index 784f9bc..0000000 --- a/Pilz.IO/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' Dieser Code wurde von einem Tool generiert. -' Laufzeitversion:4.0.30319.42000 -' -' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -' der Code erneut generiert wird. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "Automatische My.Settings-Speicherfunktion" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Pilz.IO.My.MySettings - Get - Return Global.Pilz.IO.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Pilz.IO/Pilz.IO.vbproj b/Pilz.IO/Pilz.IO.csproj similarity index 72% rename from Pilz.IO/Pilz.IO.vbproj rename to Pilz.IO/Pilz.IO.csproj index 5534f4b..176873d 100644 --- a/Pilz.IO/Pilz.IO.vbproj +++ b/Pilz.IO/Pilz.IO.csproj @@ -4,7 +4,7 @@ Debug AnyCPU - {35591965-8339-41A2-8CD3-962ED54670AC} + {877D980E-4F61-0E53-0E8B-5C50B7D1440C} Library Pilz.IO Pilz.IO @@ -13,6 +13,8 @@ v4.7.2 true + $(DefaultItemExcludes);$(ProjectDir)**\*.vb + latest true @@ -21,7 +23,7 @@ true bin\Debug\ Pilz.IO.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,CS1591 pdbonly @@ -30,7 +32,7 @@ true bin\Release\ Pilz.IO.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,CS1591 On @@ -67,6 +69,10 @@ MinimumRecommendedRules.ruleset + + + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + @@ -87,43 +93,48 @@ - - - - - + + + + + + + + + True Application.myapp - + True True Resources.resx - + True Settings.settings True - + - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources + + ResXFileCodeGenerator + Resources.Designer.cs + Pilz.IO.My.Resources Designer MyApplicationCodeGenerator - Application.Designer.vb + Application.Designer.cs - + + SettingsSingleFileGenerator - My - Settings.Designer.vb + Pilz.IO.My + Settings.Designer.cs @@ -132,5 +143,5 @@ Pilz.Threading - + \ No newline at end of file diff --git a/Pilz.IO/Properties/AssemblyInfo.cs b/Pilz.IO/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..68f83ae --- /dev/null +++ b/Pilz.IO/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using global::System; +using global::System.Reflection; +using global::System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. + +// Werte der Assemblyattribute überprüfen + +[assembly: AssemblyTitle("NamedPipeManaging")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("Dr. Schneider Kunststoffwerke GmbH")] +[assembly: AssemblyProduct("NamedPipeManaging")] +[assembly: AssemblyCopyright("Copyright © Pascal Schedel 2017 - 2018")] +[assembly: AssemblyTrademark("")] +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird. +[assembly: Guid("42b8af67-22bf-4d8f-8a95-84fcaecffec6")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// übernehmen, indem Sie "*" eingeben: +// + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + diff --git a/Pilz.IO/Properties/Resources.Designer.cs b/Pilz.IO/Properties/Resources.Designer.cs new file mode 100644 index 0000000..803dfe0 --- /dev/null +++ b/Pilz.IO/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace Pilz.IO.My.Resources { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Pilz.IO.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Pilz.IO/Properties/Resources.resx b/Pilz.IO/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Pilz.IO/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Pilz.IO/Properties/Settings.Designer.cs b/Pilz.IO/Properties/Settings.Designer.cs new file mode 100644 index 0000000..98afffe --- /dev/null +++ b/Pilz.IO/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace Pilz.IO.My { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Pilz.IO/My Project/Settings.settings b/Pilz.IO/Properties/Settings.settings similarity index 100% rename from Pilz.IO/My Project/Settings.settings rename to Pilz.IO/Properties/Settings.settings diff --git a/Pilz.IO/packages.config b/Pilz.IO/packages.config new file mode 100644 index 0000000..a9de8b5 --- /dev/null +++ b/Pilz.IO/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Pilz.sln b/Pilz.sln index d0c9d60..0f52e43 100644 --- a/Pilz.sln +++ b/Pilz.sln @@ -13,7 +13,7 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Collections", "Pilz.Co EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}" EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.IO", "Pilz.IO\Pilz.IO.vbproj", "{35591965-8339-41A2-8CD3-962ED54670AC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.IO", "Pilz.IO\Pilz.IO.csproj", "{877D980E-4F61-0E53-0E8B-5C50B7D1440C}" EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Cryptography", "Pilz.Cryptography\Pilz.Cryptography.vbproj", "{DF980F5D-820C-4CD3-A865-C40791BF7CE4}" EndProject @@ -79,14 +79,14 @@ Global {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.Build.0 = Release|Any CPU {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.ActiveCfg = Release|x86 {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.Build.0 = Release|x86 - {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|x86.ActiveCfg = Debug|x86 - {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|x86.Build.0 = Debug|x86 - {35591965-8339-41A2-8CD3-962ED54670AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35591965-8339-41A2-8CD3-962ED54670AC}.Release|Any CPU.Build.0 = Release|Any CPU - {35591965-8339-41A2-8CD3-962ED54670AC}.Release|x86.ActiveCfg = Release|x86 - {35591965-8339-41A2-8CD3-962ED54670AC}.Release|x86.Build.0 = Release|x86 + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.ActiveCfg = Debug|x86 + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.Build.0 = Debug|x86 + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.Build.0 = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.ActiveCfg = Release|x86 + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.Build.0 = Release|x86 {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|x86.ActiveCfg = Debug|Any CPU diff --git a/Pilz.sln.bak b/Pilz.sln.bak new file mode 100644 index 0000000..d0c9d60 --- /dev/null +++ b/Pilz.sln.bak @@ -0,0 +1,161 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.329 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz", "Pilz\Pilz.vbproj", "{277D2B83-7613-4C49-9CAB-E080195A6E0C}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Drawing", "Pilz.Drawing\Pilz.Drawing.vbproj", "{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.UI", "Pilz.UI\Pilz.UI.vbproj", "{827C60BF-4D92-4D39-92F0-4285923266A1}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.vbproj", "{E4B2D294-8479-4014-942D-0B460E453DEA}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.IO", "Pilz.IO\Pilz.IO.vbproj", "{35591965-8339-41A2-8CD3-962ED54670AC}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Cryptography", "Pilz.Cryptography\Pilz.Cryptography.vbproj", "{DF980F5D-820C-4CD3-A865-C40791BF7CE4}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Win32", "Pilz.Win32\Pilz.Win32.vbproj", "{0BE0428D-AC97-4812-ADFC-6D7D00AEE497}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Configuration", "Pilz.Configuration\Pilz.Configuration.vbproj", "{A56C6153-C61F-4B10-BE06-35EB0448CFDC}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Reflection.PluginSystem", "Pilz.Reflection.PluginSystem\Pilz.Reflection.PluginSystem.vbproj", "{F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Drawing.Drawing3D.OpenGLFactory", "Pilz.Drawing.Drawing3D.OpenGLRenderer\Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj", "{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Simple3DFileParser", "Pilz.Simple3DFileParser\Pilz.Simple3DFileParser.vbproj", "{AC955819-7910-450C-940C-7C1989483D4B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.LicenseHelper", "Pilz.LicenseHelper\Pilz.LicenseHelper.csproj", "{67593FF7-C1D1-4529-98C4-61CBD0615F08}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Networking", "Pilz.Networking\Pilz.Networking.vbproj", "{4584B121-09C6-40AC-849B-7E410125EF66}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Debug|x86.ActiveCfg = Debug|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Debug|x86.Build.0 = Debug|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Release|Any CPU.Build.0 = Release|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Release|x86.ActiveCfg = Release|Any CPU + {277D2B83-7613-4C49-9CAB-E080195A6E0C}.Release|x86.Build.0 = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.ActiveCfg = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.Build.0 = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.Build.0 = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.ActiveCfg = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.Build.0 = Release|Any CPU + {827C60BF-4D92-4D39-92F0-4285923266A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {827C60BF-4D92-4D39-92F0-4285923266A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {827C60BF-4D92-4D39-92F0-4285923266A1}.Debug|x86.ActiveCfg = Debug|x86 + {827C60BF-4D92-4D39-92F0-4285923266A1}.Debug|x86.Build.0 = Debug|x86 + {827C60BF-4D92-4D39-92F0-4285923266A1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {827C60BF-4D92-4D39-92F0-4285923266A1}.Release|Any CPU.Build.0 = Release|Any CPU + {827C60BF-4D92-4D39-92F0-4285923266A1}.Release|x86.ActiveCfg = Release|x86 + {827C60BF-4D92-4D39-92F0-4285923266A1}.Release|x86.Build.0 = Release|x86 + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.ActiveCfg = Debug|x86 + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.Build.0 = Debug|x86 + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.Build.0 = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.ActiveCfg = Release|x86 + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.Build.0 = Release|x86 + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.ActiveCfg = Debug|x86 + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.Build.0 = Debug|x86 + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.Build.0 = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.ActiveCfg = Release|x86 + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.Build.0 = Release|x86 + {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|x86.ActiveCfg = Debug|x86 + {35591965-8339-41A2-8CD3-962ED54670AC}.Debug|x86.Build.0 = Debug|x86 + {35591965-8339-41A2-8CD3-962ED54670AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {35591965-8339-41A2-8CD3-962ED54670AC}.Release|Any CPU.Build.0 = Release|Any CPU + {35591965-8339-41A2-8CD3-962ED54670AC}.Release|x86.ActiveCfg = Release|x86 + {35591965-8339-41A2-8CD3-962ED54670AC}.Release|x86.Build.0 = Release|x86 + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Debug|x86.Build.0 = Debug|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Release|Any CPU.Build.0 = Release|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Release|x86.ActiveCfg = Release|Any CPU + {DF980F5D-820C-4CD3-A865-C40791BF7CE4}.Release|x86.Build.0 = Release|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Debug|x86.ActiveCfg = Debug|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Debug|x86.Build.0 = Debug|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Release|Any CPU.Build.0 = Release|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Release|x86.ActiveCfg = Release|Any CPU + {0BE0428D-AC97-4812-ADFC-6D7D00AEE497}.Release|x86.Build.0 = Release|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Debug|x86.ActiveCfg = Debug|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Debug|x86.Build.0 = Debug|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Release|Any CPU.Build.0 = Release|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Release|x86.ActiveCfg = Release|Any CPU + {A56C6153-C61F-4B10-BE06-35EB0448CFDC}.Release|x86.Build.0 = Release|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Debug|x86.ActiveCfg = Debug|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Debug|x86.Build.0 = Debug|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Release|Any CPU.Build.0 = Release|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Release|x86.ActiveCfg = Release|Any CPU + {F7975470-4CA3-4FAB-BB6A-A3AF3978ABB7}.Release|x86.Build.0 = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.ActiveCfg = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.Build.0 = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.Build.0 = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.ActiveCfg = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.Build.0 = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.Build.0 = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.Build.0 = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.ActiveCfg = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.Build.0 = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.ActiveCfg = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.Build.0 = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.Build.0 = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.ActiveCfg = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.Build.0 = Release|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|x86.ActiveCfg = Debug|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|x86.Build.0 = Debug|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Release|Any CPU.Build.0 = Release|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Release|x86.ActiveCfg = Release|Any CPU + {4584B121-09C6-40AC-849B-7E410125EF66}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {728F13B2-34E5-46C6-BB39-3203EE238C2A} + EndGlobalSection +EndGlobal