diff --git a/.editorconfig b/.editorconfig
index 338fcaf3c1..486c411a6f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -140,6 +140,7 @@ resharper_csharp_wrap_after_invocation_lpar = true
resharper_csharp_wrap_arguments_style = chop_if_long
resharper_csharp_wrap_before_invocation_rpar = true
resharper_keep_existing_invocation_parens_arrangement = false
+resharper_keep_existing_property_patterns_arrangement = false
resharper_max_invocation_arguments_on_line = 3
resharper_place_expr_property_on_single_line = true
resharper_place_simple_initializer_on_single_line = false
diff --git a/Directory.Build.props b/Directory.Build.props
index 5c7a9d16ce..705deb8f6c 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -20,10 +20,10 @@
true
enable
- preview
+ latest
enable
linux-arm64;linux-x64;osx-arm64;osx-x64;win-x64
- net7.0
+ net8.0
\ No newline at end of file
diff --git a/Examples/Directory.Build.props b/Examples/Directory.Build.props
index 206bb48374..c8e94a34b8 100644
--- a/Examples/Directory.Build.props
+++ b/Examples/Directory.Build.props
@@ -19,7 +19,7 @@
enable
latest
enable
- net7.0
+ net8.0
\ No newline at end of file
diff --git a/Framework/Directory.Build.props b/Framework/Directory.Build.props
index 483e359f6f..e58d7b1f8f 100644
--- a/Framework/Directory.Build.props
+++ b/Framework/Directory.Build.props
@@ -1,4 +1,11 @@
+
+
+ $(MSBuildProjectDirectory)\..\..
+
+
+
+
$(MSBuildProjectDirectory)\..\..
diff --git a/Framework/Intersect.Framework/Converters/Json/GenericFactoryNewtonsoftJsonConverter.cs b/Framework/Intersect.Framework/Converters/Json/GenericFactoryNewtonsoftJsonConverter.cs
index 4a5afacb56..daeb89e5c2 100644
--- a/Framework/Intersect.Framework/Converters/Json/GenericFactoryNewtonsoftJsonConverter.cs
+++ b/Framework/Intersect.Framework/Converters/Json/GenericFactoryNewtonsoftJsonConverter.cs
@@ -5,7 +5,7 @@ namespace Intersect.Framework.Converters.Json;
public abstract class GenericFactoryNewtonsoftJsonConverter : JsonConverter
{
- private static readonly Dictionary _converters = new Dictionary();
+ private static readonly Dictionary Converters = [];
private readonly Type _converterTypeDefinition;
private readonly Type _serializedGenericTypeDefinition;
@@ -60,7 +60,7 @@ private static JsonConverter CreateActualConverter(
Type objectType
)
{
- if (_converters.TryGetValue(objectType, out JsonConverter? jsonConverter))
+ if (Converters.TryGetValue(objectType, out JsonConverter? jsonConverter))
{
return jsonConverter;
}
@@ -73,7 +73,7 @@ Type objectType
var identifiedType = targetType.FindGenericTypeParameters(serializedGenericTypeDefinition);
var converterType = converterTypeDefinition.MakeGenericType(identifiedType);
jsonConverter = Activator.CreateInstance(converterType) as JsonConverter;
- _converters[objectType] = jsonConverter ?? throw new InvalidOperationException();
+ Converters[objectType] = jsonConverter ?? throw new InvalidOperationException();
return jsonConverter;
}
}
diff --git a/Framework/Intersect.Framework/Intersect.Framework.csproj b/Framework/Intersect.Framework/Intersect.Framework.csproj
index e74bfed5fb..57e14a51cb 100644
--- a/Framework/Intersect.Framework/Intersect.Framework.csproj
+++ b/Framework/Intersect.Framework/Intersect.Framework.csproj
@@ -1,11 +1,5 @@
-
- net7.0
- enable
- enable
-
-
@@ -17,4 +11,19 @@
+
+
+ True
+ True
+ ReflectionStrings.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ ReflectionStrings.Designer.cs
+
+
+
diff --git a/Framework/Intersect.Framework/Reflection/AssemblyExtensions.cs b/Framework/Intersect.Framework/Reflection/AssemblyExtensions.cs
index a6f13243cc..caf25246fb 100755
--- a/Framework/Intersect.Framework/Reflection/AssemblyExtensions.cs
+++ b/Framework/Intersect.Framework/Reflection/AssemblyExtensions.cs
@@ -1,6 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Resources;
+// ReSharper disable MemberCanBePrivate.Global
namespace Intersect.Framework.Reflection;
@@ -34,7 +35,7 @@ params object[] args
if (type == default)
{
throw new InvalidOperationException(
- $"Found no matching subtype of {typeof(TParentType).FullName} that can be created."
+ string.Format(ReflectionStrings.AssemblyExtensions_NoMatchingSubtype, typeof(TParentType).FullName)
);
}
@@ -43,7 +44,9 @@ params object[] args
return instance;
}
- throw new InvalidOperationException($"Failed to create instance of {typeof(TParentType).FullName}.");
+ throw new InvalidOperationException(
+ string.Format(ReflectionStrings.AssemblyExtensions_FailedToCreateInstance, typeof(TParentType).FullName)
+ );
}
public static string GetVersionName(this Assembly assembly)
@@ -61,7 +64,7 @@ public static string GetVersionName(this Assembly assembly)
}
public static IEnumerable FindAbstractSubtypesOf(this Assembly assembly, Type type) =>
- assembly.FindSubtypesOf(type).Where(subtype => subtype?.IsAbstract ?? false);
+ assembly.FindSubtypesOf(type).Where(subtype => subtype.IsAbstract);
public static IEnumerable FindAbstractSubtypesOf(this Assembly assembly) =>
assembly.FindAbstractSubtypesOf(typeof(TParentType));
@@ -75,16 +78,16 @@ public static IEnumerable FindDefinedSubtypesOf(this Assembly
assembly.FindDefinedSubtypesOf(typeof(TParentType));
public static IEnumerable FindGenericSubtypesOf(this Assembly assembly, Type type) =>
- assembly.FindSubtypesOf(type).Where(subtype => subtype?.IsGenericType ?? false);
+ assembly.FindSubtypesOf(type).Where(subtype => subtype.IsGenericType);
public static IEnumerable FindGenericSubtypesOf(this Assembly assembly) =>
assembly.FindGenericSubtypesOf(typeof(TParentType));
public static IEnumerable FindInterfaceSubtypesOf(this Assembly assembly, Type type) =>
- assembly.FindSubtypesOf(type).Where(subtype => subtype?.IsInterface ?? false);
+ assembly.FindSubtypesOf(type).Where(subtype => subtype.IsInterface);
public static IEnumerable FindInterfaceSubtypesOf(this Assembly assembly) =>
- assembly.FindInterfaceSubtypesOf(typeof(Type));
+ assembly.FindInterfaceSubtypesOf(typeof(TParentType));
public static IEnumerable FindSubtypesOf(this Assembly assembly, Type type) =>
assembly.GetTypes().Where(type.IsAssignableFrom);
@@ -93,10 +96,10 @@ public static IEnumerable FindSubtypesOf(this Assembly assemb
assembly.FindGenericSubtypesOf(typeof(TParentType));
public static IEnumerable FindValueSubtypesOf(this Assembly assembly, Type type) =>
- assembly.FindSubtypesOf(type).Where(subtype => subtype?.IsValueType ?? false);
+ assembly.FindSubtypesOf(type).Where(subtype => subtype.IsValueType);
public static IEnumerable FindValueSubtypesOf(this Assembly assembly) =>
- assembly.FindValueSubtypesOf(typeof(Type));
+ assembly.FindValueSubtypesOf(typeof(TParentType));
public static bool TryFindResource(
this Assembly assembly,
@@ -111,7 +114,7 @@ public static bool TryFindResource(
}
manifestResourceName = assembly.GetManifestResourceNames()
- .FirstOrDefault(name => name?.Contains(resourceName, StringComparison.CurrentCulture) ?? false);
+ .FirstOrDefault(name => name.Contains(resourceName, StringComparison.CurrentCulture));
return manifestResourceName != default;
}
diff --git a/Framework/Intersect.Framework/Reflection/MemberInfoExtensions.cs b/Framework/Intersect.Framework/Reflection/MemberInfoExtensions.cs
index 739af4516c..2b9cc85d60 100755
--- a/Framework/Intersect.Framework/Reflection/MemberInfoExtensions.cs
+++ b/Framework/Intersect.Framework/Reflection/MemberInfoExtensions.cs
@@ -1,5 +1,6 @@
using System.Diagnostics;
using System.Reflection;
+// ReSharper disable MemberCanBePrivate.Global
namespace Intersect.Framework.Reflection;
diff --git a/Framework/Intersect.Framework/Reflection/ReflectionHelper.cs b/Framework/Intersect.Framework/Reflection/ReflectionHelper.cs
index 8c6f3b5dba..1ce5458010 100755
--- a/Framework/Intersect.Framework/Reflection/ReflectionHelper.cs
+++ b/Framework/Intersect.Framework/Reflection/ReflectionHelper.cs
@@ -1,5 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
+// ReSharper disable MemberCanBePrivate.Global
namespace Intersect.Framework.Reflection;
diff --git a/Framework/Intersect.Framework/Reflection/ReflectionStrings.Designer.cs b/Framework/Intersect.Framework/Reflection/ReflectionStrings.Designer.cs
index 6ea1495ad8..616e26defa 100755
--- a/Framework/Intersect.Framework/Reflection/ReflectionStrings.Designer.cs
+++ b/Framework/Intersect.Framework/Reflection/ReflectionStrings.Designer.cs
@@ -11,46 +11,32 @@ namespace Intersect.Framework.Reflection {
using System;
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class ReflectionStrings {
- private static global::System.Resources.ResourceManager resourceMan;
+ private static System.Resources.ResourceManager resourceMan;
- private static global::System.Globalization.CultureInfo resourceCulture;
+ private static System.Globalization.CultureInfo resourceCulture;
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ReflectionStrings() {
}
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static System.Resources.ResourceManager ResourceManager {
get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Intersect.Framework.Reflection.ReflectionStrings", typeof(ReflectionStrings).Assembly);
+ if (object.Equals(null, resourceMan)) {
+ System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Intersect.Framework.Reflection.ReflectionStrings", typeof(ReflectionStrings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
@@ -59,30 +45,51 @@ internal ReflectionStrings() {
}
}
- ///
- /// Looks up a localized string similar to Expected an incomplete type but received {0}..
- ///
+ internal static string UnpackEmbeddedFile_MissingManifestResourceInfo {
+ get {
+ return ResourceManager.GetString("UnpackEmbeddedFile_MissingManifestResourceInfo", resourceCulture);
+ }
+ }
+
+ internal static string UnpackEmbeddedFile_UnableToOpenStream {
+ get {
+ return ResourceManager.GetString("UnpackEmbeddedFile_UnableToOpenStream", resourceCulture);
+ }
+ }
+
internal static string ExpectedAnIncompleteTypeButReceivedX {
get {
return ResourceManager.GetString("ExpectedAnIncompleteTypeButReceivedX", resourceCulture);
}
}
- ///
- /// Looks up a localized string similar to Missing embedded resource: "{0}".
- ///
- internal static string UnpackEmbeddedFile_MissingManifestResourceInfo {
+ internal static string TypeExtensions_FindGenericTypeParameters_NotGeneric {
get {
- return ResourceManager.GetString("UnpackEmbeddedFile_MissingManifestResourceInfo", resourceCulture);
+ return ResourceManager.GetString("TypeExtensions_FindGenericTypeParameters_NotGeneric", resourceCulture);
}
}
- ///
- /// Looks up a localized string similar to Unable to open stream for embedded resource: {0}.
- ///
- internal static string UnpackEmbeddedFile_UnableToOpenStream {
+ internal static string TypeExtensions_FindGenericTypeParameters_NotValidGenericTypeDefinition {
get {
- return ResourceManager.GetString("UnpackEmbeddedFile_UnableToOpenStream", resourceCulture);
+ return ResourceManager.GetString("TypeExtensions_FindGenericTypeParameters_NotValidGenericTypeDefinition", resourceCulture);
+ }
+ }
+
+ internal static string TypeExtensions_FindConcreteType_ExpectedAbstractOrInterface {
+ get {
+ return ResourceManager.GetString("TypeExtensions_FindConcreteType_ExpectedAbstractOrInterface", resourceCulture);
+ }
+ }
+
+ internal static string AssemblyExtensions_NoMatchingSubtype {
+ get {
+ return ResourceManager.GetString("AssemblyExtensions_NoMatchingSubtype", resourceCulture);
+ }
+ }
+
+ internal static string AssemblyExtensions_FailedToCreateInstance {
+ get {
+ return ResourceManager.GetString("AssemblyExtensions_FailedToCreateInstance", resourceCulture);
}
}
}
diff --git a/Framework/Intersect.Framework/Reflection/ReflectionStrings.resx b/Framework/Intersect.Framework/Reflection/ReflectionStrings.resx
index f89382d4f2..2dbcd1322d 100755
--- a/Framework/Intersect.Framework/Reflection/ReflectionStrings.resx
+++ b/Framework/Intersect.Framework/Reflection/ReflectionStrings.resx
@@ -3,7 +3,7 @@
-
+
@@ -27,4 +27,19 @@
Expected an incomplete type but received {0}.
+
+ {0} is not a generic type and does not extend from a generic type.
+
+
+ Not a valid generic type definition: {0}
+
+
+ Expected abstract/interface type, received {0}
+
+
+ Found no matching subtype of {0} that can be created.
+
+
+ Failed to create instance of {0}.
+
\ No newline at end of file
diff --git a/Framework/Intersect.Framework/Reflection/TypeExtensions.cs b/Framework/Intersect.Framework/Reflection/TypeExtensions.cs
index cd12037383..6f45b1f37b 100755
--- a/Framework/Intersect.Framework/Reflection/TypeExtensions.cs
+++ b/Framework/Intersect.Framework/Reflection/TypeExtensions.cs
@@ -4,6 +4,7 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using Microsoft.EntityFrameworkCore;
+// ReSharper disable MemberCanBePrivate.Global
namespace Intersect.Framework.Reflection;
@@ -35,7 +36,7 @@ public static string[] GetMappedColumnNames(this Type type)
{
if (propertyInfo.PropertyType.IsValueType)
{
- return new[] { propertyInfo.Name };
+ return [propertyInfo.Name];
}
if (!propertyInfo.PropertyType.IsClass ||
@@ -136,16 +137,16 @@ public static bool Extends(this Type childType, Type baseType)
bool allLoadedAssemblies = false
)
{
- if (!abstractType.IsAbstract && !abstractType.IsInterface)
+ if (abstractType is { IsAbstract: false, IsInterface: false })
{
throw new ArgumentException(
- $"Expected abstract/interface type, received {abstractType.FullName}",
+ string.Format(ReflectionStrings.TypeExtensions_FindConcreteType_ExpectedAbstractOrInterface, abstractType.FullName),
nameof(abstractType)
);
}
var assembliesToCheck = allLoadedAssemblies ? AppDomain.CurrentDomain.GetAssemblies()
- : new[] { abstractType.Assembly };
+ : [abstractType.Assembly];
var validAssembliesToCheck = assembliesToCheck.Where(assembly => !assembly.IsDynamic);
var allTypes = validAssembliesToCheck.SelectMany(
assembly =>
@@ -156,12 +157,13 @@ public static bool Extends(this Type childType, Type baseType)
}
catch
{
- return Enumerable.Empty();
+ return [];
}
}
);
- var allConcreteTypes = allTypes.Where(type => !type.IsAbstract && !type.IsInterface && !type.IsGenericType);
+ var allConcreteTypes =
+ allTypes.Where(type => type is { IsAbstract: false, IsInterface: false, IsGenericType: false });
var allDescendantTypes = allConcreteTypes.Where(type => type.Extends(abstractType));
var firstPredicateMatch = allDescendantTypes.FirstOrDefault(predicate);
return firstPredicateMatch;
@@ -189,7 +191,7 @@ public static Type[] FindDerivedTypes(this Type type, params Assembly[] assembli
}
}
)
- .SelectMany(type => type.GetProperties())
+ .SelectMany(assemblyType => assemblyType.GetProperties())
.Select(propertyInfo => propertyInfo.PropertyType)
.Where(propertyType => propertyType.Extends(type))
.Distinct()
@@ -202,12 +204,12 @@ public static Type[] FindDerivedTypes(this Type type, params Assembly[] assembli
public static Type? FindGenericType(this Type type, bool throwOnNonGeneric) =>
type.FindGenericType(default, throwOnNonGeneric);
- public static Type? FindGenericType(this Type type, Type genericTypeDefinition, bool throwOnNonGeneric)
+ public static Type? FindGenericType(this Type type, Type? genericTypeDefinition, bool throwOnNonGeneric)
{
- if (genericTypeDefinition != null && !genericTypeDefinition.IsGenericTypeDefinition)
+ if (genericTypeDefinition is { IsGenericTypeDefinition: false })
{
throw new ArgumentException(
- $"Not a valid generic type definition: {genericTypeDefinition.FullName}",
+ string.Format(ReflectionStrings.TypeExtensions_FindGenericTypeParameters_NotValidGenericTypeDefinition, genericTypeDefinition.FullName),
nameof(genericTypeDefinition)
);
}
@@ -249,7 +251,7 @@ public static Type[] FindDerivedTypes(this Type type, params Assembly[] assembli
}
throw new ArgumentException(
- $"{type.FullName} is not a generic type and does not extend from a generic type.",
+ string.Format(ReflectionStrings.TypeExtensions_FindGenericTypeParameters_NotGeneric, type.FullName),
nameof(type)
);
}
@@ -285,7 +287,7 @@ public static Type[] FindDerivedTypes(this Type type, params Assembly[] assembli
}
throw new ArgumentException(
- $"{type.FullName} is not a generic type and does not extend from a generic type.",
+ string.Format(ReflectionStrings.TypeExtensions_FindGenericTypeParameters_NotGeneric, type.FullName),
nameof(type)
);
}
@@ -304,7 +306,10 @@ public static Type[] FindGenericTypeParameters(
if (genericTypeDefinition is { IsGenericTypeDefinition: false })
{
throw new ArgumentException(
- $"Not a valid generic type definition: {genericTypeDefinition.FullName}",
+ string.Format(
+ ReflectionStrings.TypeExtensions_FindGenericTypeParameters_NotValidGenericTypeDefinition,
+ genericTypeDefinition.FullName
+ ),
nameof(genericTypeDefinition)
);
}
@@ -342,18 +347,18 @@ public static Type[] FindGenericTypeParameters(
if (!throwOnNonGeneric)
{
- return Array.Empty();
+ return [];
}
throw new ArgumentException(
- $"{type.FullName} is not a generic type and does not extend from a generic type.",
+ string.Format(ReflectionStrings.TypeExtensions_FindGenericTypeParameters_NotGeneric, type.FullName),
nameof(type)
);
}
public static Type[] FindImplementationsIn(this Type incompleteType, IEnumerable types)
{
- if (!incompleteType.IsAbstract && !incompleteType.IsInterface)
+ if (incompleteType is { IsAbstract: false, IsInterface: false })
{
throw new ArgumentException(
string.Format(ReflectionStrings.ExpectedAnIncompleteTypeButReceivedX, incompleteType.FullName),
diff --git a/Framework/Intersect.Framework/Services/ExceptionHandling/ExceptionHandlingService.cs b/Framework/Intersect.Framework/Services/ExceptionHandling/ExceptionHandlingService.cs
index b63962eddb..4cd78d583b 100644
--- a/Framework/Intersect.Framework/Services/ExceptionHandling/ExceptionHandlingService.cs
+++ b/Framework/Intersect.Framework/Services/ExceptionHandling/ExceptionHandlingService.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
using Intersect.Framework.Eventing;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
@@ -33,6 +34,7 @@ public void DispatchUnhandledException(Exception exception, bool isTerminating)
isTerminating: isTerminating
);
+ [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public void DispatchUnhandledException(object? sender, Exception exception, bool isTerminating) =>
HandleUnhandledTaskException(sender: sender, args: new UnhandledExceptionEventArgs(exception: exception, isTerminating: isTerminating));
diff --git a/Framework/Intersect.Framework/Utilities/BrowserHelper.cs b/Framework/Intersect.Framework/Utilities/BrowserHelper.cs
index 4d0949a338..a798f50d00 100644
--- a/Framework/Intersect.Framework/Utilities/BrowserHelper.cs
+++ b/Framework/Intersect.Framework/Utilities/BrowserHelper.cs
@@ -1,4 +1,5 @@
using System.Diagnostics;
+// ReSharper disable MemberCanBePrivate.Global
namespace Intersect.Framework.Utilities;
diff --git a/Intersect (Core)/Intersect.Core.csproj b/Intersect (Core)/Intersect.Core.csproj
index aaac029f1d..61dfc62cb8 100644
--- a/Intersect (Core)/Intersect.Core.csproj
+++ b/Intersect (Core)/Intersect.Core.csproj
@@ -79,18 +79,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -99,35 +99,35 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/Intersect.Editor/Intersect.Editor.csproj b/Intersect.Editor/Intersect.Editor.csproj
index c4092bc88f..03197b3fd1 100644
--- a/Intersect.Editor/Intersect.Editor.csproj
+++ b/Intersect.Editor/Intersect.Editor.csproj
@@ -8,7 +8,7 @@
true
win-x64
true
- net7.0-windows
+ net8.0-windows
true
enable
SystemAware
diff --git a/Intersect.Editor/Properties/launchSettings.json b/Intersect.Editor/Properties/launchSettings.json
index 84ec999d04..e550976e31 100644
--- a/Intersect.Editor/Properties/launchSettings.json
+++ b/Intersect.Editor/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"Intersect.Editor": {
"commandName": "Project",
- "workingDirectory": "..\\assets\\development\\client"
+ "workingDirectory": "$(ProjectDir)../assets/development/client"
}
}
-}
\ No newline at end of file
+}
diff --git a/Intersect.Server.Core/Intersect.Server.Core.csproj b/Intersect.Server.Core/Intersect.Server.Core.csproj
index 9890a9b8d5..787bb0b860 100644
--- a/Intersect.Server.Core/Intersect.Server.Core.csproj
+++ b/Intersect.Server.Core/Intersect.Server.Core.csproj
@@ -43,17 +43,17 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
+
+
diff --git a/Intersect.Server/Intersect.Server.csproj b/Intersect.Server/Intersect.Server.csproj
index 225f315de5..8ecb3e2ae8 100644
--- a/Intersect.Server/Intersect.Server.csproj
+++ b/Intersect.Server/Intersect.Server.csproj
@@ -81,28 +81,28 @@
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/Intersect.SinglePlayer/Intersect.SinglePlayer.csproj b/Intersect.SinglePlayer/Intersect.SinglePlayer.csproj
index b2567021c1..10d029ab4c 100644
--- a/Intersect.SinglePlayer/Intersect.SinglePlayer.csproj
+++ b/Intersect.SinglePlayer/Intersect.SinglePlayer.csproj
@@ -2,9 +2,6 @@
Exe
- net7.0
- enable
- enable
diff --git a/Intersect.Tests.Client.Framework/Intersect.Tests.Client.Framework.csproj b/Intersect.Tests.Client.Framework/Intersect.Tests.Client.Framework.csproj
index 3c52a71223..e39fb603ed 100644
--- a/Intersect.Tests.Client.Framework/Intersect.Tests.Client.Framework.csproj
+++ b/Intersect.Tests.Client.Framework/Intersect.Tests.Client.Framework.csproj
@@ -1,7 +1,6 @@
- net7.0
Debug;Release;Testing
AnyCPU
diff --git a/Intersect.Tests.Client/Intersect.Tests.Client.csproj b/Intersect.Tests.Client/Intersect.Tests.Client.csproj
index 68c23f3dc0..195a502bed 100644
--- a/Intersect.Tests.Client/Intersect.Tests.Client.csproj
+++ b/Intersect.Tests.Client/Intersect.Tests.Client.csproj
@@ -1,7 +1,6 @@
- net7.0
Debug;Release;Testing
AnyCPU
diff --git a/Intersect.Tests.Editor/Intersect.Tests.Editor.csproj b/Intersect.Tests.Editor/Intersect.Tests.Editor.csproj
index d071f292e7..21312826c3 100644
--- a/Intersect.Tests.Editor/Intersect.Tests.Editor.csproj
+++ b/Intersect.Tests.Editor/Intersect.Tests.Editor.csproj
@@ -1,7 +1,7 @@
- net7.0-windows
+ net8.0-windows
Debug;Release;Testing
AnyCPU
diff --git a/Intersect.Tests.Network/Intersect.Tests.Network.csproj b/Intersect.Tests.Network/Intersect.Tests.Network.csproj
index 554919e65b..93d4bf1590 100644
--- a/Intersect.Tests.Network/Intersect.Tests.Network.csproj
+++ b/Intersect.Tests.Network/Intersect.Tests.Network.csproj
@@ -1,7 +1,6 @@
- net7.0
Debug;Release;Testing
AnyCPU
diff --git a/Intersect.Tests.Server/Intersect.Tests.Server.csproj b/Intersect.Tests.Server/Intersect.Tests.Server.csproj
index ce8e8b067a..9e08299699 100644
--- a/Intersect.Tests.Server/Intersect.Tests.Server.csproj
+++ b/Intersect.Tests.Server/Intersect.Tests.Server.csproj
@@ -1,7 +1,6 @@
- net7.0
Debug;Release;Testing
AnyCPU
diff --git a/Intersect.Tests/Intersect.Tests.csproj b/Intersect.Tests/Intersect.Tests.csproj
index f9a2ff0983..e1f1f88b79 100644
--- a/Intersect.Tests/Intersect.Tests.csproj
+++ b/Intersect.Tests/Intersect.Tests.csproj
@@ -1,7 +1,6 @@
- net7.0
Debug;Release;Testing
AnyCPU
diff --git a/Utilities/Directory.Build.props b/Utilities/Directory.Build.props
index 483e359f6f..e58d7b1f8f 100644
--- a/Utilities/Directory.Build.props
+++ b/Utilities/Directory.Build.props
@@ -1,4 +1,11 @@
+
+
+ $(MSBuildProjectDirectory)\..\..
+
+
+
+
$(MSBuildProjectDirectory)\..\..
diff --git a/Utilities/Intersect.OpenPortChecker/Intersect.OpenPortChecker.csproj b/Utilities/Intersect.OpenPortChecker/Intersect.OpenPortChecker.csproj
index 4515c1d522..a7d487f94f 100644
--- a/Utilities/Intersect.OpenPortChecker/Intersect.OpenPortChecker.csproj
+++ b/Utilities/Intersect.OpenPortChecker/Intersect.OpenPortChecker.csproj
@@ -3,9 +3,6 @@
embedded
Linux
- enable
- enable
- net7.0
partial
diff --git a/vendor/LiteNetLib b/vendor/LiteNetLib
index 8b3f20a07b..96a0fa8897 160000
--- a/vendor/LiteNetLib
+++ b/vendor/LiteNetLib
@@ -1 +1 @@
-Subproject commit 8b3f20a07b7bbec90b665c26f9c88d7507b9a0a2
+Subproject commit 96a0fa8897e192023139e1ca89ba587e411b36b4
diff --git a/vendor/dockpanelsuite b/vendor/dockpanelsuite
index 09e6087fb2..94b2dc0c72 160000
--- a/vendor/dockpanelsuite
+++ b/vendor/dockpanelsuite
@@ -1 +1 @@
-Subproject commit 09e6087fb2d89638b9b10cde505af11c22fb429b
+Subproject commit 94b2dc0c724cb7e5d27aefd3b46125e2b7bdeaf9