Fix: Rename Generic.CL folder to flat structure, update csproj and references
This commit is contained in:
Executable
+12
@@ -0,0 +1,12 @@
|
|||||||
|
namespace Generic.Constants;
|
||||||
|
|
||||||
|
public static class AppCon
|
||||||
|
{
|
||||||
|
public static class ConnectionStrings
|
||||||
|
{
|
||||||
|
public const string SQLServer = "server=(localdb)\\MSSQLLocalDB;database=Ecommerce;Integrated Security=true";
|
||||||
|
public const string MariaDB = "UserID=said;Password=aaa111!!!AAA;server=db;Port=3310;Database=ecommercedb;Protocol=TCP";
|
||||||
|
public const string Postgresql = "Host=localhost;Database=ecommerce;Username=said1996;Password=a44781680;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Executable
+64
@@ -0,0 +1,64 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Generic.Constants;
|
||||||
|
|
||||||
|
public static class AppEnum
|
||||||
|
{
|
||||||
|
public enum OrderStatus
|
||||||
|
{
|
||||||
|
FillingCart,
|
||||||
|
// Paid,
|
||||||
|
InQueue,
|
||||||
|
|
||||||
|
DeliveryInProgress,
|
||||||
|
Delivered,
|
||||||
|
|
||||||
|
UserNotFound,
|
||||||
|
|
||||||
|
Delayed,
|
||||||
|
// Reserved
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum QueryOrder
|
||||||
|
{
|
||||||
|
[Display(Name = "Popular")]
|
||||||
|
Name,
|
||||||
|
|
||||||
|
Recent,
|
||||||
|
|
||||||
|
Oldest,
|
||||||
|
|
||||||
|
[Display(Name = "Lowest Price")]
|
||||||
|
Lowest,
|
||||||
|
|
||||||
|
[Display(Name = "Highest Price")]
|
||||||
|
Highest
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Roles
|
||||||
|
{
|
||||||
|
SuperAdmin,
|
||||||
|
Admin,
|
||||||
|
Moderator,
|
||||||
|
Standard
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ShippingMethod
|
||||||
|
{
|
||||||
|
[Display(Name = "Standard shipping - $10.00")] NormalShipping,
|
||||||
|
[Display(Name = "Fast shipping - $50.00")] FastShipping,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SalesOrPurchases
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Purchase,
|
||||||
|
Sales,
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
public class ComplexSortModel
|
||||||
|
{
|
||||||
|
public IEnumerable<SortModel> Sorts { get; set; } = new List<SortModel>();
|
||||||
|
}
|
||||||
Executable
+25
@@ -0,0 +1,25 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Generic.Contracts.Generics
|
||||||
|
{
|
||||||
|
|
||||||
|
public class Pagination
|
||||||
|
{
|
||||||
|
public int? PageSize { get; set; }
|
||||||
|
public int? CurrentPage { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public int? ItemsCount { get; set; } = 0;
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public int? TotalPages
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (ItemsCount == null || ItemsCount == 0) return 0;
|
||||||
|
if (PageSize == null || PageSize == 0) return 1;
|
||||||
|
return (int)Math.Ceiling((decimal)ItemsCount / (decimal)PageSize.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
public enum SortDir
|
||||||
|
{
|
||||||
|
Ascending,
|
||||||
|
Descending,
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
public class SortModel
|
||||||
|
{
|
||||||
|
public string SortBy { get; set; }
|
||||||
|
|
||||||
|
public SortDir SortDirection { get; set; } = SortDir.Ascending;
|
||||||
|
}
|
||||||
|
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Generic.Exceptions;
|
||||||
|
public class NotFoundException : Exception
|
||||||
|
{
|
||||||
|
public NotFoundException(string message, Exception innerException) : base(message, innerException)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<AssemblyName>Generic.CL</AssemblyName>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="Generic.Tests/**" />
|
||||||
|
<EmbeddedResource Remove="Generic.Tests/**" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.2" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.9.2" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Using Include="Xunit" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Generic\Generic.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Generic.Services;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Generic.Tests.Services;
|
||||||
|
|
||||||
|
public class AdvancedFilterExtensionTests
|
||||||
|
{
|
||||||
|
public class TestEntity
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public double Price { get; set; }
|
||||||
|
public string SKU { get; set; } = string.Empty;
|
||||||
|
public List<TestTranslation> Translations { get; set; } = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestTranslation
|
||||||
|
{
|
||||||
|
public string Language { get; set; } = string.Empty;
|
||||||
|
public TestInfo Info { get; set; } = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestInfo
|
||||||
|
{
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestFilter
|
||||||
|
{
|
||||||
|
public double? Price { get; set; }
|
||||||
|
public string? SKU { get; set; }
|
||||||
|
public string? Language { get; set; }
|
||||||
|
public string? Name { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<TestEntity> GetTestData()
|
||||||
|
{
|
||||||
|
return new List<TestEntity>
|
||||||
|
{
|
||||||
|
new TestEntity
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid(),
|
||||||
|
Price = 100,
|
||||||
|
SKU = "IPHONE-15",
|
||||||
|
Translations = new List<TestTranslation>
|
||||||
|
{
|
||||||
|
new TestTranslation { Language = "en", Info = new TestInfo { Name = "iPhone 15" } },
|
||||||
|
new TestTranslation { Language = "ar", Info = new TestInfo { Name = "آيفون ١٥" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new TestEntity
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid(),
|
||||||
|
Price = 200,
|
||||||
|
SKU = "SAMSUNG-S24",
|
||||||
|
Translations = new List<TestTranslation>
|
||||||
|
{
|
||||||
|
new TestTranslation { Language = "en", Info = new TestInfo { Name = "Samsung S24" } },
|
||||||
|
new TestTranslation { Language = "ar", Info = new TestInfo { Name = "سامسونج اس ٢٤" } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplyAdvancedFilter_RootProperty_Works()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var data = GetTestData().AsQueryable();
|
||||||
|
var filter = new TestFilter { Price = 100 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = data.ApplyAdvancedFilter(filter).ToList();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Single(result);
|
||||||
|
Assert.Equal("IPHONE-15", result[0].SKU);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplyAdvancedFilter_DeepNestedProperty_Works()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var data = GetTestData().AsQueryable();
|
||||||
|
var filter = new TestFilter { Name = "iPhone" };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = data.ApplyAdvancedFilter(filter).ToList();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Single(result);
|
||||||
|
Assert.Equal("IPHONE-15", result[0].SKU);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplyAdvancedFilter_GroupedCorrelatedProperties_Works()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var data = GetTestData().AsQueryable();
|
||||||
|
// Search for "iPhone" but only in Arabic (should return nothing because Arabic name is "آيفون")
|
||||||
|
var filter = new TestFilter { Language = "ar", Name = "iPhone" };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = data.ApplyAdvancedFilter(filter).ToList();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Empty(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplyAdvancedFilter_GroupedCorrelatedProperties_CorrectMatch_Works()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var data = GetTestData().AsQueryable();
|
||||||
|
// Search for "آيفون" in Arabic
|
||||||
|
var filter = new TestFilter { Language = "ar", Name = "آيفون" };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = data.ApplyAdvancedFilter(filter).ToList();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Single(result);
|
||||||
|
Assert.Equal("IPHONE-15", result[0].SKU);
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public void ApplyAdvancedFilter_CaseInsensitiveSearch_Works()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var data = GetTestData().AsQueryable();
|
||||||
|
// Search for "IPHONE" (all caps) vs "iPhone 15"
|
||||||
|
var filter = new TestFilter { Name = "IPHONE" };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = data.ApplyAdvancedFilter(filter).ToList();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Single(result);
|
||||||
|
Assert.Equal("IPHONE-15", result[0].SKU);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
using Generic.Services;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Generic.Tests.Services
|
||||||
|
{
|
||||||
|
public class SortExtTests
|
||||||
|
{
|
||||||
|
private class TestItem
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int Category { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly IQueryable<TestItem> _data;
|
||||||
|
|
||||||
|
public SortExtTests()
|
||||||
|
{
|
||||||
|
_data = new List<TestItem>
|
||||||
|
{
|
||||||
|
new TestItem { Id = 1, Name = "Apple", Category = 1 },
|
||||||
|
new TestItem { Id = 2, Name = "Banana", Category = 1 },
|
||||||
|
new TestItem { Id = 3, Name = "Cherry", Category = 2 },
|
||||||
|
new TestItem { Id = 4, Name = "Date", Category = 2 },
|
||||||
|
new TestItem { Id = 5, Name = "Elderberry", Category = 1 }
|
||||||
|
}.AsQueryable();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Simple_Ascending_Works()
|
||||||
|
{
|
||||||
|
var sortModel = new SortModel { SortBy = "Name", SortDirection = SortDir.Ascending };
|
||||||
|
var result = _data.ApplySimpleSort(sortModel).ToList();
|
||||||
|
|
||||||
|
Assert.Equal("Apple", result[0].Name);
|
||||||
|
Assert.Equal("Banana", result[1].Name);
|
||||||
|
Assert.Equal("Elderberry", result[4].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Simple_Descending_Works()
|
||||||
|
{
|
||||||
|
var sortModel = new SortModel { SortBy = "Name", SortDirection = SortDir.Descending };
|
||||||
|
var result = _data.ApplySimpleSort(sortModel).ToList();
|
||||||
|
|
||||||
|
Assert.Equal("Elderberry", result[0].Name);
|
||||||
|
Assert.Equal("Date", result[1].Name);
|
||||||
|
Assert.Equal("Apple", result[4].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Complex_MultiLayer_Works()
|
||||||
|
{
|
||||||
|
// Category Descending, then Name Ascending
|
||||||
|
var sortModels = new List<SortModel>
|
||||||
|
{
|
||||||
|
new SortModel { SortBy = "Category", SortDirection = SortDir.Descending },
|
||||||
|
new SortModel { SortBy = "Name", SortDirection = SortDir.Ascending }
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = _data.ApplyComplexSort(sortModels).ToList();
|
||||||
|
|
||||||
|
// First should be Category 2 (Cherry or Date)
|
||||||
|
// Then Category 1 (Apple, Banana, Elderberry)
|
||||||
|
|
||||||
|
// Check Category 2 items are first
|
||||||
|
Assert.Equal(2, result[0].Category);
|
||||||
|
Assert.Equal(2, result[1].Category);
|
||||||
|
|
||||||
|
// Check secondary sort (Name Ascending) within Category 2
|
||||||
|
Assert.Equal("Cherry", result[0].Name);
|
||||||
|
Assert.Equal("Date", result[1].Name);
|
||||||
|
|
||||||
|
// Check Category 1 items
|
||||||
|
Assert.Equal(1, result[2].Category);
|
||||||
|
Assert.Equal(1, result[3].Category);
|
||||||
|
Assert.Equal(1, result[4].Category);
|
||||||
|
|
||||||
|
// Check secondary sort (Name Ascending) within Category 1
|
||||||
|
Assert.Equal("Apple", result[2].Name);
|
||||||
|
Assert.Equal("Banana", result[3].Name);
|
||||||
|
Assert.Equal("Elderberry", result[4].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_InvalidProperty_ThrowsException()
|
||||||
|
{
|
||||||
|
var sortModel = new SortModel { SortBy = "InvalidProp" };
|
||||||
|
|
||||||
|
Assert.Throws<ArgumentException>(() => _data.ApplySimpleSort(sortModel));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_EmptySort_ReturnsOriginal()
|
||||||
|
{
|
||||||
|
var result = _data.ApplySimpleSort((SortModel)null);
|
||||||
|
var resultList = result.ToList();
|
||||||
|
|
||||||
|
Assert.Equal(_data.Count(), resultList.Count);
|
||||||
|
// Just verifying it doesn't crash and returns data.
|
||||||
|
// Order is not guaranteed to be unchanged by contract if AsQueryable is used,
|
||||||
|
// but for List.AsQueryable it usually is.
|
||||||
|
Assert.Equal(1, resultList[0].Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Complex_Empty_ReturnsOriginal()
|
||||||
|
{
|
||||||
|
var result = _data.ApplyComplexSort(new List<SortModel>());
|
||||||
|
var resultList = result.ToList();
|
||||||
|
Assert.Equal(5, resultList.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_CaseInsensitiveProperty_Works()
|
||||||
|
{
|
||||||
|
var sortModel = new SortModel { SortBy = "name", SortDirection = SortDir.Ascending };
|
||||||
|
var result = _data.ApplySimpleSort(sortModel).ToList();
|
||||||
|
|
||||||
|
Assert.Equal("Apple", result[0].Name);
|
||||||
|
Assert.Equal("Banana", result[1].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Complex_SingleItem_WorksAsSimple()
|
||||||
|
{
|
||||||
|
var sortModels = new List<SortModel>
|
||||||
|
{
|
||||||
|
new SortModel { SortBy = "Name", SortDirection = SortDir.Descending }
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = _data.ApplyComplexSort(sortModels).ToList();
|
||||||
|
|
||||||
|
Assert.Equal("Elderberry", result[0].Name);
|
||||||
|
Assert.Equal("Date", result[1].Name);
|
||||||
|
Assert.Equal("Apple", result[4].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ApplySort_Complex_ThreeLayers_Works()
|
||||||
|
{
|
||||||
|
// Add data with 3 layers if needed, or reuse existing if sufficient.
|
||||||
|
// Extending data locally for this test to prove 3 layers.
|
||||||
|
// Layers: Category (Desc) -> Id (Desc) -> Name (Asc)
|
||||||
|
// Not perfect with current data, let's just make sure it doesn't crash
|
||||||
|
// and logically applies.
|
||||||
|
// Actually, let's create a specific data set for 3 layers.
|
||||||
|
|
||||||
|
var detailedData = new List<TestItem>
|
||||||
|
{
|
||||||
|
new TestItem { Id = 1, Name = "A", Category = 1 },
|
||||||
|
new TestItem { Id = 2, Name = "A", Category = 1 }, // Same Name, Same Cat
|
||||||
|
new TestItem { Id = 1, Name = "B", Category = 1 }, // Same Id (dup), Same Cat
|
||||||
|
}.AsQueryable();
|
||||||
|
|
||||||
|
// This data isn't great for 3 layers. Let's stick to checking logic execution flow using existing data properties.
|
||||||
|
// Category Desc (2, 2, 1, 1, 1)
|
||||||
|
// Then Name Asc (Cherry, Date | Apple, Banana, Elderberry)
|
||||||
|
// Then Id Desc (Within same Category and Name -- none are same, so 3rd layer is effectively no-op but tests the loop).
|
||||||
|
|
||||||
|
var sortModels = new List<SortModel>
|
||||||
|
{
|
||||||
|
new SortModel { SortBy = "Category", SortDirection = SortDir.Descending },
|
||||||
|
new SortModel { SortBy = "Name", SortDirection = SortDir.Ascending },
|
||||||
|
new SortModel { SortBy = "Id", SortDirection = SortDir.Descending }
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = _data.ApplyComplexSort(sortModels).ToList();
|
||||||
|
|
||||||
|
Assert.Equal("Cherry", result[0].Name);
|
||||||
|
Assert.Equal("Date", result[1].Name);
|
||||||
|
Assert.Equal("Apple", result[2].Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Generic.Tests;
|
||||||
|
|
||||||
|
public class UnitTest1
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Test1()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,286 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class AdvancedFilterExtension
|
||||||
|
{
|
||||||
|
public static IQueryable<T> ApplyAdvancedFilter<T, TFilter>(this IQueryable<T> query, TFilter filter)
|
||||||
|
where TFilter : class
|
||||||
|
{
|
||||||
|
if (filter == null) return query;
|
||||||
|
|
||||||
|
var entityType = typeof(T);
|
||||||
|
var filterProperties = typeof(TFilter).GetProperties()
|
||||||
|
.Where(p => p.GetValue(filter) != null)
|
||||||
|
.ToDictionary(p => p.Name, p => p.GetValue(filter));
|
||||||
|
|
||||||
|
if (!filterProperties.Any()) return query;
|
||||||
|
|
||||||
|
// 1. Map Entity Properties with their Paths and Levels
|
||||||
|
var entityMap = ScanEntity(entityType);
|
||||||
|
|
||||||
|
// 2. Process by Level (Priority)
|
||||||
|
var maxLevel = entityMap.Any() ? entityMap.Max(m => m.Level) : 0;
|
||||||
|
|
||||||
|
var parameter = Expression.Parameter(entityType, "x");
|
||||||
|
|
||||||
|
// We keep track of which filter properties we've already applied
|
||||||
|
var appliedFilterKeys = new HashSet<string>();
|
||||||
|
|
||||||
|
for (int level = 1; level <= maxLevel; level++)
|
||||||
|
{
|
||||||
|
var levelProperties = entityMap.Where(m => m.Level == level).ToList();
|
||||||
|
|
||||||
|
foreach (var meta in levelProperties)
|
||||||
|
{
|
||||||
|
// If this property name exists in our filter and hasn't been applied yet
|
||||||
|
if (filterProperties.TryGetValue(meta.Name, out var filterValue) && !appliedFilterKeys.Contains(meta.Name))
|
||||||
|
{
|
||||||
|
// If it's a root property (Level 1)
|
||||||
|
if (meta.Level == 1)
|
||||||
|
{
|
||||||
|
var comparison = BuildComparison(parameter, meta.PropertyInfo, filterValue);
|
||||||
|
if (comparison != null)
|
||||||
|
{
|
||||||
|
var lambda = Expression.Lambda<Func<T, bool>>(comparison, parameter);
|
||||||
|
query = query.Where(lambda);
|
||||||
|
appliedFilterKeys.Add(meta.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// It's a nested property. We need to find the "Branch Root" (the first collection in the path)
|
||||||
|
var branchInfo = FindBranchRoot(meta);
|
||||||
|
if (branchInfo != null)
|
||||||
|
{
|
||||||
|
// Discover all other filter properties that belong to this same branch
|
||||||
|
var branchFilters = DiscoverBranchFilters(branchInfo, entityMap, filterProperties, appliedFilterKeys);
|
||||||
|
|
||||||
|
// Apply them all together in one .Any() or nested .Where()
|
||||||
|
query = ApplyBranchFilter(query, parameter, branchInfo, branchFilters);
|
||||||
|
|
||||||
|
foreach (var usedKey in branchFilters.Keys) appliedFilterKeys.Add(usedKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<PropertyMetadata> ScanEntity(Type type, int level = 1, string path = "", PropertyMetadata parent = null)
|
||||||
|
{
|
||||||
|
var metaList = new List<PropertyMetadata>();
|
||||||
|
var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
|
||||||
|
foreach (var p in props)
|
||||||
|
{
|
||||||
|
var currentPath = string.IsNullOrEmpty(path) ? p.Name : $"{path}.{p.Name}";
|
||||||
|
var meta = new PropertyMetadata
|
||||||
|
{
|
||||||
|
Name = p.Name,
|
||||||
|
Path = currentPath,
|
||||||
|
Level = level,
|
||||||
|
PropertyInfo = p,
|
||||||
|
PropertyType = p.PropertyType,
|
||||||
|
Parent = parent
|
||||||
|
};
|
||||||
|
|
||||||
|
metaList.Add(meta);
|
||||||
|
|
||||||
|
// If it's a complex type (not a system type or enum), dive deeper
|
||||||
|
if (IsComplexType(p.PropertyType))
|
||||||
|
{
|
||||||
|
var nextType = GetUnderlyingType(p.PropertyType);
|
||||||
|
if (nextType != type) // Prevent infinite recursion for parent/child relations
|
||||||
|
{
|
||||||
|
metaList.AddRange(ScanEntity(nextType, level + 1, currentPath, meta));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return metaList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsComplexType(Type type)
|
||||||
|
{
|
||||||
|
if (type.IsPrimitive || type == typeof(string) || type == typeof(Guid) || type == typeof(DateTime) || type == typeof(decimal) || type == typeof(double) || type.IsEnum)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var underlying = GetUnderlyingType(type);
|
||||||
|
return underlying != type || (!underlying.Namespace?.StartsWith("System") ?? true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Type GetUnderlyingType(Type type)
|
||||||
|
{
|
||||||
|
if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(List<>) || type.GetGenericTypeDefinition() == typeof(ICollection<>) || type.GetGenericTypeDefinition() == typeof(IEnumerable<>)))
|
||||||
|
return type.GetGenericArguments()[0];
|
||||||
|
|
||||||
|
if (type.IsArray) return type.GetElementType();
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PropertyMetadata FindBranchRoot(PropertyMetadata meta)
|
||||||
|
{
|
||||||
|
var current = meta;
|
||||||
|
PropertyMetadata collectionRoot = null;
|
||||||
|
|
||||||
|
while (current != null)
|
||||||
|
{
|
||||||
|
if (IsCollection(current.PropertyType))
|
||||||
|
collectionRoot = current;
|
||||||
|
current = current.Parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return collectionRoot;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsCollection(Type type) => type != typeof(string) && typeof(IEnumerable).IsAssignableFrom(type);
|
||||||
|
|
||||||
|
private static Dictionary<string, (PropertyMetadata Meta, object Value)> DiscoverBranchFilters(
|
||||||
|
PropertyMetadata branchRoot,
|
||||||
|
List<PropertyMetadata> allMeta,
|
||||||
|
Dictionary<string, object> filterValues,
|
||||||
|
HashSet<string> appliedKeys)
|
||||||
|
{
|
||||||
|
var results = new Dictionary<string, (PropertyMetadata, object)>();
|
||||||
|
|
||||||
|
// Find all metadata items that are descendants of this branch root
|
||||||
|
var descendants = allMeta.Where(m => m.Path.StartsWith(branchRoot.Path + ".")).ToList();
|
||||||
|
|
||||||
|
foreach (var d in descendants)
|
||||||
|
{
|
||||||
|
if (filterValues.TryGetValue(d.Name, out var val) && !appliedKeys.Contains(d.Name))
|
||||||
|
{
|
||||||
|
results[d.Name] = (d, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IQueryable<T> ApplyBranchFilter<T>(
|
||||||
|
IQueryable<T> query,
|
||||||
|
ParameterExpression rootParam,
|
||||||
|
PropertyMetadata branchRoot,
|
||||||
|
Dictionary<string, (PropertyMetadata Meta, object Value)> branchFilters)
|
||||||
|
{
|
||||||
|
var itemType = GetUnderlyingType(branchRoot.PropertyType);
|
||||||
|
var itemParam = Expression.Parameter(itemType, "t");
|
||||||
|
|
||||||
|
Expression branchExpression = null;
|
||||||
|
|
||||||
|
foreach (var bf in branchFilters.Values)
|
||||||
|
{
|
||||||
|
// Resolve path relative to the collection item
|
||||||
|
// Example: branchRoot is "Translations", bf.Meta.Path is "Translations.Info.Name"
|
||||||
|
// Relative path is "Info.Name"
|
||||||
|
var relativePath = bf.Meta.Path.Substring(branchRoot.Path.Length + 1);
|
||||||
|
var propertyExpr = BuildRelativePropertyExpression(itemParam, relativePath);
|
||||||
|
|
||||||
|
var comparison = BuildComparisonFromExpression(propertyExpr, bf.Value);
|
||||||
|
|
||||||
|
if (comparison != null)
|
||||||
|
{
|
||||||
|
branchExpression = branchExpression == null
|
||||||
|
? comparison
|
||||||
|
: Expression.AndAlso(branchExpression, comparison);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (branchExpression == null) return query;
|
||||||
|
|
||||||
|
// Build: x => x.Translations.Any(t => t.Info.Name == "..." && t.Language == "...")
|
||||||
|
var anyMethod = typeof(Enumerable).GetMethods()
|
||||||
|
.First(m => m.Name == "Any" && m.GetParameters().Length == 2)
|
||||||
|
.MakeGenericMethod(itemType);
|
||||||
|
|
||||||
|
var collectionExpr = Expression.Property(rootParam, branchRoot.PropertyInfo);
|
||||||
|
var lambda = Expression.Lambda(branchExpression, itemParam);
|
||||||
|
var anyCall = Expression.Call(null, anyMethod, collectionExpr, lambda);
|
||||||
|
|
||||||
|
var finalLambda = Expression.Lambda<Func<T, bool>>(anyCall, rootParam);
|
||||||
|
return query.Where(finalLambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Expression BuildRelativePropertyExpression(Expression param, string path)
|
||||||
|
{
|
||||||
|
Expression expr = param;
|
||||||
|
foreach (var part in path.Split('.'))
|
||||||
|
{
|
||||||
|
expr = Expression.Property(expr, part);
|
||||||
|
}
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Expression? BuildComparison(Expression param, PropertyInfo prop, object? value)
|
||||||
|
{
|
||||||
|
var propertyExpr = Expression.Property(param, prop);
|
||||||
|
return BuildComparisonFromExpression(propertyExpr, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Expression? BuildComparisonFromExpression(Expression propertyExpr, object? value)
|
||||||
|
{
|
||||||
|
if (value == null) return null;
|
||||||
|
|
||||||
|
if (propertyExpr.Type == typeof(string))
|
||||||
|
{
|
||||||
|
var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) })!;
|
||||||
|
|
||||||
|
// x => x.Property.Contains(value)
|
||||||
|
var searchValue = Expression.Constant(value.ToString() ?? string.Empty, typeof(string));
|
||||||
|
|
||||||
|
return Expression.Call(propertyExpr, containsMethod, searchValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsCollection(propertyExpr.Type) && GetUnderlyingType(propertyExpr.Type) == typeof(string))
|
||||||
|
{
|
||||||
|
var anyMethod = typeof(Enumerable).GetMethods()
|
||||||
|
.First(m => m.Name == "Any" && m.GetParameters().Length == 2)
|
||||||
|
.MakeGenericMethod(typeof(string));
|
||||||
|
|
||||||
|
var itemParam = Expression.Parameter(typeof(string), "s");
|
||||||
|
var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) })!;
|
||||||
|
|
||||||
|
var searchValue = Expression.Constant(value.ToString() ?? string.Empty, typeof(string));
|
||||||
|
var itemContains = Expression.Call(itemParam, containsMethod, searchValue);
|
||||||
|
|
||||||
|
var lambda = Expression.Lambda(itemContains, itemParam);
|
||||||
|
return Expression.Call(null, anyMethod, propertyExpr, lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Nullable types for equality
|
||||||
|
var memberType = propertyExpr.Type;
|
||||||
|
if (memberType.IsGenericType && memberType.GetGenericTypeDefinition() == typeof(Nullable<>))
|
||||||
|
{
|
||||||
|
propertyExpr = Expression.Convert(propertyExpr, memberType.GetGenericArguments()[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var convertedValue = Convert.ChangeType(value, propertyExpr.Type);
|
||||||
|
return Expression.Equal(propertyExpr, Expression.Constant(convertedValue, propertyExpr.Type));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return Expression.Equal(propertyExpr, Expression.Constant(value, propertyExpr.Type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PropertyMetadata
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Path { get; set; }
|
||||||
|
public int Level { get; set; }
|
||||||
|
public PropertyInfo PropertyInfo { get; set; }
|
||||||
|
public Type PropertyType { get; set; }
|
||||||
|
public PropertyMetadata Parent { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public class AdvancedQueryBuilder
|
||||||
|
{
|
||||||
|
private readonly StringBuilder _builder;
|
||||||
|
private string _preText = string.Empty;
|
||||||
|
private string _afterText = string.Empty;
|
||||||
|
private string _separator = "&";
|
||||||
|
|
||||||
|
public AdvancedQueryBuilder()
|
||||||
|
{
|
||||||
|
_builder = new StringBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdvancedQueryBuilder AddPreText(string preText)
|
||||||
|
{
|
||||||
|
_preText = preText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdvancedQueryBuilder AddAfterText(string afterText)
|
||||||
|
{
|
||||||
|
_afterText = afterText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdvancedQueryBuilder AddSeprator(string separator)
|
||||||
|
{
|
||||||
|
_separator = separator;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdvancedQueryBuilder AddModels(params object?[] models)
|
||||||
|
{
|
||||||
|
if (models == null)
|
||||||
|
return this;
|
||||||
|
|
||||||
|
foreach (var model in models)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var properties = model.GetType().GetProperties();
|
||||||
|
foreach (var prop in properties)
|
||||||
|
{
|
||||||
|
var value = prop.GetValue(model)?.ToString();
|
||||||
|
if (!string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
AppendParameter(prop.Name.ToLower(), value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppendParameter(string key, string value)
|
||||||
|
{
|
||||||
|
if (_builder.Length > 0)
|
||||||
|
_builder.Append(_separator);
|
||||||
|
_builder.Append($"{Uri.EscapeDataString(key)}={Uri.EscapeDataString(value)}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => $"{_preText}{_builder}{_afterText}";
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class EnumExtensions
|
||||||
|
{
|
||||||
|
public static string GetDisplayName(this Enum value)
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
throw new ArgumentNullException(nameof(value));
|
||||||
|
|
||||||
|
// Get the enum field name
|
||||||
|
string name = value.ToString();
|
||||||
|
|
||||||
|
// Get the field info for the enum value
|
||||||
|
FieldInfo? field = value.GetType().GetField(name);
|
||||||
|
if (field == null)
|
||||||
|
return name; // Not a defined enum value (e.g., flags combination)
|
||||||
|
|
||||||
|
// Check for the [Display] attribute
|
||||||
|
DisplayAttribute? displayAttribute = field.GetCustomAttribute<DisplayAttribute>();
|
||||||
|
return displayAttribute?.GetName() ?? name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class FilterExtension
|
||||||
|
{
|
||||||
|
public static IQueryable<T> ApplyFilter<T, TFilter>(this IQueryable<T> query, TFilter filter)
|
||||||
|
where TFilter : class
|
||||||
|
{
|
||||||
|
if (filter == null)
|
||||||
|
return query;
|
||||||
|
|
||||||
|
var parameter = Expression.Parameter(typeof(T), "x");
|
||||||
|
Expression finalExpression = null;
|
||||||
|
|
||||||
|
var filterProperties = typeof(TFilter)
|
||||||
|
.GetProperties()
|
||||||
|
.Where(p => p.GetValue(filter) != null);
|
||||||
|
|
||||||
|
foreach (var filterProperty in filterProperties)
|
||||||
|
{
|
||||||
|
var filterValue = filterProperty.GetValue(filter);
|
||||||
|
if (filterValue == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var propertyName = filterProperty.Name;
|
||||||
|
PropertyInfo entityProperty;
|
||||||
|
|
||||||
|
Expression propertyExpression = null;
|
||||||
|
Expression comparison = null;
|
||||||
|
|
||||||
|
// Handle special suffix cases
|
||||||
|
if (propertyName.EndsWith("_Start") || propertyName.EndsWith("_Min"))
|
||||||
|
{
|
||||||
|
entityProperty = typeof(T).GetProperty(
|
||||||
|
propertyName.Substring(0, propertyName.LastIndexOf('_'))
|
||||||
|
);
|
||||||
|
if (entityProperty != null)
|
||||||
|
{
|
||||||
|
propertyExpression = Expression.Property(parameter, entityProperty);
|
||||||
|
comparison = Expression.GreaterThanOrEqual(
|
||||||
|
propertyExpression,
|
||||||
|
Expression.Constant(filterValue, entityProperty.PropertyType)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (propertyName.EndsWith("_End") || propertyName.EndsWith("_Max"))
|
||||||
|
{
|
||||||
|
entityProperty = typeof(T).GetProperty(
|
||||||
|
propertyName.Substring(0, propertyName.LastIndexOf('_'))
|
||||||
|
);
|
||||||
|
if (entityProperty != null)
|
||||||
|
{
|
||||||
|
propertyExpression = Expression.Property(parameter, entityProperty);
|
||||||
|
comparison = Expression.LessThanOrEqual(
|
||||||
|
propertyExpression,
|
||||||
|
Expression.Constant(filterValue, entityProperty.PropertyType)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (propertyName.EndsWith("Name", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
entityProperty = typeof(T).GetProperty(propertyName);
|
||||||
|
if (entityProperty != null && entityProperty.PropertyType == typeof(string))
|
||||||
|
{
|
||||||
|
propertyExpression = Expression.Property(parameter, entityProperty);
|
||||||
|
|
||||||
|
// For string Contains operation
|
||||||
|
var containsMethod = typeof(string).GetMethod(
|
||||||
|
"Contains",
|
||||||
|
new[] { typeof(string) }
|
||||||
|
);
|
||||||
|
var filterValueString = filterValue.ToString();
|
||||||
|
|
||||||
|
comparison = Expression.Call(
|
||||||
|
propertyExpression,
|
||||||
|
containsMethod,
|
||||||
|
Expression.Constant(filterValueString, typeof(string))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if (entityProperty != null)
|
||||||
|
{
|
||||||
|
// Fall back to equality comparison if it's not a string
|
||||||
|
propertyExpression = Expression.Property(parameter, entityProperty);
|
||||||
|
comparison = Expression.Equal(
|
||||||
|
propertyExpression,
|
||||||
|
Expression.Constant(filterValue, entityProperty.PropertyType)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
entityProperty = typeof(T).GetProperty(propertyName);
|
||||||
|
if (entityProperty != null)
|
||||||
|
{
|
||||||
|
propertyExpression = Expression.Property(parameter, entityProperty);
|
||||||
|
comparison = Expression.Equal(
|
||||||
|
propertyExpression,
|
||||||
|
Expression.Constant(filterValue, entityProperty.PropertyType)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comparison != null)
|
||||||
|
{
|
||||||
|
finalExpression =
|
||||||
|
finalExpression == null
|
||||||
|
? comparison
|
||||||
|
: Expression.AndAlso(finalExpression, comparison);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (finalExpression != null)
|
||||||
|
{
|
||||||
|
var lambda = Expression.Lambda<Func<T, bool>>(finalExpression, parameter);
|
||||||
|
query = query.Where(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class IEnumerableExtensions
|
||||||
|
{
|
||||||
|
public static IEnumerable<List<T>> Batch<T>(this IEnumerable<T> source, int batchSize)
|
||||||
|
{
|
||||||
|
var batch = new List<T>(batchSize);
|
||||||
|
foreach (var item in source)
|
||||||
|
{
|
||||||
|
batch.Add(item);
|
||||||
|
if (batch.Count == batchSize)
|
||||||
|
{
|
||||||
|
yield return batch;
|
||||||
|
batch = new List<T>(batchSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (batch.Count > 0)
|
||||||
|
{
|
||||||
|
yield return batch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class Pagination<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
public static IQueryable<T> Paginate(IQueryable<T> query, Pagination pagination)
|
||||||
|
{
|
||||||
|
return query
|
||||||
|
.Skip((pagination.CurrentPage.Value - 1) * pagination.PageSize.Value)
|
||||||
|
.Take(pagination.PageSize.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class PaginationExtension
|
||||||
|
{
|
||||||
|
public static IQueryable<T> Paginate<T>(this IQueryable<T> query, Pagination pagination)
|
||||||
|
{
|
||||||
|
if (pagination.CurrentPage.HasValue && pagination.PageSize.HasValue)
|
||||||
|
return query
|
||||||
|
.Skip((pagination.CurrentPage.Value - 1) * pagination.PageSize.Value)
|
||||||
|
.Take(pagination.PageSize.Value);
|
||||||
|
else
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public class QueryBuilder
|
||||||
|
{
|
||||||
|
private readonly StringBuilder _builder;
|
||||||
|
|
||||||
|
public QueryBuilder()
|
||||||
|
{
|
||||||
|
_builder = new StringBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryBuilder AddBase(string baseString)
|
||||||
|
{
|
||||||
|
_builder.Insert(0, baseString);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryBuilder AddPagination(Pagination pagination)
|
||||||
|
{
|
||||||
|
if (pagination != null)
|
||||||
|
{
|
||||||
|
AppendParameter("currentPage", pagination.CurrentPage.Value);
|
||||||
|
AppendParameter("pageSize", pagination.PageSize.Value);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryBuilder AddSort(SortModel sort)
|
||||||
|
{
|
||||||
|
if (sort != null && !string.IsNullOrEmpty(sort.SortBy))
|
||||||
|
{
|
||||||
|
AppendParameter("Column", sort.SortBy);
|
||||||
|
AppendParameter("sortDirection", sort.SortDirection.ToString());
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryBuilder AddModelProperties<TModel>(TModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
return this;
|
||||||
|
|
||||||
|
var properties = typeof(TModel).GetProperties();
|
||||||
|
foreach (var prop in properties)
|
||||||
|
{
|
||||||
|
var value = prop.GetValue(model)?.ToString();
|
||||||
|
if (!string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
AppendParameter(prop.Name.ToLower(), value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppendParameter(string key, string value)
|
||||||
|
{
|
||||||
|
if (_builder.Length > 0)
|
||||||
|
_builder.Append('&');
|
||||||
|
_builder.Append($"{Uri.EscapeDataString(key)}={Uri.EscapeDataString(value)}");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppendParameter(string key, int value)
|
||||||
|
{
|
||||||
|
AppendParameter(key, value.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => _builder.ToString();
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class QueryableExtensions
|
||||||
|
{
|
||||||
|
public static IQueryable<T> ApplySorting<T>(this IQueryable<T> source, SortModel sortBy)
|
||||||
|
{
|
||||||
|
// Parameter for lambda expression, e.g., "p" in "p => p.Property"
|
||||||
|
var parameter = Expression.Parameter(typeof(T), "p");
|
||||||
|
|
||||||
|
// Access the property on the parameter, e.g., "p.Property"
|
||||||
|
var property = Expression.Property(parameter, sortBy.SortBy);
|
||||||
|
|
||||||
|
// Cast property access to an object (boxing value types)
|
||||||
|
var converted = Expression.Convert(property, typeof(object));
|
||||||
|
|
||||||
|
// Create the lambda expression, e.g., "p => (object)p.Property"
|
||||||
|
var keySelector = Expression.Lambda<Func<T, object>>(converted, parameter);
|
||||||
|
|
||||||
|
// Apply OrderBy or OrderByDescending based on the ascending flag
|
||||||
|
return sortBy.SortDirection == SortDir.Ascending
|
||||||
|
? source.OrderBy(keySelector)
|
||||||
|
: source.OrderByDescending(keySelector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Generic.Contracts.Generics;
|
||||||
|
|
||||||
|
namespace Generic.Services;
|
||||||
|
|
||||||
|
public static class SortExt
|
||||||
|
{
|
||||||
|
public static IQueryable<T> ApplySimpleSort<T>(this IQueryable<T> query, SortModel sortModel)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(sortModel?.SortBy))
|
||||||
|
return query;
|
||||||
|
|
||||||
|
return ApplySortInternal(query, new[] { sortModel });
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IQueryable<T> ApplyComplexSort<T>(this IQueryable<T> query, IEnumerable<SortModel> sortModels)
|
||||||
|
{
|
||||||
|
var models = sortModels?.Where(x => !string.IsNullOrWhiteSpace(x.SortBy)).ToList();
|
||||||
|
if (models == null || !models.Any())
|
||||||
|
return query;
|
||||||
|
|
||||||
|
return ApplySortInternal(query, models);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IQueryable<T> ApplySortInternal<T>(IQueryable<T> query, IEnumerable<SortModel> sortModels)
|
||||||
|
{
|
||||||
|
var first = true;
|
||||||
|
IOrderedQueryable<T> orderedQuery = null;
|
||||||
|
|
||||||
|
foreach (var model in sortModels)
|
||||||
|
{
|
||||||
|
var propertyInfo = typeof(T).GetProperty(
|
||||||
|
model.SortBy,
|
||||||
|
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
|
||||||
|
);
|
||||||
|
|
||||||
|
if (propertyInfo == null)
|
||||||
|
{
|
||||||
|
// Decide whether to throw or ignore. For now, letting it throw or we could ignore.
|
||||||
|
// Original code threw exception, so we will throw to be safe/consistent.
|
||||||
|
throw new ArgumentException(
|
||||||
|
$"No property '{model.SortBy}' on type '{typeof(T).Name}'"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
var parameter = Expression.Parameter(typeof(T), "x");
|
||||||
|
var property = Expression.Property(parameter, propertyInfo);
|
||||||
|
var lambda = Expression.Lambda(property, parameter);
|
||||||
|
|
||||||
|
string methodName = "";
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
methodName = model.SortDirection == SortDir.Descending ? "OrderByDescending" : "OrderBy";
|
||||||
|
|
||||||
|
var method = typeof(Queryable).GetMethods()
|
||||||
|
.First(m => m.Name == methodName && m.GetParameters().Length == 2)
|
||||||
|
.MakeGenericMethod(typeof(T), propertyInfo.PropertyType);
|
||||||
|
|
||||||
|
orderedQuery = (IOrderedQueryable<T>)method.Invoke(null, new object[] { query, lambda });
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
methodName = model.SortDirection == SortDir.Descending ? "ThenByDescending" : "ThenBy";
|
||||||
|
|
||||||
|
var method = typeof(Queryable).GetMethods()
|
||||||
|
.First(m => m.Name == methodName && m.GetParameters().Length == 2)
|
||||||
|
.MakeGenericMethod(typeof(T), propertyInfo.PropertyType);
|
||||||
|
|
||||||
|
orderedQuery = (IOrderedQueryable<T>)method.Invoke(null, new object[] { orderedQuery, lambda });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return orderedQuery ?? query;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v10.0",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v10.0": {
|
||||||
|
"Generic.CL/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"Generic.CL.dll": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Generic.CL/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v10.0",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v10.0": {
|
||||||
|
"Generic/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"Generic.dll": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Generic/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Generic")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("Generic")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("Generic")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
d6354db1a96f2206ec79214f9b5fd27150b3f3f75b3eacc8bcdbf7c567e9b38e
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Generic.CL")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("Generic.CL")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("Generic.CL")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ca2c1d419b3112b8e898ceb4b377fbd5e26beabc550db163cf5bb5a874311c54
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.TargetFramework = net10.0
|
||||||
|
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||||
|
build_property.TargetFrameworkVersion = v10.0
|
||||||
|
build_property.TargetPlatformMinVersion =
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb =
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = Generic.CL
|
||||||
|
build_property.ProjectDir = /mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/
|
||||||
|
build_property.EnableComHosting =
|
||||||
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
build_property.EffectiveAnalysisLevelStyle = 10.0
|
||||||
|
build_property.EnableCodeStyleSeverity =
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using System;
|
||||||
|
global using System.Collections.Generic;
|
||||||
|
global using System.IO;
|
||||||
|
global using System.Linq;
|
||||||
|
global using System.Net.Http;
|
||||||
|
global using System.Threading;
|
||||||
|
global using System.Threading.Tasks;
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
fe21f49b2589519ae2475c649a675b25db15173a3baa39e5df96b3c0de73c230
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.CL.deps.json
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.CL.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.CL.pdb
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.AssemblyInfoInputs.cache
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.AssemblyInfo.cs
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.csproj.CoreCompileInputs.cache
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/refint/Generic.CL.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.CL.pdb
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/ref/Generic.CL.dll
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,17 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.TargetFramework = net10.0
|
||||||
|
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||||
|
build_property.TargetFrameworkVersion = v10.0
|
||||||
|
build_property.TargetPlatformMinVersion =
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb =
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = Generic
|
||||||
|
build_property.ProjectDir = /mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/
|
||||||
|
build_property.EnableComHosting =
|
||||||
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
build_property.EffectiveAnalysisLevelStyle = 10.0
|
||||||
|
build_property.EnableCodeStyleSeverity =
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using System;
|
||||||
|
global using System.Collections.Generic;
|
||||||
|
global using System.IO;
|
||||||
|
global using System.Linq;
|
||||||
|
global using System.Net.Http;
|
||||||
|
global using System.Threading;
|
||||||
|
global using System.Threading.Tasks;
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
d13176499425e80ccca64955d736635989ae9dd80d2597f8e5a10fd0d6faa58f
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.deps.json
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/bin/Debug/net10.0/Generic.pdb
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.AssemblyInfoInputs.cache
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.AssemblyInfo.cs
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.csproj.CoreCompileInputs.cache
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/refint/Generic.dll
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/Generic.pdb
|
||||||
|
/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/Debug/net10.0/ref/Generic.dll
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,341 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||||
|
"projectName": "Generic.CL",
|
||||||
|
"projectPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||||
|
"packagesPath": "/home/yla/.nuget/packages/",
|
||||||
|
"outputPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"/home/yla/.nuget/NuGet/NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net10.0"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "all"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"frameworkReferences": {
|
||||||
|
"Microsoft.NETCore.App": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json",
|
||||||
|
"packagesToPrune": {
|
||||||
|
"Microsoft.CSharp": "(,4.7.32767]",
|
||||||
|
"Microsoft.VisualBasic": "(,10.4.32767]",
|
||||||
|
"Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"Microsoft.Win32.Registry": "(,5.0.32767]",
|
||||||
|
"runtime.any.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.AppContext": "(,4.3.32767]",
|
||||||
|
"System.Buffers": "(,5.0.32767]",
|
||||||
|
"System.Collections": "(,4.3.32767]",
|
||||||
|
"System.Collections.Concurrent": "(,4.3.32767]",
|
||||||
|
"System.Collections.Immutable": "(,10.0.32767]",
|
||||||
|
"System.Collections.NonGeneric": "(,4.3.32767]",
|
||||||
|
"System.Collections.Specialized": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Annotations": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Primitives": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
|
||||||
|
"System.Console": "(,4.3.32767]",
|
||||||
|
"System.Data.Common": "(,4.3.32767]",
|
||||||
|
"System.Data.DataSetExtensions": "(,4.4.32767]",
|
||||||
|
"System.Diagnostics.Contracts": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
|
||||||
|
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Process": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.StackTrace": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TraceSource": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"System.Drawing.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Dynamic.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Formats.Asn1": "(,10.0.32767]",
|
||||||
|
"System.Formats.Tar": "(,10.0.32767]",
|
||||||
|
"System.Globalization": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Extensions": "(,4.3.32767]",
|
||||||
|
"System.IO": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression.ZipFile": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
|
||||||
|
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
|
||||||
|
"System.IO.IsolatedStorage": "(,4.3.32767]",
|
||||||
|
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipelines": "(,10.0.32767]",
|
||||||
|
"System.IO.Pipes": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
|
||||||
|
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
|
||||||
|
"System.Linq": "(,4.3.32767]",
|
||||||
|
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
|
||||||
|
"System.Linq.Expressions": "(,4.3.32767]",
|
||||||
|
"System.Linq.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Linq.Queryable": "(,4.3.32767]",
|
||||||
|
"System.Memory": "(,5.0.32767]",
|
||||||
|
"System.Net.Http": "(,4.3.32767]",
|
||||||
|
"System.Net.Http.Json": "(,10.0.32767]",
|
||||||
|
"System.Net.NameResolution": "(,4.3.32767]",
|
||||||
|
"System.Net.NetworkInformation": "(,4.3.32767]",
|
||||||
|
"System.Net.Ping": "(,4.3.32767]",
|
||||||
|
"System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Net.Requests": "(,4.3.32767]",
|
||||||
|
"System.Net.Security": "(,4.3.32767]",
|
||||||
|
"System.Net.ServerSentEvents": "(,10.0.32767]",
|
||||||
|
"System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebHeaderCollection": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets.Client": "(,4.3.32767]",
|
||||||
|
"System.Numerics.Vectors": "(,5.0.32767]",
|
||||||
|
"System.ObjectModel": "(,4.3.32767]",
|
||||||
|
"System.Private.DataContractSerialization": "(,4.3.32767]",
|
||||||
|
"System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"System.Reflection": "(,4.3.32767]",
|
||||||
|
"System.Reflection.DispatchProxy": "(,6.0.32767]",
|
||||||
|
"System.Reflection.Emit": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Reflection.Metadata": "(,10.0.32767]",
|
||||||
|
"System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Reflection.TypeExtensions": "(,4.3.32767]",
|
||||||
|
"System.Resources.Reader": "(,4.3.32767]",
|
||||||
|
"System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"System.Resources.Writer": "(,4.3.32767]",
|
||||||
|
"System.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
|
||||||
|
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Loader": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Numerics": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Json": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
|
||||||
|
"System.Security.AccessControl": "(,6.0.32767]",
|
||||||
|
"System.Security.Claims": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Cng": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Csp": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal.Windows": "(,5.0.32767]",
|
||||||
|
"System.Security.SecureString": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding.CodePages": "(,10.0.32767]",
|
||||||
|
"System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Text.Encodings.Web": "(,10.0.32767]",
|
||||||
|
"System.Text.Json": "(,10.0.32767]",
|
||||||
|
"System.Text.RegularExpressions": "(,4.3.32767]",
|
||||||
|
"System.Threading": "(,4.3.32767]",
|
||||||
|
"System.Threading.AccessControl": "(,10.0.32767]",
|
||||||
|
"System.Threading.Channels": "(,10.0.32767]",
|
||||||
|
"System.Threading.Overlapped": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
|
||||||
|
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
|
||||||
|
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Threading.Thread": "(,4.3.32767]",
|
||||||
|
"System.Threading.ThreadPool": "(,4.3.32767]",
|
||||||
|
"System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"System.ValueTuple": "(,4.5.32767]",
|
||||||
|
"System.Xml.ReaderWriter": "(,4.3.32767]",
|
||||||
|
"System.Xml.XDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlSerializer": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath.XDocument": "(,5.0.32767]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/yla/.nuget/packages/</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/yla/.nuget/packages/</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="/home/yla/.nuget/packages/" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||||
@@ -0,0 +1,341 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.csproj": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.csproj",
|
||||||
|
"projectName": "Generic",
|
||||||
|
"projectPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.csproj",
|
||||||
|
"packagesPath": "/home/yla/.nuget/packages/",
|
||||||
|
"outputPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"/home/yla/.nuget/NuGet/NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net10.0"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "all"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"frameworkReferences": {
|
||||||
|
"Microsoft.NETCore.App": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json",
|
||||||
|
"packagesToPrune": {
|
||||||
|
"Microsoft.CSharp": "(,4.7.32767]",
|
||||||
|
"Microsoft.VisualBasic": "(,10.4.32767]",
|
||||||
|
"Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"Microsoft.Win32.Registry": "(,5.0.32767]",
|
||||||
|
"runtime.any.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.AppContext": "(,4.3.32767]",
|
||||||
|
"System.Buffers": "(,5.0.32767]",
|
||||||
|
"System.Collections": "(,4.3.32767]",
|
||||||
|
"System.Collections.Concurrent": "(,4.3.32767]",
|
||||||
|
"System.Collections.Immutable": "(,10.0.32767]",
|
||||||
|
"System.Collections.NonGeneric": "(,4.3.32767]",
|
||||||
|
"System.Collections.Specialized": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Annotations": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Primitives": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
|
||||||
|
"System.Console": "(,4.3.32767]",
|
||||||
|
"System.Data.Common": "(,4.3.32767]",
|
||||||
|
"System.Data.DataSetExtensions": "(,4.4.32767]",
|
||||||
|
"System.Diagnostics.Contracts": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
|
||||||
|
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Process": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.StackTrace": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TraceSource": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"System.Drawing.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Dynamic.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Formats.Asn1": "(,10.0.32767]",
|
||||||
|
"System.Formats.Tar": "(,10.0.32767]",
|
||||||
|
"System.Globalization": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Extensions": "(,4.3.32767]",
|
||||||
|
"System.IO": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression.ZipFile": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
|
||||||
|
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
|
||||||
|
"System.IO.IsolatedStorage": "(,4.3.32767]",
|
||||||
|
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipelines": "(,10.0.32767]",
|
||||||
|
"System.IO.Pipes": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
|
||||||
|
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
|
||||||
|
"System.Linq": "(,4.3.32767]",
|
||||||
|
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
|
||||||
|
"System.Linq.Expressions": "(,4.3.32767]",
|
||||||
|
"System.Linq.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Linq.Queryable": "(,4.3.32767]",
|
||||||
|
"System.Memory": "(,5.0.32767]",
|
||||||
|
"System.Net.Http": "(,4.3.32767]",
|
||||||
|
"System.Net.Http.Json": "(,10.0.32767]",
|
||||||
|
"System.Net.NameResolution": "(,4.3.32767]",
|
||||||
|
"System.Net.NetworkInformation": "(,4.3.32767]",
|
||||||
|
"System.Net.Ping": "(,4.3.32767]",
|
||||||
|
"System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Net.Requests": "(,4.3.32767]",
|
||||||
|
"System.Net.Security": "(,4.3.32767]",
|
||||||
|
"System.Net.ServerSentEvents": "(,10.0.32767]",
|
||||||
|
"System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebHeaderCollection": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets.Client": "(,4.3.32767]",
|
||||||
|
"System.Numerics.Vectors": "(,5.0.32767]",
|
||||||
|
"System.ObjectModel": "(,4.3.32767]",
|
||||||
|
"System.Private.DataContractSerialization": "(,4.3.32767]",
|
||||||
|
"System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"System.Reflection": "(,4.3.32767]",
|
||||||
|
"System.Reflection.DispatchProxy": "(,6.0.32767]",
|
||||||
|
"System.Reflection.Emit": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Reflection.Metadata": "(,10.0.32767]",
|
||||||
|
"System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Reflection.TypeExtensions": "(,4.3.32767]",
|
||||||
|
"System.Resources.Reader": "(,4.3.32767]",
|
||||||
|
"System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"System.Resources.Writer": "(,4.3.32767]",
|
||||||
|
"System.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
|
||||||
|
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Loader": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Numerics": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Json": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
|
||||||
|
"System.Security.AccessControl": "(,6.0.32767]",
|
||||||
|
"System.Security.Claims": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Cng": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Csp": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal.Windows": "(,5.0.32767]",
|
||||||
|
"System.Security.SecureString": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding.CodePages": "(,10.0.32767]",
|
||||||
|
"System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Text.Encodings.Web": "(,10.0.32767]",
|
||||||
|
"System.Text.Json": "(,10.0.32767]",
|
||||||
|
"System.Text.RegularExpressions": "(,4.3.32767]",
|
||||||
|
"System.Threading": "(,4.3.32767]",
|
||||||
|
"System.Threading.AccessControl": "(,10.0.32767]",
|
||||||
|
"System.Threading.Channels": "(,10.0.32767]",
|
||||||
|
"System.Threading.Overlapped": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
|
||||||
|
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
|
||||||
|
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Threading.Thread": "(,4.3.32767]",
|
||||||
|
"System.Threading.ThreadPool": "(,4.3.32767]",
|
||||||
|
"System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"System.ValueTuple": "(,4.5.32767]",
|
||||||
|
"System.Xml.ReaderWriter": "(,4.3.32767]",
|
||||||
|
"System.Xml.XDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlSerializer": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath.XDocument": "(,5.0.32767]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/yla/.nuget/packages/</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/yla/.nuget/packages/</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="/home/yla/.nuget/packages/" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||||
@@ -0,0 +1,346 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"targets": {
|
||||||
|
"net10.0": {}
|
||||||
|
},
|
||||||
|
"libraries": {},
|
||||||
|
"projectFileDependencyGroups": {
|
||||||
|
"net10.0": []
|
||||||
|
},
|
||||||
|
"packageFolders": {
|
||||||
|
"/home/yla/.nuget/packages/": {}
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||||
|
"projectName": "Generic.CL",
|
||||||
|
"projectPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||||
|
"packagesPath": "/home/yla/.nuget/packages/",
|
||||||
|
"outputPath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/obj/",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"/home/yla/.nuget/NuGet/NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net10.0"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "all"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net10.0": {
|
||||||
|
"targetAlias": "net10.0",
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"frameworkReferences": {
|
||||||
|
"Microsoft.NETCore.App": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/10.0.102/PortableRuntimeIdentifierGraph.json",
|
||||||
|
"packagesToPrune": {
|
||||||
|
"Microsoft.CSharp": "(,4.7.32767]",
|
||||||
|
"Microsoft.VisualBasic": "(,10.4.32767]",
|
||||||
|
"Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"Microsoft.Win32.Registry": "(,5.0.32767]",
|
||||||
|
"runtime.any.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Collections": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.IO": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
|
||||||
|
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||||
|
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||||
|
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Console": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||||
|
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.AppContext": "(,4.3.32767]",
|
||||||
|
"System.Buffers": "(,5.0.32767]",
|
||||||
|
"System.Collections": "(,4.3.32767]",
|
||||||
|
"System.Collections.Concurrent": "(,4.3.32767]",
|
||||||
|
"System.Collections.Immutable": "(,10.0.32767]",
|
||||||
|
"System.Collections.NonGeneric": "(,4.3.32767]",
|
||||||
|
"System.Collections.Specialized": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Annotations": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.Primitives": "(,4.3.32767]",
|
||||||
|
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
|
||||||
|
"System.Console": "(,4.3.32767]",
|
||||||
|
"System.Data.Common": "(,4.3.32767]",
|
||||||
|
"System.Data.DataSetExtensions": "(,4.4.32767]",
|
||||||
|
"System.Diagnostics.Contracts": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Debug": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
|
||||||
|
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Process": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.StackTrace": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tools": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.TraceSource": "(,4.3.32767]",
|
||||||
|
"System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||||
|
"System.Drawing.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Dynamic.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Formats.Asn1": "(,10.0.32767]",
|
||||||
|
"System.Formats.Tar": "(,10.0.32767]",
|
||||||
|
"System.Globalization": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Calendars": "(,4.3.32767]",
|
||||||
|
"System.Globalization.Extensions": "(,4.3.32767]",
|
||||||
|
"System.IO": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression": "(,4.3.32767]",
|
||||||
|
"System.IO.Compression.ZipFile": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
|
||||||
|
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
|
||||||
|
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
|
||||||
|
"System.IO.IsolatedStorage": "(,4.3.32767]",
|
||||||
|
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipelines": "(,10.0.32767]",
|
||||||
|
"System.IO.Pipes": "(,4.3.32767]",
|
||||||
|
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
|
||||||
|
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
|
||||||
|
"System.Linq": "(,4.3.32767]",
|
||||||
|
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
|
||||||
|
"System.Linq.Expressions": "(,4.3.32767]",
|
||||||
|
"System.Linq.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Linq.Queryable": "(,4.3.32767]",
|
||||||
|
"System.Memory": "(,5.0.32767]",
|
||||||
|
"System.Net.Http": "(,4.3.32767]",
|
||||||
|
"System.Net.Http.Json": "(,10.0.32767]",
|
||||||
|
"System.Net.NameResolution": "(,4.3.32767]",
|
||||||
|
"System.Net.NetworkInformation": "(,4.3.32767]",
|
||||||
|
"System.Net.Ping": "(,4.3.32767]",
|
||||||
|
"System.Net.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Net.Requests": "(,4.3.32767]",
|
||||||
|
"System.Net.Security": "(,4.3.32767]",
|
||||||
|
"System.Net.ServerSentEvents": "(,10.0.32767]",
|
||||||
|
"System.Net.Sockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebHeaderCollection": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets": "(,4.3.32767]",
|
||||||
|
"System.Net.WebSockets.Client": "(,4.3.32767]",
|
||||||
|
"System.Numerics.Vectors": "(,5.0.32767]",
|
||||||
|
"System.ObjectModel": "(,4.3.32767]",
|
||||||
|
"System.Private.DataContractSerialization": "(,4.3.32767]",
|
||||||
|
"System.Private.Uri": "(,4.3.32767]",
|
||||||
|
"System.Reflection": "(,4.3.32767]",
|
||||||
|
"System.Reflection.DispatchProxy": "(,6.0.32767]",
|
||||||
|
"System.Reflection.Emit": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
|
||||||
|
"System.Reflection.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Reflection.Metadata": "(,10.0.32767]",
|
||||||
|
"System.Reflection.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Reflection.TypeExtensions": "(,4.3.32767]",
|
||||||
|
"System.Resources.Reader": "(,4.3.32767]",
|
||||||
|
"System.Resources.ResourceManager": "(,4.3.32767]",
|
||||||
|
"System.Resources.Writer": "(,4.3.32767]",
|
||||||
|
"System.Runtime": "(,4.3.32767]",
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
|
||||||
|
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Handles": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices": "(,4.3.32767]",
|
||||||
|
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Loader": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Numerics": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Json": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
|
||||||
|
"System.Security.AccessControl": "(,6.0.32767]",
|
||||||
|
"System.Security.Claims": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Cng": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Csp": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
|
||||||
|
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
|
||||||
|
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal": "(,4.3.32767]",
|
||||||
|
"System.Security.Principal.Windows": "(,5.0.32767]",
|
||||||
|
"System.Security.SecureString": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding": "(,4.3.32767]",
|
||||||
|
"System.Text.Encoding.CodePages": "(,10.0.32767]",
|
||||||
|
"System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||||
|
"System.Text.Encodings.Web": "(,10.0.32767]",
|
||||||
|
"System.Text.Json": "(,10.0.32767]",
|
||||||
|
"System.Text.RegularExpressions": "(,4.3.32767]",
|
||||||
|
"System.Threading": "(,4.3.32767]",
|
||||||
|
"System.Threading.AccessControl": "(,10.0.32767]",
|
||||||
|
"System.Threading.Channels": "(,10.0.32767]",
|
||||||
|
"System.Threading.Overlapped": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks": "(,4.3.32767]",
|
||||||
|
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
|
||||||
|
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
|
||||||
|
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
|
||||||
|
"System.Threading.Thread": "(,4.3.32767]",
|
||||||
|
"System.Threading.ThreadPool": "(,4.3.32767]",
|
||||||
|
"System.Threading.Timer": "(,4.3.32767]",
|
||||||
|
"System.ValueTuple": "(,4.5.32767]",
|
||||||
|
"System.Xml.ReaderWriter": "(,4.3.32767]",
|
||||||
|
"System.Xml.XDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlDocument": "(,4.3.32767]",
|
||||||
|
"System.Xml.XmlSerializer": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath": "(,4.3.32767]",
|
||||||
|
"System.Xml.XPath.XDocument": "(,5.0.32767]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"dgSpecHash": "0H3kVNHnNAI=",
|
||||||
|
"success": true,
|
||||||
|
"projectFilePath": "/mnt/data/Work/Programming/MainProgram/Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||||
|
"expectedPackageFiles": [],
|
||||||
|
"logs": []
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user