From b096d994d1dc61896d41b733a1768fa027c454dc Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Wed, 6 Nov 2024 16:23:32 -0800 Subject: [PATCH 1/9] chore: Introduce class library for eos config. --- .../Runtime/EOS_SDK/Core/Config.cs | 54 ++++++++++--------- .../Runtime/EOS_SDK/Core/Helper.cs | 5 ++ .../DynamicLibraryLoaderHelper/.gitignore | 3 ++ .../DynamicLibraryLoaderHelper.sln | 14 ++++- .../EOSPluginConfig/.gitignore | 8 +++ .../Properties/AssemblyInfo.cs | 36 +++++++++++++ .../Runtime/Core/Application.cs | 29 ++++++++++ .../Runtime/Core/Debug.cs | 48 +++++++++++++++++ .../EOSPluginConfig/packages.config | 4 ++ 9 files changed, 175 insertions(+), 26 deletions(-) create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/.gitignore create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Debug.cs create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/packages.config diff --git a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Config.cs b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Config.cs index e79cba387..19903ef68 100644 --- a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Config.cs +++ b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Config.cs @@ -54,51 +54,57 @@ namespace Epic.OnlineServices // platform support. public static partial class Config { - // This conditional (added by PlayEveryWare) is here (in conjunction with - // the class it is contained within being marked as "partial") so that - // other platforms can be supported by adding to this code-base another - // part of the partial class that sets the LibraryName differently - // depending on the presence of other scripting defines that indicate - // available functionality on other platforms. - #if EOS_PLATFORM_WINDOWS_32 || EOS_PLATFORM_WINDOWS_64 || EOS_PLATFORM_OSX || EOS_PLATFORM_LINUX || EOS_PLATFORM_IOS || EOS_PLATFORM_ANDROID + // This conditional (added by PlayEveryWare) is here (in conjunction with + // the class it is contained within being marked as "partial") so that + // other platforms can be supported by adding to this code-base another + // part of the partial class that sets the LibraryName differently + // depending on the presence of other scripting defines that indicate + // available functionality on other platforms. +#if EOS_PLATFORM_WINDOWS_32 || EOS_PLATFORM_WINDOWS_64 || EOS_PLATFORM_OSX || EOS_PLATFORM_LINUX || EOS_PLATFORM_IOS || EOS_PLATFORM_ANDROID public const string LibraryName = - #if EOS_PLATFORM_WINDOWS_32 && EOS_UNITY +#if EOS_PLATFORM_WINDOWS_32 && EOS_UNITY "EOSSDK-Win32-Shipping" - #elif EOS_PLATFORM_WINDOWS_32 +#elif EOS_PLATFORM_WINDOWS_32 "EOSSDK-Win32-Shipping.dll" - #elif EOS_PLATFORM_WINDOWS_64 && EOS_UNITY +#elif EOS_PLATFORM_WINDOWS_64 && EOS_UNITY "EOSSDK-Win64-Shipping" - #elif EOS_PLATFORM_WINDOWS_64 +#elif EOS_PLATFORM_WINDOWS_64 "EOSSDK-Win64-Shipping.dll" - #elif EOS_PLATFORM_OSX && EOS_UNITY +#elif EOS_PLATFORM_OSX && EOS_UNITY "libEOSSDK-Mac-Shipping" - #elif EOS_PLATFORM_OSX +#elif EOS_PLATFORM_OSX "libEOSSDK-Mac-Shipping.dylib" - #elif EOS_PLATFORM_LINUX && EOS_UNITY +#elif EOS_PLATFORM_LINUX && EOS_UNITY "libEOSSDK-Linux-Shipping" - #elif EOS_PLATFORM_LINUX +#elif EOS_PLATFORM_LINUX "libEOSSDK-Linux-Shipping.so" - #elif EOS_PLATFORM_IOS && EOS_UNITY && EOS_EDITOR +#elif EOS_PLATFORM_IOS && EOS_UNITY && EOS_EDITOR "EOSSDK" - #elif EOS_PLATFORM_IOS +#elif EOS_PLATFORM_IOS "EOSSDK.framework/EOSSDK" - #elif EOS_PLATFORM_ANDROID +#elif EOS_PLATFORM_ANDROID "EOSSDK" - #else - #error Unable to determine the name of the EOSSDK library. Ensure you have set the correct EOS compilation symbol for the current platform, such as EOS_PLATFORM_WINDOWS_32 or EOS_PLATFORM_WINDOWS_64, so that the correct EOSSDK library can be targeted. +#else +#error Unable to determine the name of the EOSSDK library. Ensure you have set the correct EOS compilation symbol for the current platform, such as EOS_PLATFORM_WINDOWS_32 or EOS_PLATFORM_WINDOWS_64, so that the correct EOSSDK library can be targeted. "EOSSDK-UnknownPlatform-Shipping" - #endif +#endif ; - #endif - // PEW: End modify - public const CallingConvention LibraryCallingConvention = +#elif EXTERNAL_TO_UNITY +#if PLATFORM_64 + public const string LibraryName = "EOSSDK-Win64-Shipping.dll"; +#else + public const string LibraryName = "EOSSDK-Win32-Shipping.dll"; +#endif +#endif + // PEW: End modify + public const CallingConvention LibraryCallingConvention = #if EOS_PLATFORM_WINDOWS_32 CallingConvention.StdCall #else diff --git a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs index 6c46ace37..a4f5099ea 100644 --- a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs +++ b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs @@ -630,6 +630,11 @@ private static IntPtr AddPinnedBuffer(Utf8String str) return AddPinnedBuffer(str.Bytes, 0); } + internal static IntPtr AddPinnedBuffer(byte[] array) + { + return AddPinnedBuffer(new ArraySegment(array)); + } + internal static IntPtr AddPinnedBuffer(ArraySegment array) { if (array == null) diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/.gitignore b/lib/NativeCode/DynamicLibraryLoaderHelper/.gitignore new file mode 100644 index 000000000..faf48f0b9 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/.gitignore @@ -0,0 +1,3 @@ +# Exclude nuget packages +packages/* +Build/* \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln index 9e145432e..c86e35926 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln @@ -1,12 +1,14 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31025.194 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34408.163 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DynamicLibraryLoaderHelper", "DynamicLibraryLoaderHelper\DynamicLibraryLoaderHelper.vcxproj", "{3C24168C-C23B-4F82-9E8D-15B900621C93}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GfxPluginNativeRender", "NativeRender\NativeRender.vcxproj", "{251D4477-4C90-4FE1-94A2-52377327D3B2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EOSPluginConfig", "EOSPluginConfig\EOSPluginConfig.csproj", "{7C3CF875-0B42-493F-958B-9D068C8EF018}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -31,6 +33,14 @@ Global {251D4477-4C90-4FE1-94A2-52377327D3B2}.Release|x64.Build.0 = Release|x64 {251D4477-4C90-4FE1-94A2-52377327D3B2}.Release|x86.ActiveCfg = Release|Win32 {251D4477-4C90-4FE1-94A2-52377327D3B2}.Release|x86.Build.0 = Release|Win32 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Debug|x64.ActiveCfg = Debug|x64 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Debug|x64.Build.0 = Debug|x64 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Debug|x86.ActiveCfg = Debug|Win32 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Debug|x86.Build.0 = Debug|Win32 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Release|x64.ActiveCfg = Release|x64 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Release|x64.Build.0 = Release|x64 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Release|x86.ActiveCfg = Release|Win32 + {7C3CF875-0B42-493F-958B-9D068C8EF018}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore new file mode 100644 index 000000000..83f2cdbb5 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore @@ -0,0 +1,8 @@ +Debug/* +Release/* +x64/* +x32/* +bin/ +obj/ +Newtonsoft.Json.dll +Newtonsoft.Json.xml \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..102da59fd --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("EOSPluginConfig")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EOSPluginConfig")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7c3cf875-0b42-493f-958b-9d068c8ef018")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs new file mode 100644 index 000000000..2928d1f08 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 PlayEveryWare + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace PlayEveryWare.EpicOnlineServices +{ + internal class Application + { + public const string streamingAssetsPath = "C:/Users/PaulPEW/dev/repos/eos_plugin_for_unity/Assets/StreamingAssets/"; + } +} diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Debug.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Debug.cs new file mode 100644 index 000000000..9cb298bb1 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Debug.cs @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 PlayEveryWare + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace PlayEveryWare.EpicOnlineServices +{ + using System; + + internal class Debug + { + public static void LogError(string message) + { + Log($"ERROR: {message}"); + } + public static void LogWarning(string message) + { + Log($"WARNING: {message}"); + } + + public static void Log(string message) + { + Console.WriteLine(message); + } + + public static void LogException(Exception e) + { + Console.WriteLine($"An exception was logged. Exception message: \"{e.Message}\"."); + } + } +} \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/packages.config b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/packages.config new file mode 100644 index 000000000..0b14af3ad --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From fcffcdd68bd7e90b0bf4dc014947aa5a1d797610 Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Wed, 6 Nov 2024 17:05:34 -0800 Subject: [PATCH 2/9] chore: Update AssemblyInfo.cs file to include copyright and other information as is appropriate. --- .../EOSPluginConfig/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs index 102da59fd..58d4553fc 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/Properties/AssemblyInfo.cs @@ -6,9 +6,9 @@ // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("EOSPluginConfig")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyDescription("Class Library to expose configuration functionality from within the EOS Plugin for Unity.")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("PlayEveryWare, Inc.")] [assembly: AssemblyProduct("EOSPluginConfig")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] From 525bed7da2bae5843f868557d47dd5b9a61b95fc Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 10:44:01 -0800 Subject: [PATCH 3/9] fix: Introduce props and targets files. --- .../DynamicLibraryLoaderHelper/Directory.Build.props | 6 ++++++ .../Directory.Build.targets | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props new file mode 100644 index 000000000..ec1126115 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props @@ -0,0 +1,6 @@ + + + $(SolutionDir)..\..\..\Assets\StreamingAssets\ + $(SolutionDir)..\..\..\Assets\Plugins\Windows\$(Platform)\ + + \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets new file mode 100644 index 000000000..67ba7665f --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + From fca6458c55c06cf8e92d201bc1683f8f5696363e Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 12:40:36 -0800 Subject: [PATCH 4/9] wip --- .../Directory.Build.props | 6 +- .../Directory.Build.targets | 11 - .../EOSPluginConfig/EOSPluginConfig.csproj | 233 ++++++++++++++++++ .../EOSPluginConfig/ResourceUtility.cs | 50 ++++ .../Runtime/Core/Application.cs | 9 +- .../EOSPluginConfig/config.json | 0 6 files changed, 294 insertions(+), 15 deletions(-) delete mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs create mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props index ec1126115..f77726086 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.props @@ -1,6 +1,8 @@ - $(SolutionDir)..\..\..\Assets\StreamingAssets\ - $(SolutionDir)..\..\..\Assets\Plugins\Windows\$(Platform)\ + + $(SolutionDir.Replace('\', '/')) + $(SolutionDirForwardSlashes)../../../Assets/StreamingAssets/ + $(SolutionDirForwardSlashes)../../../Assets/Plugins/Windows/$(Platform)/ \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets b/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets deleted file mode 100644 index 67ba7665f..000000000 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/Directory.Build.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj new file mode 100644 index 000000000..ce40c7152 --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj @@ -0,0 +1,233 @@ + + + + + Debug + AnyCPU + {7C3CF875-0B42-493F-958B-9D068C8EF018} + Library + Properties + EOSPluginConfig + EOSPluginConfig + v4.8 + 512 + true + + + EOSPluginConfig-x64 + + + EOSPluginConfig-x86 + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + TRACE;DEBUG;EXTERNAL_TO_UNITY;PLATFORM_64;UNITY_STREAMING_ASSETS_DIRECTORY=$(UnityStreamingAssetsDirectory) + full + x64 + 9.0 + prompt + + + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + TRACE;EXTERNAL_TO_UNITY;PLATFORM_64; + true + pdbonly + x64 + 9.0 + prompt + + + true + $(SolutionDir)Build\$(Configuration)\x86\ + $(SolutionDir)Build\$(Configuration)\x86\ + TRACE;DEBUG;EXTERNAL_TO_UNITY;PLATFORM_32; + full + x86 + 9.0 + prompt + + + $(SolutionDir)Build\$(Configuration)\x86\ + $(SolutionDir)Build\$(Configuration)\x86\ + TRACE;EXTERNAL_TO_UNITY;PLATFORM_32; + true + pdbonly + x86 + 9.0 + prompt + + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + Assets\Plugins\Windows\Core\WindowsConfig.cs + + + com.playeveryware.eos\Runtime\Core\Common\Extensions\FileInfoExtensions.cs + + + com.playeveryware.eos\Runtime\Core\Common\Extensions\ListExtensions.cs + + + com.playeveryware.eos\Runtime\Core\Common\Extensions\StringExtensions.cs + + + com.playeveryware.eos\Runtime\Core\Common\Named.cs + + + com.playeveryware.eos\Runtime\Core\Common\SetOfNamed.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\ButtonFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\ConfigFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\ConfigFieldType.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\ConfigGroupAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\DirectoryPathFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\ExpandFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\FieldValidator.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\FieldValidatorAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\FilePathFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\GUIDFieldValidatorAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\NonEmptyStringFieldValidatorAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\PlatformDependentConfigFieldAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Attributes\SandboxIDFieldValidatorAttribute.cs + + + com.playeveryware.eos\Runtime\Core\Config\Config.cs + + + com.playeveryware.eos\Runtime\Core\Config\Deployment.cs + + + com.playeveryware.eos\Runtime\Core\Config\EOSConfig.cs + + + com.playeveryware.eos\Runtime\Core\Config\JsonConverter\ListOfStringsToEnumConverters.cs + + + com.playeveryware.eos\Runtime\Core\Config\JsonConverter\StringToTypeConverter.cs + + + com.playeveryware.eos\Runtime\Core\Config\LogLevelConfig.cs + + + com.playeveryware.eos\Runtime\Core\Config\PlatformConfig.cs + + + com.playeveryware.eos\Runtime\Core\Config\ProductConfig.cs + + + com.playeveryware.eos\Runtime\Core\Config\ProductionEnvironments.cs + + + com.playeveryware.eos\Runtime\Core\Config\RuntimeConfig.cs + + + com.playeveryware.eos\Runtime\Core\Config\SandboxId.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\EOSClientCredentials.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\EventHandlers.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\Extensions\AuthScopeFlagsExtensions.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\Extensions\IntegratedPlatformManagementFlagsExtensions.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\Extensions\PlatformFlagsExtensions.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\FileRequestTransferWrapper.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\IFileTransferRequest.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\PlayerDataStorageFileTransferRequestWrapper.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\TitleStorageFileTransferRequestWrapper.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\WrappedInitializeThreadAffinity.cs + + + com.playeveryware.eos\Runtime\Core\EOS_SDK_Additions\WrappedPlatformFlags.cs + + + com.playeveryware.eos\Runtime\Core\PlatformManager.cs + + + com.playeveryware.eos\Runtime\Core\Utility\EnumUtility.cs + + + com.playeveryware.eos\Runtime\Core\Utility\HashUtility.cs + + + com.playeveryware.eos\Runtime\Core\Utility\FileSystemUtility.cs + + + com.playeveryware.eos\Runtime\Core\Utility\JsonUtility.cs + + + com.playeveryware.eos\Runtime\Core\Utility\LogLevelUtility.cs + + + com.playeveryware.eos\Runtime\Core\Utility\SafeTranslatorUtility.cs + + + + + + com.playeveryware.eos\Runtime\EOS_SDK\%(RecursiveDir)%(Filename)%(Extension) + + + + + + + + + \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs new file mode 100644 index 000000000..0c2cf5a5c --- /dev/null +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 PlayEveryWare + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +using System.IO; +using System.Reflection; + +namespace PlayEveryWare.EpicOnlineServices +{ + public static class ResourceUtility + { + public static string ReadEmbeddedJsonFile(string resourceName) + { + var assembly = Assembly.GetExecutingAssembly(); + + // Adjust the resource name based on your namespace and file location + // Format: "{Namespace}.{Folder}.{FileName}" + string fullResourceName = $"{assembly.GetName().Name}.{resourceName}"; + + using (Stream stream = assembly.GetManifestResourceStream(fullResourceName)) + { + if (stream == null) + throw new FileNotFoundException("Resource not found: " + fullResourceName); + + using (StreamReader reader = new StreamReader(stream)) + { + return reader.ReadToEnd(); + } + } + } + } +} diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs index 2928d1f08..318038f7e 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs @@ -22,8 +22,13 @@ namespace PlayEveryWare.EpicOnlineServices { - internal class Application + internal static class Application { - public const string streamingAssetsPath = "C:/Users/PaulPEW/dev/repos/eos_plugin_for_unity/Assets/StreamingAssets/"; + public static readonly string streamingAssetsPath; + + static Application() + { + + } } } diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json new file mode 100644 index 000000000..e69de29bb From e065b0def50d246c2830a20f62b275317e7594e1 Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 14:06:40 -0800 Subject: [PATCH 5/9] fix: Remove references to specific files - use a config file to set the value at build time. --- .../DynamicLibraryLoaderHelper.sln | 1 + .../EOSPluginConfig/.gitignore | 1 + .../EOSPluginConfig/EOSPluginConfig.csproj | 8 +++++ .../EOSPluginConfig/ResourceUtility.cs | 34 ++++++++++++++++--- .../Runtime/Core/Application.cs | 9 ++--- .../EOSPluginConfig/config.json | 1 + 6 files changed, 42 insertions(+), 12 deletions(-) diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln index b0976f2b1..363102691 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln @@ -8,6 +8,7 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GfxPluginNativeRender", "NativeRender\NativeRender.vcxproj", "{251D4477-4C90-4FE1-94A2-52377327D3B2}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EOSPluginConfig", "EOSPluginConfig\EOSPluginConfig.csproj", "{7C3CF875-0B42-493F-958B-9D068C8EF018}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApplication", "ConsoleApplication\ConsoleApplication.vcxproj", "{D7462EAF-0024-4EA5-9D89-DBBBC7766333}" EndProject Global diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore index 83f2cdbb5..3e6758810 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/.gitignore @@ -4,5 +4,6 @@ x64/* x32/* bin/ obj/ +config.json Newtonsoft.Json.dll Newtonsoft.Json.xml \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj index ce40c7152..088794c50 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj @@ -224,10 +224,18 @@ com.playeveryware.eos\Runtime\EOS_SDK\%(RecursiveDir)%(Filename)%(Extension) + + PreserveNewest + + + + + \ No newline at end of file diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs index 0c2cf5a5c..203139b5b 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs @@ -25,20 +25,33 @@ namespace PlayEveryWare.EpicOnlineServices { + using Newtonsoft.Json; + public static class ResourceUtility { - public static string ReadEmbeddedJsonFile(string resourceName) + private static readonly EmbeddedResourceValues s_values; + + internal class EmbeddedResourceValues + { + public string StreamingAssetsPath { get; set; } + } + + static ResourceUtility() + { + s_values = GetEmbeddedResourceValues(); + } + + private static string ReadEmbeddedJsonFile(string resourceFileName) { var assembly = Assembly.GetExecutingAssembly(); - // Adjust the resource name based on your namespace and file location - // Format: "{Namespace}.{Folder}.{FileName}" - string fullResourceName = $"{assembly.GetName().Name}.{resourceName}"; + // Automatically prepend the assembly name to the resource path + string fullResourceName = $"EOSPluginConfig.{resourceFileName}"; using (Stream stream = assembly.GetManifestResourceStream(fullResourceName)) { if (stream == null) - throw new FileNotFoundException("Resource not found: " + fullResourceName); + throw new FileNotFoundException($"Resource not found: {fullResourceName}"); using (StreamReader reader = new StreamReader(stream)) { @@ -46,5 +59,16 @@ public static string ReadEmbeddedJsonFile(string resourceName) } } } + + private static EmbeddedResourceValues GetEmbeddedResourceValues() + { + string jsonContent = ReadEmbeddedJsonFile("config.json"); + return JsonConvert.DeserializeObject(jsonContent); + } + + public static string GetStreamingAssetsPath() + { + return s_values.StreamingAssetsPath; + } } } diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs index 318038f7e..220c7e631 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/com.playeveryware.eos/Runtime/Core/Application.cs @@ -22,13 +22,8 @@ namespace PlayEveryWare.EpicOnlineServices { - internal static class Application + public static class Application { - public static readonly string streamingAssetsPath; - - static Application() - { - - } + public static readonly string streamingAssetsPath = ResourceUtility.GetStreamingAssetsPath(); } } diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json index e69de29bb..f1f64f4cf 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json @@ -0,0 +1 @@ +{ streamingAssetsPath: "dummyvalue" } From f3d1122a5288283159dd4c81804ce852f4e3ca7e Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 14:16:08 -0800 Subject: [PATCH 6/9] fix: Remove config.json, since it will be overwritten on build. --- .../DynamicLibraryLoaderHelper.vcxproj | 2 +- .../EOSPluginConfig/EOSPluginConfig.csproj | 2 +- .../DynamicLibraryLoaderHelper/EOSPluginConfig/config.json | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.vcxproj b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.vcxproj index 05186edb6..8004becce 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.vcxproj +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.vcxproj @@ -23,7 +23,7 @@ {3C24168C-C23B-4F82-9E8D-15B900621C93} Win32Proj DynamicLibraryLoaderHelper - 10.0 + 10.0.17763.0 diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj index 088794c50..b9fb6d9c6 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/EOSPluginConfig.csproj @@ -23,7 +23,7 @@ true $(SolutionDir)Build\$(Configuration)\$(Platform)\ $(SolutionDir)Build\$(Configuration)\$(Platform)\ - TRACE;DEBUG;EXTERNAL_TO_UNITY;PLATFORM_64;UNITY_STREAMING_ASSETS_DIRECTORY=$(UnityStreamingAssetsDirectory) + TRACE;DEBUG;EXTERNAL_TO_UNITY;PLATFORM_64; full x64 9.0 diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json deleted file mode 100644 index f1f64f4cf..000000000 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/config.json +++ /dev/null @@ -1 +0,0 @@ -{ streamingAssetsPath: "dummyvalue" } From 397024aed8333b494245aab456d19065eafbe856 Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 14:20:25 -0800 Subject: [PATCH 7/9] fix: Add null test and document the addition. --- com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs index a4f5099ea..0db0f84fb 100644 --- a/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs +++ b/com.playeveryware.eos/Runtime/EOS_SDK/Core/Helper.cs @@ -630,10 +630,15 @@ private static IntPtr AddPinnedBuffer(Utf8String str) return AddPinnedBuffer(str.Bytes, 0); } + // PEW: Start Modify + // This function is added because this file is included in a class + // library with a lower supported version of C# that does not allow a + // byte array to be automatically converted into an ArraySegment internal static IntPtr AddPinnedBuffer(byte[] array) { - return AddPinnedBuffer(new ArraySegment(array)); + return array == null ? IntPtr.Zero : AddPinnedBuffer(new ArraySegment(array)); } + // PEW: End Modify internal static IntPtr AddPinnedBuffer(ArraySegment array) { From 3fe5bdd16521fad5f38628b2e8aba7b1bc8e199b Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 14:31:04 -0800 Subject: [PATCH 8/9] fix: Add documentation to new ResourceUtility class. --- .../EOSPluginConfig/ResourceUtility.cs | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs index 203139b5b..7a18e8a18 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/EOSPluginConfig/ResourceUtility.cs @@ -27,20 +27,45 @@ namespace PlayEveryWare.EpicOnlineServices { using Newtonsoft.Json; + /// + /// This class is used to read values from an embedded "config.json" file. + /// public static class ResourceUtility { + /// + /// Private readonly instance of the resource values. + /// private static readonly EmbeddedResourceValues s_values; + /// + /// Kept internal because there are a very limited set of circumstances + /// where these values need to be used. + /// internal class EmbeddedResourceValues { public string StreamingAssetsPath { get; set; } } + /// + /// Static constructor so that the static values can be set properly. + /// static ResourceUtility() { s_values = GetEmbeddedResourceValues(); } + /// + /// Reads an embedded resource file of the given name. + /// + /// + /// The name of the embedded file to read from. + /// + /// + /// The string contents of the indicated embedded resource file. + /// + /// + /// Thrown if the embedded file is not found. + /// private static string ReadEmbeddedJsonFile(string resourceFileName) { var assembly = Assembly.GetExecutingAssembly(); @@ -48,24 +73,34 @@ private static string ReadEmbeddedJsonFile(string resourceFileName) // Automatically prepend the assembly name to the resource path string fullResourceName = $"EOSPluginConfig.{resourceFileName}"; - using (Stream stream = assembly.GetManifestResourceStream(fullResourceName)) - { - if (stream == null) - throw new FileNotFoundException($"Resource not found: {fullResourceName}"); + using Stream stream = assembly.GetManifestResourceStream(fullResourceName); - using (StreamReader reader = new StreamReader(stream)) - { - return reader.ReadToEnd(); - } - } + // Deal with the circumstance where the file does not exist. + if (stream == null) + throw new FileNotFoundException($"Resource not found: {fullResourceName}"); + + using StreamReader reader = new(stream); + return reader.ReadToEnd(); } + /// + /// Gets the embedded resource values. + /// + /// + /// The embedded resources contained within config.json. + /// private static EmbeddedResourceValues GetEmbeddedResourceValues() { string jsonContent = ReadEmbeddedJsonFile("config.json"); return JsonConvert.DeserializeObject(jsonContent); } + /// + /// Gets the streaming assets path. + /// + /// + /// Fully-qualified path to the streaming assets path. + /// public static string GetStreamingAssetsPath() { return s_values.StreamingAssetsPath; From efc838ff417d130090c3406046ca1cced2008ed0 Mon Sep 17 00:00:00 2001 From: Paul Hazen Date: Thu, 7 Nov 2024 14:33:26 -0800 Subject: [PATCH 9/9] fix: Revert version of visual studio indicated in the solution file. --- .../DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln index 363102691..73388a0cb 100644 --- a/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln +++ b/lib/NativeCode/DynamicLibraryLoaderHelper/DynamicLibraryLoaderHelper.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34408.163 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31025.194 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DynamicLibraryLoaderHelper", "DynamicLibraryLoaderHelper\DynamicLibraryLoaderHelper.vcxproj", "{3C24168C-C23B-4F82-9E8D-15B900621C93}" EndProject