From c83dc29f7da9734535b1c3ea906e8e8edf957bc0 Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Wed, 26 Jul 2023 10:37:11 -0500 Subject: [PATCH] [NAK_CVR_Mods] Update for NetStandard2.1 --- Directory.Build.props | 300 ++++++++++++++++++++++++++++++++++------ copy_and_nstrip_dll.ps1 | 158 +++++++++++++++++++++ 2 files changed, 414 insertions(+), 44 deletions(-) create mode 100644 copy_and_nstrip_dll.ps1 diff --git a/Directory.Build.props b/Directory.Build.props index 3a792e4..e4ac903 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,18 +1,14 @@ - - - - - $(CVRPATH)\Mods\ latest false - net472 + netstandard2.1 enable false + false true @@ -34,23 +30,11 @@ 4 - - - - $(MsBuildThisFileDirectory)\.ManagedLibs\BTKUILib.dll - False - - - $(MsBuildThisFileDirectory)\.ManagedLibs\UIExpansionKit.dll - False - - - $(MsBuildThisFileDirectory)\.ManagedLibs\ChatBox.dll - False - - + + + + - $(MsBuildThisFileDirectory)\.ManagedLibs\0Harmony.dll @@ -76,10 +60,6 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Aura2_Core.dll False - - $(MsBuildThisFileDirectory)\.ManagedLibs\AVProVideo.Demos.dll - False - $(MsBuildThisFileDirectory)\.ManagedLibs\AVProVideo.Extensions.Timeline.dll False @@ -104,6 +84,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\AwesomeTechnologies.VegetationStudioPro.Runtime.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\BakeryRuntimeAssembly.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Bhaptics.Tact.dll False @@ -144,14 +128,6 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\DarkRift.dll False - - $(MsBuildThisFileDirectory)\.ManagedLibs\DarkRift.Server.dll - False - - - $(MsBuildThisFileDirectory)\.ManagedLibs\DissonanceVoip.dll - False - $(MsBuildThisFileDirectory)\.ManagedLibs\endel.nativewebsocket.dll False @@ -160,6 +136,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\ICSharpCode.SharpZipLib.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\LibVLCSharp.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\MagicaCloth.dll False @@ -192,8 +172,8 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\mscorlib.dll False - - $(MsBuildThisFileDirectory)\.ManagedLibs\netstandard.dll + + $(MsBuildThisFileDirectory)\.ManagedLibs\MTJobSystem.dll False @@ -208,18 +188,14 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Novell.Directory.Ldap.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Oculus.LipSync.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\PWCommon3DLL.dll False - - $(MsBuildThisFileDirectory)\.ManagedLibs\QHierarchyNullable.dll - False - - - $(MsBuildThisFileDirectory)\.ManagedLibs\QHierarchyRuntime.dll - False - $(MsBuildThisFileDirectory)\.ManagedLibs\SALSA-LipSync.dll False @@ -244,6 +220,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\SteamVR_Actions.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\System.Buffers.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\System.ComponentModel.Composition.dll False @@ -260,6 +240,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\System.Core.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\System.Data.DataSetExtensions.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\System.Data.dll False @@ -304,6 +288,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\System.IO.Compression.FileSystem.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\System.Memory.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\System.Net.Http.dll False @@ -412,6 +400,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UniTask.TextMeshPro.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.AI.Navigation.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Analytics.DataPrivacy.dll False @@ -420,6 +412,22 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Build.SlimPlayerRuntime.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.Cecil.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.Cecil.Mdb.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.Cecil.Pdb.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.Cecil.Rocks.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.dll False @@ -432,6 +440,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Collections.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Collections.LowLevel.ILSupport.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Deformations.dll False @@ -444,10 +456,34 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.Hybrid.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.Hybrid.HybridComponents.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.Hybrid.Tests.SeparateAssembly.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.UI.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InputSystem.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InternalAPIEngineBridge.002.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InternalAPIEngineBridge.003.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InternalAPIEngineBridge.012.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Jobs.dll False @@ -464,6 +500,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Mathematics.Extensions.Hybrid.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.MemoryProfiler.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Platforms.Common.dll False @@ -476,6 +516,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Postprocessing.Runtime.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.ProBuilder.Csg.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.ProBuilder.dll False @@ -492,6 +536,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.ProBuilder.Stl.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Profiling.Core.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Properties.dll False @@ -516,6 +564,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Scenes.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Scenes.Hybrid.dll False @@ -528,6 +580,66 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Serialization.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Analytics.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Analytics.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Configuration.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Device.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Environments.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Environments.Internal.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Internal.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Networking.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Registration.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Scheduler.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Telemetry.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Threading.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Vivox.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Subsystem.Registration.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.TextMeshPro.dll False @@ -548,6 +660,50 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.VectorGraphics.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.Management.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.Oculus.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenVR.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.ConformanceAutomation.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.MetaQuestSupport.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.MockRuntime.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.OculusQuestSupport.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.PICOSupport.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXR.Features.RuntimeDebugger.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.OpenXRPico.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.AccessibilityModule.dll False @@ -592,6 +748,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ClusterRendererModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ContentLoadModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.CoreModule.dll False @@ -616,6 +776,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.GameCenterModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.GIModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.GridModule.dll False @@ -652,6 +816,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.Monetization.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.NVIDIAModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ParticleSystemModule.dll False @@ -672,6 +840,14 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ProfilerModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.PropertiesModule.dll + False + + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ScreenCaptureModule.dll False @@ -680,6 +856,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.SharedInternalsModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.SpatialTracking.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.SpriteMaskModule.dll False @@ -708,10 +888,18 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.TerrainPhysicsModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.TextCoreFontEngineModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.TextCoreModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.TextCoreTextEngineModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.TextRenderingModule.dll False @@ -732,6 +920,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIElementsModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIElementsNativeModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIModule.dll False @@ -744,6 +936,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UNETModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityAnalyticsCommonModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityAnalyticsModule.dll False @@ -752,6 +948,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityConnectModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityCurlModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityTestProtocolModule.dll False @@ -788,6 +988,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.VideoModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.VirtualTexturingModule.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.VRModule.dll False @@ -796,6 +1000,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.WindModule.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.XR.LegacyInputHelpers.dll + False + $(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.XRModule.dll False @@ -804,6 +1012,10 @@ $(MsBuildThisFileDirectory)\.ManagedLibs\Valve.Newtonsoft.Json.dll False + + $(MsBuildThisFileDirectory)\.ManagedLibs\VivoxUnity.dll + False + diff --git a/copy_and_nstrip_dll.ps1 b/copy_and_nstrip_dll.ps1 new file mode 100644 index 0000000..c52ccf1 --- /dev/null +++ b/copy_and_nstrip_dll.ps1 @@ -0,0 +1,158 @@ +# CVR and Melon Loader Dependencies +$0HarmonydllPath = "\MelonLoader\net35\0Harmony.dll" +$melonLoaderdllPath = "\MelonLoader\net35\MelonLoader.dll" +$CecilallPath = "\MelonLoader\net35\Mono.Cecil.dll" +$cvrManagedDataPath = "\ChilloutVR_Data\Managed" + +$cvrPath = $env:CVRPATH +$cvrExecutable = "ChilloutVR.exe" +$cvrDefaultPath = "E:\temp\CVR_Experimental" + +# Array with the dlls to strip +$dllsToStrip = @('Assembly-CSharp.dll','Assembly-CSharp-firstpass.dll','AVProVideo.Runtime.dll', 'Unity.TextMeshPro.dll', 'MagicaCloth.dll') + +# Array with the mods to grab +$modNames = @("BTKUILib", "BTKSAImmersiveHud", "ActionMenu", "MenuScalePatch") + +# Array with dlls to ignore from ManagedLibs +$cvrManagedLibNamesToIgnore = @("netstandard") + +if ($cvrPath -and (Test-Path "$cvrPath\$cvrExecutable")) { + # Found ChilloutVR.exe in the existing CVRPATH + Write-Host "" + Write-Host "Found the ChilloutVR folder on: $cvrPath" +} +else { + # Check if ChilloutVR.exe exists in default Steam location + if (Test-Path "$cvrDefaultPath\$cvrExecutable") { + # Set CVRPATH environment variable to default Steam location + Write-Host "Found the ChilloutVR on the default steam location, setting the CVRPATH Env Var at User Level!" + [Environment]::SetEnvironmentVariable("CVRPATH", $cvrDefaultPath, "User") + $env:CVRPATH = $cvrDefaultPath + $cvrPath = $env:CVRPATH + } + else { + Write-Host "[ERROR] ChilloutVR.exe not found in CVRPATH or the default Steam location." + Write-Host " Please define the Environment Variable CVRPATH pointing to the ChilloutVR folder!" + return + } +} + +$scriptDir = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition +$managedLibsFolder = $scriptDir + "\.ManagedLibs" + +if (!(Test-Path $managedLibsFolder)) { + New-Item -ItemType Directory -Path $managedLibsFolder + Write-Host ".ManagedLibs folder created successfully." +} + +Write-Host "" +Write-Host "Copying the DLLs from the CVR, MelonLoader, and Mods folder to the .ManagedLibs" + + +Copy-Item $cvrPath$0HarmonydllPath -Destination $managedLibsFolder +Copy-Item $cvrPath$melonLoaderdllPath -Destination $managedLibsFolder +Copy-Item $cvrPath$CecilallPath -Destination $managedLibsFolder +Copy-Item $cvrPath$cvrManagedDataPath"\*" -Destination $managedLibsFolder + + +# Saving XML ready libs for the Build.props file +$lib_names_xml = "" +$lib_names_xml += '$(MsBuildThisFileDirectory)\.ManagedLibs\0Harmony.dllFalse' +$lib_names_xml += '$(MsBuildThisFileDirectory)\.ManagedLibs\MelonLoader.dllFalse' +foreach ($file in Get-ChildItem $cvrPath$cvrManagedDataPath"\*") { + if($cvrManagedLibNamesToIgnore -notcontains $file.BaseName) { + $lib_names_xml += "`$(MsBuildThisFileDirectory)\.ManagedLibs\$($file.BaseName).dllFalse" + } +} +$lib_names_xml += "" +$lib_names_xml | Out-File -Encoding UTF8 -FilePath lib_names.xml + + + +# Third Party Dependencies +$melonModsPath="\Mods\" +$missingMods = New-Object System.Collections.Generic.List[string] + + +foreach ($modName in $modNames) { + $modDll = $modName + ".dll" + $modPath = $cvrPath + $melonModsPath + $modDll + $managedLibsModPath = "$managedLibsFolder\$modDll" + + # Attempt to grab from the mods folder + if (Test-Path $modPath -PathType Leaf) { + Write-Host " Copying $modDll from $melonModsPath to \.ManagedLibs!" + Copy-Item $modPath -Destination $managedLibsFolder + } + # Check if they already exist in the .ManagedLibs + elseif (Test-Path $managedLibsModPath -PathType Leaf) { + Write-Host " Ignoring $modDll since already exists in \.ManagedLibs!" + } + # If we fail, lets add to the missing mods list + else { + $missingMods.Add($modName) + } +} + +if ($missingMods.Count -gt 0) { + # If we have missing mods, let's fetch them from the latest CVR Modding Group API + Write-Host "" + Write-Host "Failed to find $($missingMods.Count) mods. We're going to search in CVR MG verified mods" -ForegroundColor Red + Write-Host "You can download them and move to $managedLibsFolder" + + $cvrModdingApiUrl = "https://api.cvrmg.com/v1/mods" + $cvrModdingDownloadUrl = "https://api.cvrmg.com/v1/mods/download/" + $latestModsResponse = Invoke-RestMethod $cvrModdingApiUrl -UseBasicParsing + + foreach ($modName in $missingMods) { + $mod = $latestModsResponse | Where-Object { $_.name -eq $modName } + if ($mod) { + $modDownloadUrl = $cvrModdingDownloadUrl + $($mod._id) + # It seems power shell doesn't like to download .dll from https://api.cvrmg.com (messes with some anti-virus) + # Invoke-WebRequest -Uri $modDownloadUrl -OutFile $managedLibsFolder -UseBasicParsing + # Write-Host " $modName was downloaded successfully to $managedLibsFolder!" + Write-Host " $modName Download Url: $modDownloadUrl" + } else { + Write-Host " $modName was not found in the CVR Modding Group verified mods!" + } + } +} + + +Write-Host "" +Write-Host "Copied all libraries!" +Write-Host "" +Write-Host "Press any key to strip the Dlls using NStrip" +$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL +$HOST.UI.RawUI.Flushinputbuffer() + +Write-Host "NStrip Convert all private/protected stuff to public. Requires true>" + +# Check if NStrip.exe exists in the current directory +if(Test-Path -Path ".\NStrip.exe") { + $nStripPath = ".\NStrip.exe" +} +else { + # Try to locate NStrip.exe in the PATH + $nStripPath = Get-Command -Name NStrip.exe -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Source + if($nStripPath -eq $null) { + # Display an error message if NStrip.exe could not be found + Write-Host "Could not find NStrip.exe in the current directory nor in the PATH." -ForegroundColor Red + Write-Host "Visit https://github.com/bbepis/NStrip/releases/latest to grab a copy." -ForegroundColor Red + return + } +} + +# Loop through each DLL file to strip and call NStrip.exe +foreach($dllFile in $dllsToStrip) { + $dllPath = Join-Path -Path $managedLibsFolder -ChildPath $dllFile + & $nStripPath -p -n $dllPath $dllPath +} + +Write-Host "" +Write-Host "Copied all libraries and stripped the DLLs!" +Write-Host "" +Write-Host "Press any key to exit" +$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL +$HOST.UI.RawUI.Flushinputbuffer()