From cc89a1643e27abce9912dd4d6e5f028889a8911e Mon Sep 17 00:00:00 2001 From: wienkop <uwe.wienkop@th-nuernberg.de> Date: Mon, 10 May 2021 13:06:06 +0200 Subject: [PATCH] 2021-05-10 Exceptions + Intro Generics --- 07-2 Intro Exceptions/Program.cs | 6 +- 08-1 Exceptions/08-1 Exceptions.csproj | 9 +++ 08-1 Exceptions/Program.cs | 12 +++ .../08-2 Generics Intro.csproj | 9 +++ 08-2 Generics Intro/Program.cs | 56 +++++++++++++ 08-UbgExceptions/08-UbgExceptions.csproj | 9 +++ 08-UbgExceptions/Program.cs | 78 +++++++++++++++++++ 08-x HTMLEngine/08x HTML.csproj | 62 +++++++++++++++ 08-x HTMLEngine/App.config | 6 ++ 08-x HTMLEngine/HTMLElements.cs | 4 + 08-x HTMLEngine/HTMLEngine.cs | 29 +++++++ 08-x HTMLEngine/Program.cs | 76 ++++++++++++++++++ 08-x HTMLEngine/Properties/AssemblyInfo.cs | 36 +++++++++ HTMLEngine.sln | 22 ++++++ Prog2WienkopSS2021.sln | 28 ++++++- 15 files changed, 438 insertions(+), 4 deletions(-) create mode 100644 08-1 Exceptions/08-1 Exceptions.csproj create mode 100644 08-1 Exceptions/Program.cs create mode 100644 08-2 Generics Intro/08-2 Generics Intro.csproj create mode 100644 08-2 Generics Intro/Program.cs create mode 100644 08-UbgExceptions/08-UbgExceptions.csproj create mode 100644 08-UbgExceptions/Program.cs create mode 100644 08-x HTMLEngine/08x HTML.csproj create mode 100644 08-x HTMLEngine/App.config create mode 100644 08-x HTMLEngine/HTMLElements.cs create mode 100644 08-x HTMLEngine/HTMLEngine.cs create mode 100644 08-x HTMLEngine/Program.cs create mode 100644 08-x HTMLEngine/Properties/AssemblyInfo.cs create mode 100644 HTMLEngine.sln diff --git a/07-2 Intro Exceptions/Program.cs b/07-2 Intro Exceptions/Program.cs index 9e08571..0f2fc74 100644 --- a/07-2 Intro Exceptions/Program.cs +++ b/07-2 Intro Exceptions/Program.cs @@ -4,7 +4,7 @@ namespace _07_2_Intro_Exceptions { class MeinFehler : Exception { - public int FehlerCode { get; set; } + public int FehlerCode { get; private set; } public MeinFehler(string message, int fehlercode) : base(message) { FehlerCode = fehlercode; @@ -52,7 +52,9 @@ namespace _07_2_Intro_Exceptions catch (MeinFehler mf) // catch fängt FehlerTYPEN { Console.WriteLine($"{mf.Message} | {mf.FehlerCode}"); - } + throw new ArgumentException(); + throw; + } catch (Exception) // Zuerst die spezifischen Fehler fangen, dann die allgemeineren!!! { Console.WriteLine("Es ist ein allgemeiner Fehler aufgetreten"); diff --git a/08-1 Exceptions/08-1 Exceptions.csproj b/08-1 Exceptions/08-1 Exceptions.csproj new file mode 100644 index 0000000..2033a6b --- /dev/null +++ b/08-1 Exceptions/08-1 Exceptions.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_08_1_Exceptions</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/08-1 Exceptions/Program.cs b/08-1 Exceptions/Program.cs new file mode 100644 index 0000000..fb372de --- /dev/null +++ b/08-1 Exceptions/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace _08_1_Exceptions +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/08-2 Generics Intro/08-2 Generics Intro.csproj b/08-2 Generics Intro/08-2 Generics Intro.csproj new file mode 100644 index 0000000..11067c7 --- /dev/null +++ b/08-2 Generics Intro/08-2 Generics Intro.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_08_2_Generics_Intro</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/08-2 Generics Intro/Program.cs b/08-2 Generics Intro/Program.cs new file mode 100644 index 0000000..6e5123e --- /dev/null +++ b/08-2 Generics Intro/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Diagnostics.CodeAnalysis; + +namespace _08_2_Generics_Intro +{ + class Person : IComparable<Person> + { + string name, vorname; + public Person(string Name, string Vorname) { name = Name;vorname = Vorname; } + + public int CompareTo(Person other) + { + int comp = name.CompareTo(other.name); + return (comp != 0) ? comp : vorname.CompareTo(other.vorname); + //string vollname1 = name + vorname; // "MeierAnton" + //string vollname2 = other.name + other.vorname; // "MeierBerta" + //return vollname1.CompareTo(vollname2); // "MeierAnton".CompareTo("MeierBerta") + } + public override string ToString() => $"{vorname} {name}"; + } + class Program + { + //static int Min(int a, int b) + //{ + // return (a.CompareTo(b) < 0) ? a : b; + //} + //static double Min(double a, double b) + //{ + // return (a < b) ? a : b; + //} + //static string Min(string a, string b) + //{ + // return (a.CompareTo(b) < 0) ? a : b; + //} + static T Min<T>(T a, T b) where T:IComparable<T> + { + return (a.CompareTo(b)<0) ? a : b; + } + // Dieser Aufruf ist nur dann gültig, wenn der Typ von a eine Methode CompareTo() enthält + // => Es muss sichergestellt sein, dass Typ T eine Methode CompareTo() besitzt + + // Constraint: Alle Typen sind erlaubt, welche die geforderten Eigenschaften (=Methoden) besitzen + // Hier: IComparable (=CompareTo) + + + + static void Main(string[] args) + { + Console.WriteLine($"Minimum von 4 und 7: {Min(4, 7)}"); + Console.WriteLine($"Minimum von 7.5 und 7.3: {Min(7.5, 7.3)}"); + Console.WriteLine($"Minimum von Berta und Anton: {Min("Berta", "Anton")}"); + Console.WriteLine($"Minimum von zwei Person-Objekten: {Min(new Person("Meier","Anton"), new Person ("Meier","Berta"))}"); + + } + } +} diff --git a/08-UbgExceptions/08-UbgExceptions.csproj b/08-UbgExceptions/08-UbgExceptions.csproj new file mode 100644 index 0000000..8c0d4c8 --- /dev/null +++ b/08-UbgExceptions/08-UbgExceptions.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_08_UbgExceptions</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/08-UbgExceptions/Program.cs b/08-UbgExceptions/Program.cs new file mode 100644 index 0000000..7c83815 --- /dev/null +++ b/08-UbgExceptions/Program.cs @@ -0,0 +1,78 @@ +using System; + +namespace _08_UbgExceptions +{ + // Erstellen Sie eine Dummy-Methode Funktion1, die einen try-catch Block enthält und + // eine zweite Dummy-Methode Funktion2, die wiederum einen try-catch Block besitzt und + // eine Methode Funktion3, die bei ihrem Aufruf einen throw mit einer selbst + // erstellten Fehlerklasse zur Folge hat. Main ruft Funktion1, Funktion1 ruft Funktion2 + // und Funktion2 ruft Funktion3. Setzen Sie hinter die catches jeweils ein finally + // Schreiben Sie entsprechende catch-Methoden, werfen Sie den Fehler weiter + // und stellen Sie sicher, dass das Programm unter keinen Umständen mit einer Exception beendet wird! + + class Program + { + static void Main(string[] args) + { + try + { + Funktion1(); + } + catch (Exception) { Console.WriteLine("Alles ist schief gegangen"); } + } + static void Funktion1() + { + try + { + Console.WriteLine("Funktion 1 vor Aufruf von F2"); + Funktion2(); + Console.WriteLine("Funktion 1 nach Aufruf von F2"); + } + catch (MeinFehler) + { + Console.WriteLine("Funktion 1 - catch MeinFehler"); + } + finally + { + Console.WriteLine("Funktion 1 - finally"); + } + Console.WriteLine("Funktion 1 - Ende"); + } + + static void Funktion2() + { + try + { + Console.WriteLine("Funktion 2 vor Aufruf von F3"); + Funktion3(); + Console.WriteLine("Funktion 2 nach Aufruf von F3"); + } + catch (MeinFehler) + { + Console.WriteLine("Funktion 2 - catch MeinFehler"); + throw; + } + finally + { + Console.WriteLine("Funktion 2 - finally"); + } + Console.WriteLine("Funktion 2 - Ende"); + } + static void Funktion3() + { + Console.WriteLine("Funktion 3 vor Aufruf von throw"); + throw new MeinFehler("Mein Fehler aus Funktion 3", 12); + //Console.WriteLine("Funktion 3 nach Aufruf von throw"); + } + + + } + class MeinFehler : Exception + { + public int FehlerCode { get; set; } + public MeinFehler(string message, int fehlercode) : base(message) + { + FehlerCode = fehlercode; + } + } +} diff --git a/08-x HTMLEngine/08x HTML.csproj b/08-x HTMLEngine/08x HTML.csproj new file mode 100644 index 0000000..7f0ba6b --- /dev/null +++ b/08-x HTMLEngine/08x HTML.csproj @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>HTMLEngine</RootNamespace> + <AssemblyName>HTMLEngine</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="HTMLElements.cs" /> + <Compile Include="HTMLEngine.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/08-x HTMLEngine/App.config b/08-x HTMLEngine/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/08-x HTMLEngine/App.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/08-x HTMLEngine/HTMLElements.cs b/08-x HTMLEngine/HTMLElements.cs new file mode 100644 index 0000000..e554e7b --- /dev/null +++ b/08-x HTMLEngine/HTMLElements.cs @@ -0,0 +1,4 @@ +namespace HTML +{ + // TODO: Define classes for HTML tag elements (using interfaces "ITagged" and eventually "INested") here... +} \ No newline at end of file diff --git a/08-x HTMLEngine/HTMLEngine.cs b/08-x HTMLEngine/HTMLEngine.cs new file mode 100644 index 0000000..44be634 --- /dev/null +++ b/08-x HTMLEngine/HTMLEngine.cs @@ -0,0 +1,29 @@ +namespace HTML +{ + // HTML engine for generation of a HTML string from an array of HTML tag elements: + + public interface ITagged { string TagId { get; } } // Used to define HTML tag element + + public interface INested : ITagged { object[] Elements { get; } } // Used to "mark" a HTML tag element as nested + + class Body : ITagged, INested + { + public string TagId => "body"; + public Body(params object[] Elements) { this.Elements = Elements; } + public object[] Elements { get; private set; } + } + + public static class Engine + { + public static string Generate(params object[] elements) + { + string s = ""; + foreach (var item in elements) + { + + } + return s; + // TODO: Your code for (recursive) generation of a HTML string from array "elements" here... + } + } +} \ No newline at end of file diff --git a/08-x HTMLEngine/Program.cs b/08-x HTMLEngine/Program.cs new file mode 100644 index 0000000..3d1e1c8 --- /dev/null +++ b/08-x HTMLEngine/Program.cs @@ -0,0 +1,76 @@ +using HTML; + +using static System.Console; + +class Program +{ + // Test program for HTML generation: + + //static void Main() + //{ + // // Generate HTML document and store result in string: + + // string html = Engine.Generate + // ( + // new DocumentType(), + + // new Html + // ( + // new Head + // ( + // new Title("Generated HTML5 Example") + // ), + + // new Body + // ( + // new Heading1("Welcome to the Technical University oAS Nuremberg"), + + // new Paragraph + // ( + // "We have a distinct profile ", new Underline("and"), " strive to maintain ", new Underline("our"), " leading position among comparable universities." + + // ), + + // new Heading2("Study for your future"), + + // new Paragraph + // ( + // 12, " departments provide more than ", 40, " degree programs in ", new Bold("engineering, business, design and social sciences."), + // new LineBreak(), + // "If you have questions, please contact the ", new Italic("Student Counseling Service"), " or the ", new Italic("Student Office.") + // ) + // ) + // ) + // ); + + // // Write resulting HTML string: + + // WriteLine("GENERATED HTML DOCUMENT:"); + + // WriteLine(html); + + // WriteLine("\nPlease press a key to continue..."); + + // ReadKey(true); + + // /* + // // Write reformatted HTML string: + + // WriteLine("\nREFORMATTED HTML DOCUMENT:"); + + // WriteLine("\n<" + new DocumentType().TagId + ">\n" + System.Xml.Linq.XElement.Parse(html.Replace("\n", ""))); + + // WriteLine("\nPlease press a key to continue..."); + + // ReadKey(true); + // */ + + // // Show (original) HTML string in default browser: + + // WriteLine("\nSTARTING BROWSER WITH GENERATED DOCUMENT..."); + + // System.IO.File.WriteAllText("Example.html", html); + + // System.Diagnostics.Process.Start("Example.html"); + //} +} \ No newline at end of file diff --git a/08-x HTMLEngine/Properties/AssemblyInfo.cs b/08-x HTMLEngine/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2edcd50 --- /dev/null +++ b/08-x HTMLEngine/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("HTMLEngine")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HTMLEngine")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("bced82d0-f95f-4d82-9019-2c63d6b3cc8a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HTMLEngine.sln b/HTMLEngine.sln new file mode 100644 index 0000000..98d5459 --- /dev/null +++ b/HTMLEngine.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HTMLEngine", "HTMLEngine\HTMLEngine.csproj", "{BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln index 0026ad9..0bd2391 100644 --- a/Prog2WienkopSS2021.sln +++ b/Prog2WienkopSS2021.sln @@ -49,9 +49,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "07-UbgWarenwirtschaft-Mo", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "07-1 Intro Interfaces", "07-1 Intro Interfaces\07-1 Intro Interfaces.csproj", "{D60AFAC5-6DB1-4F7A-AC86-B1C0D304F83F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "07-Ubg Warenwirtschaft-Di", "07-Ubg Warenwirtschaft-Di\07-Ubg Warenwirtschaft-Di.csproj", "{CB0D1095-162B-4FD9-9B6D-5E06BE2EBC44}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "07-Ubg Warenwirtschaft-Di", "07-Ubg Warenwirtschaft-Di\07-Ubg Warenwirtschaft-Di.csproj", "{CB0D1095-162B-4FD9-9B6D-5E06BE2EBC44}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "07-2 Intro Exceptions", "07-2 Intro Exceptions\07-2 Intro Exceptions.csproj", "{7E8671A1-00B5-4E86-AB29-67726F407BA1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "07-2 Intro Exceptions", "07-2 Intro Exceptions\07-2 Intro Exceptions.csproj", "{7E8671A1-00B5-4E86-AB29-67726F407BA1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08-UbgExceptions", "08-UbgExceptions\08-UbgExceptions.csproj", "{6E9854D3-DF28-467E-A744-EAE2936B981E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08-1 Exceptions", "08-1 Exceptions\08-1 Exceptions.csproj", "{F766FA48-BE15-429D-A4B3-B4CD13912C88}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08-2 Generics Intro", "08-2 Generics Intro\08-2 Generics Intro.csproj", "{D082F13C-091B-473D-B4FD-BBB5FC616850}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "08x HTML", "08-x HTMLEngine\08x HTML.csproj", "{BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -159,6 +167,22 @@ Global {7E8671A1-00B5-4E86-AB29-67726F407BA1}.Debug|Any CPU.Build.0 = Debug|Any CPU {7E8671A1-00B5-4E86-AB29-67726F407BA1}.Release|Any CPU.ActiveCfg = Release|Any CPU {7E8671A1-00B5-4E86-AB29-67726F407BA1}.Release|Any CPU.Build.0 = Release|Any CPU + {6E9854D3-DF28-467E-A744-EAE2936B981E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E9854D3-DF28-467E-A744-EAE2936B981E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E9854D3-DF28-467E-A744-EAE2936B981E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E9854D3-DF28-467E-A744-EAE2936B981E}.Release|Any CPU.Build.0 = Release|Any CPU + {F766FA48-BE15-429D-A4B3-B4CD13912C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F766FA48-BE15-429D-A4B3-B4CD13912C88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F766FA48-BE15-429D-A4B3-B4CD13912C88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F766FA48-BE15-429D-A4B3-B4CD13912C88}.Release|Any CPU.Build.0 = Release|Any CPU + {D082F13C-091B-473D-B4FD-BBB5FC616850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D082F13C-091B-473D-B4FD-BBB5FC616850}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D082F13C-091B-473D-B4FD-BBB5FC616850}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D082F13C-091B-473D-B4FD-BBB5FC616850}.Release|Any CPU.Build.0 = Release|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BCED82D0-F95F-4D82-9019-2C63D6B3CC8A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE -- GitLab