[chore:] too much to documentate xD but changes like better AddressCheck, Progress Window, Result Window, etc.

This commit is contained in:
Elias Fierke
2025-07-09 23:01:13 +02:00
parent 4bdf50a290
commit 982373002d
22 changed files with 371 additions and 171 deletions

View File

@@ -1,4 +1,7 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Threading;
namespace Logof_Client;
@@ -11,62 +14,163 @@ public class AddressCheck
NoCity,
NoStreet,
NoLastName,
NoFirstName
NoFirstName,
// empty,
FullAddressTooLong,
NoStreetNumber,
DoubledRefsid,
MayBeSameAddress
}
public static List<(int, List<ErrorTypes>)> Perform(KasAddressList addresses)
private readonly ProgressWindow _progress;
public AddressCheck(ProgressWindow progressWindow)
{
_progress = progressWindow;
}
public async Task<List<(int, List<ErrorTypes>)>> Perform(KasAddressList addresses)
{
var failed_refsids = new List<(int, List<ErrorTypes>)>();
var total = addresses.KasPersons.Count;
var current = 0;
await Task.Run(async () =>
{
foreach (var person in addresses.KasPersons)
{
var errors = new List<ErrorTypes>();
var hasFaults = false;
var address_component_count = 2; // cause anrede and name are first
// Prüfung
if (person.plz < 10000)
{
hasFaults = true;
errors.Add(ErrorTypes.PlzTooShort);
}
if (person.plz > 99999)
else if (person.plz > 99999)
{
hasFaults = true;
errors.Add(ErrorTypes.PlzTooLong);
}
if (person.ort == null || person.ort == "")
if (string.IsNullOrWhiteSpace(person.ort))
{
hasFaults = true;
errors.Add(ErrorTypes.NoCity);
}
else
{
address_component_count++;
}
if (person.name == null || person.name == "")
var street = person.strasse.ToCharArray();
var intcount = 0;
foreach (var c in street)
{
int maybe;
if (int.TryParse(c.ToString(), out maybe)) intcount++;
}
if (intcount == 0)
{
hasFaults = true;
errors.Add(ErrorTypes.NoStreetNumber);
}
if (string.IsNullOrWhiteSpace(person.name))
{
hasFaults = true;
errors.Add(ErrorTypes.NoLastName);
}
if (person.vorname == null || person.vorname == "")
if (string.IsNullOrWhiteSpace(person.vorname))
{
hasFaults = true;
errors.Add(ErrorTypes.NoFirstName);
}
if (person.strasse == null || person.strasse == "")
if (string.IsNullOrWhiteSpace(person.strasse))
{
hasFaults = true;
errors.Add(ErrorTypes.NoStreet);
}
;
// More errors...
if (hasFaults) failed_refsids.Add((person.refsid, errors));
else
{
address_component_count++;
}
if (!string.IsNullOrWhiteSpace(person.strasse2)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.land)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.name1)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.name2)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.name3)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.name4)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.name5)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.funktion)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.funktion2)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.funktionad)) address_component_count++;
if (!string.IsNullOrWhiteSpace(person.abteilung)) address_component_count++;
foreach (var person2 in addresses.KasPersons)
{
if (addresses.KasPersons.IndexOf(person) == addresses.KasPersons.IndexOf(person2)) continue;
if (person.refsid == person2.refsid)
{
hasFaults = true;
errors.Add(ErrorTypes.DoubledRefsid);
}
if (person.name == person2.name &&
person.strasse == person2.strasse &&
person.vorname == person2.vorname &&
person.ort == person2.ort &&
person.funktion == person2.funktion &&
person.funktion2 == person2.funktion2 &&
person.funktionad == person2.funktionad &&
person.abteilung == person2.abteilung &&
person.name1 == person2.name1 &&
person.name2 == person2.name2 &&
person.name3 == person2.name3 &&
person.name4 == person2.name4 &&
person.name5 == person2.name5)
{
hasFaults = true;
errors.Add(ErrorTypes.MayBeSameAddress);
}
}
if (address_component_count > 10)
{
hasFaults = true;
errors.Add(ErrorTypes.FullAddressTooLong);
}
if (hasFaults)
lock (failed_refsids)
{
failed_refsids.Add((person.refsid, errors));
}
// Fortschritt aktualisieren
Interlocked.Increment(ref current);
var percent = current / (double)total * 100;
await Dispatcher.UIThread.InvokeAsync(() =>
{
if (hasFaults)
_progress.AddToLog($"Person mit refsid {person.refsid} ist fehlerhaft");
_progress.ChangePercentage(percent);
});
}
});
return failed_refsids;
}
}

View File

@@ -6,5 +6,6 @@
<Application.Styles>
<FluentTheme />
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
</Application.Styles>
</Application>

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
namespace Logof_Client;
public class KasAddressList
@@ -9,36 +10,10 @@ public class KasAddressList
{
KasPersons = new List<KasPerson>();
}
}
public class KasPerson
{
public int refsid { get; set; }
public string anrede { get; set; }
public string titel { get; set; }
public string vorname { get; set; }
public string adel { get; set; }
public string name { get; set; }
public string namezus { get; set; }
public string anredzus { get; set; }
public string strasse { get; set; }
public string strasse2 { get; set; }
public int plz { get; set; }
public string ort { get; set; }
public string land { get; set; }
public string pplz { get; set; }
public string postfach { get; set; }
public string name1 { get; set; }
public string name2 { get; set; }
public string name3 { get; set; }
public string name4 { get; set; }
public string name5 { get; set; }
public string funktion { get; set; }
public string funktion2 { get; set; }
public string abteilung { get; set; }
public string funktionad { get; set; }
public KasPerson()
{
refsid = 0;
@@ -66,6 +41,7 @@ public class KasPerson
abteilung = "";
funktionad = "";
}
public KasPerson(int refsid,
string anrede,
string titel,
@@ -116,5 +92,43 @@ public class KasPerson
this.abteilung = abteilung;
this.funktionad = funktionad;
}
public int refsid { get; set; }
public string anrede { get; set; }
public string titel { get; set; }
public string vorname { get; set; }
public string adel { get; set; }
public string name { get; set; }
public string namezus { get; set; }
public string anredzus { get; set; }
public string strasse { get; set; }
public string strasse2 { get; set; }
public int plz { get; set; }
public string ort { get; set; }
public string land { get; set; }
public string pplz { get; set; }
public string postfach { get; set; }
public string name1 { get; set; }
public string name2 { get; set; }
public string name3 { get; set; }
public string name4 { get; set; }
public string name5 { get; set; }
public string funktion { get; set; }
public string funktion2 { get; set; }
public string abteilung { get; set; }
public string funktionad { get; set; }
}
public class KasPersonError
{
public KasPersonError((int, List<AddressCheck.ErrorTypes>) single_result)
{
refsid = single_result.Item1;
foreach (var err in single_result.Item2) errors += err + ", ";
errors = errors.Trim();
errors = errors.TrimEnd(',');
}
public int refsid { get; set; }
public string errors { get; set; }
}

View File

@@ -10,6 +10,7 @@
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.3.2" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.2" />
<PackageReference Include="Avalonia.Desktop" Version="11.3.2" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.2" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.2" />

View File

@@ -7,31 +7,53 @@ namespace Logof_Client;
public partial class MainWindow : Window
{
public static MainWindow _instance;
public Uri filePath;
public MainWindow()
{
InitializeComponent();
try
_instance = this;
// try
// {
// var temppath = "kaspersons.csv";
// var result = DataImport.ImportKasAddressList(new Uri(temppath));
// if (result.Item1)
// {
// var check_result = new AddressCheck().Perform(result.Item2);
// foreach (var item in check_result.Result)
// {
// Console.WriteLine();
// Console.Write(item.Item1 + " ");
// foreach (var error in item.Item2) Console.Write(error + ", ");
// }
// }
// }
// catch
// {
// }
}
private async void StartAddressCheck(Uri path)
{
var temppath = "kaspersons.csv";
var result = DataImport.ImportKasAddressList(new Uri(temppath));
if (result.Item1)
{
var check_result = AddressCheck.Perform(result.Item2);
foreach (var item in check_result)
{
Console.WriteLine();
Console.Write(item.Item1 + " ");
foreach (var error in item.Item2) Console.Write(error + ", ");
}
}
}
catch
{
}
var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier
var progressWindow = new ProgressWindow();
// Fenster anzeigen (nicht blockierend)
progressWindow.Show(_instance);
var processor = new AddressCheck(progressWindow);
var result = await processor.Perform(addresses.Item2);
// Nach Verarbeitung schließen
progressWindow.Close();
// Ergebnis anzeigen, z.B. als Dialog
new ResultWindow(result).Show();
//await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig");
}
private void MnuExit_OnClick(object? sender, RoutedEventArgs e)
{
throw new NotImplementedException();
@@ -82,16 +104,17 @@ public partial class MainWindow : Window
private void BtnCheck_OnClick(object? sender, RoutedEventArgs e)
{
if (filePath == null) MessageBox.Show(this, "Bitte zunächst eine Datei auswählen", "Datei fehlt");
var result = DataImport.ImportKasAddressList(filePath);
if (result.Item1)
{
var check_result = AddressCheck.Perform(result.Item2);
foreach (var item in check_result)
{
Console.WriteLine();
Console.Write(item.Item1 + " ");
foreach (var error in item.Item2) Console.Write(error + ", ");
}
}
StartAddressCheck(filePath);
// var result = DataImport.ImportKasAddressList(filePath);
// if (result.Item1)
// {
// var check_result = new AddressCheck().Perform(result.Item2);
// foreach (var item in check_result.Result)
// {
// Console.WriteLine();
// Console.Write(item.Item1 + " ");
// foreach (var error in item.Item2) Console.Write(error + ", ");
// }
// }
}
}

18
ProgressWindow.axaml Normal file
View File

@@ -0,0 +1,18 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" Width="800" MinWidth="800" MaxWidth="800" d:DesignHeight="150"
Height="150" MinHeight="150" MaxHeight="150"
x:Class="Logof_Client.ProgressWindow" Title="Verarbeitung läuft...">
<Grid>
<!-- <ScrollViewer x:Name="ScvLog"> -->
<!-- <TextBlock x:Name="TbLog" Margin="10,10,10,50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" -->
<!-- FontFamily="Consolas" /> -->
<!-- </ScrollViewer> -->
<TextBlock x:Name="TbLog" Margin="10,10,10,50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
FontFamily="Consolas" />
<ProgressBar x:Name="PbProgress" HorizontalAlignment="Stretch" Height="30" VerticalAlignment="Bottom"
Margin="10,0,10,10" />
</Grid>
</Window>

24
ProgressWindow.axaml.cs Normal file
View File

@@ -0,0 +1,24 @@
using Avalonia.Controls;
namespace Logof_Client;
public partial class ProgressWindow : Window
{
public ProgressWindow()
{
InitializeComponent();
PbProgress.Minimum = 0;
PbProgress.Maximum = 100;
}
public void ChangePercentage(double percentage)
{
PbProgress.Value = percentage;
}
public void AddToLog(string message)
{
TbLog.Text = message;
//ScvLog.ScrollToEnd();
}
}

View File

@@ -1,9 +0,0 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Logof_Client.ResultWindow"
Title="ResultWindow">
Welcome to Avalonia!
</Window>

View File

@@ -1,13 +0,0 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace Logof_Client;
public partial class ResultWindow : Window
{
public ResultWindow()
{
InitializeComponent();
}
}

View File

@@ -1 +1 @@
6fe5162be4283c1411101dd639fbc8a545963efea312fd784c904b45361005c0
982c4bab1be7433e0655bc9d9093ed492303bd16c33e9bf09c663ad2ef1afbaa

Binary file not shown.

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Logof Client")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0d121663397a12ffe7d914c4b6e0302d8f0670d0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4bdf50a290804aab4f6671c7ded546f168c8e674")]
[assembly: System.Reflection.AssemblyProductAttribute("Logof Client")]
[assembly: System.Reflection.AssemblyTitleAttribute("Logof Client")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
c05703a1f27fdffbabcbabba7a1bf53472ea728aab90b390cced0bdc9f8b02dc
f7afc36fe250c56352855cc054140e1d3e759a80e43f866429a6f585b3dd52ae

View File

@@ -30,5 +30,8 @@ build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
[/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/MessageBox.axaml]
build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
[/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/ProgressWindow.axaml]
build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
[/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/ResultWindow.axaml]
build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml

View File

@@ -20,6 +20,7 @@
"net9.0"
],
"sources": {
"/usr/lib64/dotnet/library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
@@ -48,6 +49,10 @@
"target": "Package",
"version": "[11.3.2, )"
},
"Avalonia.Controls.DataGrid": {
"target": "Package",
"version": "[11.3.2, )"
},
"Avalonia.Desktop": {
"target": "Package",
"version": "[11.3.2, )"
@@ -80,18 +85,12 @@
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[9.0.4, 9.0.4]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.105/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/9.0.106/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@@ -124,6 +124,22 @@
}
}
},
"Avalonia.Controls.DataGrid/11.3.2": {
"type": "package",
"dependencies": {
"Avalonia": "11.3.2"
},
"compile": {
"lib/net8.0/Avalonia.Controls.DataGrid.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Avalonia.Controls.DataGrid.dll": {
"related": ".xml"
}
}
},
"Avalonia.Desktop/11.3.2": {
"type": "package",
"dependencies": {
@@ -819,6 +835,25 @@
"lib/netstandard2.0/Avalonia.Controls.ColorPicker.xml"
]
},
"Avalonia.Controls.DataGrid/11.3.2": {
"sha512": "uAljhbq2csXx93TvG8LFSluIDiJByrsZ7OdFyGOC6mkoM+DIJsmMCJ4ce/zgS1aPFLP9wpa8ggLLSbgy7Vap6g==",
"type": "package",
"path": "avalonia.controls.datagrid/11.3.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"avalonia.controls.datagrid.11.3.2.nupkg.sha512",
"avalonia.controls.datagrid.nuspec",
"lib/net6.0/Avalonia.Controls.DataGrid.dll",
"lib/net6.0/Avalonia.Controls.DataGrid.xml",
"lib/net8.0/Avalonia.Controls.DataGrid.dll",
"lib/net8.0/Avalonia.Controls.DataGrid.xml",
"lib/netstandard2.0/Avalonia.Controls.DataGrid.dll",
"lib/netstandard2.0/Avalonia.Controls.DataGrid.xml",
"readme.md"
]
},
"Avalonia.Desktop/11.3.2": {
"sha512": "b2ZPZ60UN0Uib3ZxFrf+ixYiJTBFaXrpQAcXTSUKTDw0nAU29sbfjvdtpBkBd6+idWpNtI+GhOjf0Mw0v1ncQg==",
"type": "package",
@@ -1435,6 +1470,7 @@
"projectFileDependencyGroups": {
"net9.0": [
"Avalonia >= 11.3.2",
"Avalonia.Controls.DataGrid >= 11.3.2",
"Avalonia.Desktop >= 11.3.2",
"Avalonia.Diagnostics >= 11.3.2",
"Avalonia.Fonts.Inter >= 11.3.2",
@@ -1461,6 +1497,7 @@
"net9.0"
],
"sources": {
"/usr/lib64/dotnet/library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
@@ -1489,6 +1526,10 @@
"target": "Package",
"version": "[11.3.2, )"
},
"Avalonia.Controls.DataGrid": {
"target": "Package",
"version": "[11.3.2, )"
},
"Avalonia.Desktop": {
"target": "Package",
"version": "[11.3.2, )"
@@ -1521,18 +1562,12 @@
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[9.0.4, 9.0.4]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.105/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/9.0.106/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "D+4nG7Cnz1A=",
"dgSpecHash": "iFRYA+o6oII=",
"success": true,
"projectFilePath": "/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/Logof Client.csproj",
"expectedPackageFiles": [
@@ -8,6 +8,7 @@
"/home/fierke/.nuget/packages/avalonia.angle.windows.natives/2.1.25547.20250602/avalonia.angle.windows.natives.2.1.25547.20250602.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.buildservices/0.0.31/avalonia.buildservices.0.0.31.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.controls.colorpicker/11.3.2/avalonia.controls.colorpicker.11.3.2.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.controls.datagrid/11.3.2/avalonia.controls.datagrid.11.3.2.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.desktop/11.3.2/avalonia.desktop.11.3.2.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.diagnostics/11.3.2/avalonia.diagnostics.11.3.2.nupkg.sha512",
"/home/fierke/.nuget/packages/avalonia.fonts.inter/11.3.2/avalonia.fonts.inter.11.3.2.nupkg.sha512",
@@ -32,8 +33,7 @@
"/home/fierke/.nuget/packages/skiasharp.nativeassets.webassembly/2.88.9/skiasharp.nativeassets.webassembly.2.88.9.nupkg.sha512",
"/home/fierke/.nuget/packages/skiasharp.nativeassets.win32/2.88.9/skiasharp.nativeassets.win32.2.88.9.nupkg.sha512",
"/home/fierke/.nuget/packages/system.io.pipelines/8.0.0/system.io.pipelines.8.0.0.nupkg.sha512",
"/home/fierke/.nuget/packages/tmds.dbus.protocol/0.21.2/tmds.dbus.protocol.0.21.2.nupkg.sha512",
"/home/fierke/.nuget/packages/microsoft.aspnetcore.app.ref/9.0.4/microsoft.aspnetcore.app.ref.9.0.4.nupkg.sha512"
"/home/fierke/.nuget/packages/tmds.dbus.protocol/0.21.2/tmds.dbus.protocol.0.21.2.nupkg.sha512"
],
"logs": []
}

View File

@@ -1 +1 @@
"restore":{"projectUniqueName":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/Logof Client.csproj","projectName":"Logof Client","projectPath":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/Logof Client.csproj","outputPath":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Avalonia":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Desktop":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Diagnostics":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Fonts.Inter":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Themes.Fluent":{"target":"Package","version":"[11.3.2, )"},"Lucide.Avalonia":{"target":"Package","version":"[0.1.35, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"downloadDependencies":[{"name":"Microsoft.AspNetCore.App.Ref","version":"[9.0.4, 9.0.4]"}],"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/share/dotnet/sdk/9.0.105/PortableRuntimeIdentifierGraph.json"}}
"restore":{"projectUniqueName":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/Logof Client.csproj","projectName":"Logof Client","projectPath":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/Logof Client.csproj","outputPath":"/home/fierke/Nextcloud/Documents/source/repos/logofclient/Logof Client/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"/usr/lib64/dotnet/library-packs":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Avalonia":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Controls.DataGrid":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Desktop":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Diagnostics":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Fonts.Inter":{"target":"Package","version":"[11.3.2, )"},"Avalonia.Themes.Fluent":{"target":"Package","version":"[11.3.2, )"},"Lucide.Avalonia":{"target":"Package","version":"[0.1.35, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/lib64/dotnet/sdk/9.0.106/PortableRuntimeIdentifierGraph.json"}}

View File

@@ -1 +1 @@
17515302868997761
17520917705843408

View File

@@ -1 +1 @@
17515302868997761
17520918778041105