mirror of
https://github.com/BepInEx/BepInEx.git
synced 2026-10-19 15:51:45 +00:00
Restructure project names and folder layout
This commit is contained in:
1 parent
ae18f16803
commit
f7857c7994
84 files changed
+363
-232
No files matched your search
@@ -3,11 +3,7 @@
|
|||||||
<Description>BepInEx Core library</Description>
|
<Description>BepInEx Core library</Description>
|
||||||
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<AssemblyTitle>BepInEx</AssemblyTitle>
|
<!-- Force nuget assembly output on netstandard2.0 -->
|
||||||
<Product>BepInEx</Product>
|
|
||||||
<OutputPath>..\bin\Core\</OutputPath>
|
|
||||||
<Description>Unity plugin injection framework</Description>
|
|
||||||
<!-- Force nuget assembly output on netstandard2.1 -->
|
|
||||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("BepInEx.Preloader.Core")]
|
[assembly: InternalsVisibleTo("BepInEx.Preloader.Core")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.UnityMono")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.Mono")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.NetLauncher")]
|
[assembly: InternalsVisibleTo("BepInEx.NET.Framework.Launcher")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.NetCore")]
|
[assembly: InternalsVisibleTo("BepInEx.NET.CoreCLR")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.IL2CPP")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.IL2CPP")]
|
||||||
[assembly: InternalsVisibleTo("BepInExTests")]
|
[assembly: InternalsVisibleTo("BepInExTests")]
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFrameworks>netcoreapp3.1;net6</TargetFrameworks>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\BepInEx.NetLauncher.Common\BepInEx.NetLauncher.Common.csproj" />
|
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<Import Project="..\BepInEx.NetLauncher.Shared\BepInEx.NetLauncher.Shared.projitems" Label="Shared" />
|
|
||||||
</Project>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>067bcc8c-fc25-4929-b4f4-c6a5a7496994</ProjectGuid>
|
|
||||||
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
|
|
||||||
<PropertyGroup />
|
|
||||||
<Import Project="BepInEx.NetLauncher.Shared.projitems" Label="Shared" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
|
|
||||||
</Project>
|
|
||||||
@@ -2,9 +2,6 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Description>Core classes and utilities for BepInEx Preloader</Description>
|
<Description>Core classes and utilities for BepInEx Preloader</Description>
|
||||||
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
||||||
<AssemblyTitle>BepInEx.Preloader.Core</AssemblyTitle>
|
|
||||||
<Product>BepInEx.Preloader.Core</Product>
|
|
||||||
<OutputPath>..\bin\Core</OutputPath>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("BepInEx.Preloader.UnityMono")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.Mono.Preloader")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.NetLauncher")]
|
[assembly: InternalsVisibleTo("BepInEx.NET.Framework.Launcher")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.NetCore")]
|
[assembly: InternalsVisibleTo("BepInEx.NET.CoreCLR")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.IL2CPP")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.IL2CPP")]
|
||||||
+28
-32
@@ -10,57 +10,52 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInExTests", "BepInExTest
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Preloader.Core", "BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj", "{15F8BC38-A761-4F93-8903-1B531AC5D9F9}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Preloader.Core", "BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj", "{15F8BC38-A761-4F93-8903-1B531AC5D9F9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.UnityMono", "BepInEx.UnityMono\BepInEx.UnityMono.csproj", "{EAE9FAE6-8011-45A3-8B6E-0C7F14210533}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Unity.Mono", "Runtimes\Unity\BepInEx.Unity.Mono\BepInEx.Unity.Mono.csproj", "{EAE9FAE6-8011-45A3-8B6E-0C7F14210533}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Preloader.UnityMono", "BepInEx.Preloader.UnityMono\BepInEx.Preloader.UnityMono.csproj", "{D404C973-441D-48ED-B266-C21320BA0D87}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Unity.Mono.Preloader", "Runtimes\Unity\BepInEx.Unity.Mono.Preloader\BepInEx.Unity.Mono.Preloader.csproj", "{D404C973-441D-48ED-B266-C21320BA0D87}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Core", "BepInEx.Core\BepInEx.Core.csproj", "{4FFBA620-F5ED-47F9-B90C-DAD1316FD9B9}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Core", "BepInEx.Core\BepInEx.Core.csproj", "{4FFBA620-F5ED-47F9-B90C-DAD1316FD9B9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnityMono", "UnityMono", "{6E2DD21E-0854-4F4A-B925-D90E0016D03D}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mono", "Mono", "{6E2DD21E-0854-4F4A-B925-D90E0016D03D}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NetLauncher", "BepInEx.NetLauncher\BepInEx.NetLauncher.csproj", "{490B052B-7F23-4052-AD04-613856618901}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NET.Framework.Launcher", "Runtimes\NET\BepInEx.NET.Framework.Launcher\BepInEx.NET.Framework.Launcher.csproj", "{490B052B-7F23-4052-AD04-613856618901}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NetFramework", "NetFramework", "{6EC98884-A3DC-4828-85EF-5F10F7519429}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET", "NET", "{6EC98884-A3DC-4828-85EF-5F10F7519429}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IL2CPP", "IL2CPP", "{D5F47CFC-E4F3-46EE-B4F3-2474CF7D9E2C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.Unity.IL2CPP", "Runtimes\Unity\BepInEx.Unity.IL2CPP\BepInEx.Unity.IL2CPP.csproj", "{429D5F83-7FEC-4D09-AB82-E868EB61AF59}"
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.IL2CPP", "BepInEx.IL2CPP\BepInEx.IL2CPP.csproj", "{429D5F83-7FEC-4D09-AB82-E868EB61AF59}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Markdown", "Markdown", "{68C57430-3E92-4B50-A9A5-208FE9CCD914}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Markdown", "Markdown", "{68C57430-3E92-4B50-A9A5-208FE9CCD914}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
README.md = README.md
|
README.md = README.md
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NetLauncher.Common", "BepInEx.NetLauncher.Common\BepInEx.NetLauncher.Common.csproj", "{76EB1952-7826-471C-9CF3-815D094DA077}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NET.Common", "Runtimes\NET\BepInEx.NET.Common\BepInEx.NET.Common.csproj", "{76EB1952-7826-471C-9CF3-815D094DA077}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NetCore", "BepInEx.NetCore\BepInEx.NetCore.csproj", "{08083F40-98AA-4176-BA01-817C18C35C7F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BepInEx.NET.CoreCLR", "Runtimes\NET\BepInEx.NET.CoreCLR\BepInEx.NET.CoreCLR.csproj", "{08083F40-98AA-4176-BA01-817C18C35C7F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BepInEx.NetLauncher.Shared", "BepInEx.NetLauncher.Shared\BepInEx.NetLauncher.Shared.shproj", "{067BCC8C-FC25-4929-B4F4-C6A5A7496994}"
|
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BepInEx.NET.Shared", "Runtimes\NET\BepInEx.NET.Shared\BepInEx.NET.Shared.shproj", "{067BCC8C-FC25-4929-B4F4-C6A5A7496994}"
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{A6DDBD9E-773C-437A-88AA-995BC5FE90DF}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
build.bat = build.bat
|
|
||||||
build.sh = build.sh
|
|
||||||
build.ps1 = build.ps1
|
|
||||||
build.cake = build.cake
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{12081C35-76DF-450C-AC83-1E1CB84516AA}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{12081C35-76DF-450C-AC83-1E1CB84516AA}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
Directory.Build.props = Directory.Build.props
|
Directory.Build.props = Directory.Build.props
|
||||||
EndProjectSection
|
Directory.Build.targets = Directory.Build.targets
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Doorstop", "Doorstop", "{C76B3E16-93A8-4CD7-95A2-18EBF2437001}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
doorstop\doorstop_config_il2cpp.ini = doorstop\doorstop_config_il2cpp.ini
|
|
||||||
doorstop\doorstop_config_mono.ini = doorstop\doorstop_config_mono.ini
|
|
||||||
doorstop\run_bepinex_il2cpp.sh = doorstop\run_bepinex_il2cpp.sh
|
|
||||||
doorstop\run_bepinex_mono.sh = doorstop\run_bepinex_mono.sh
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unity", "Unity", "{BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unity", "Unity", "{BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx.Unity.Core", "BepInEx.Unity.Core\BepInEx.Unity.Core.csproj", "{C32E74A3-C0BD-42DE-9E2F-D033D496ACB9}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx.Unity.Common", "Runtimes\Unity\BepInEx.Unity.Common\BepInEx.Unity.Common.csproj", "{C32E74A3-C0BD-42DE-9E2F-D033D496ACB9}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{8AC60656-4159-4EFA-A43D-B132564697F3}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IL2CPP", "IL2CPP", "{E4E75C18-4156-4213-A20C-8677EF6B5312}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Doorstop", "Doorstop", "{CE06453E-44E7-4D50-9A68-AA15F4C1C8D1}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
Runtimes\Unity\Doorstop\doorstop_config_il2cpp.ini = Runtimes\Unity\Doorstop\doorstop_config_il2cpp.ini
|
||||||
|
Runtimes\Unity\Doorstop\doorstop_config_mono.ini = Runtimes\Unity\Doorstop\doorstop_config_mono.ini
|
||||||
|
Runtimes\Unity\Doorstop\run_bepinex_il2cpp.sh = Runtimes\Unity\Doorstop\run_bepinex_il2cpp.sh
|
||||||
|
Runtimes\Unity\Doorstop\run_bepinex_mono.sh = Runtimes\Unity\Doorstop\run_bepinex_mono.sh
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||||
@@ -83,6 +78,8 @@ Global
|
|||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{8AC60656-4159-4EFA-A43D-B132564697F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8AC60656-4159-4EFA-A43D-B132564697F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Release_NetFramework|Any CPU.ActiveCfg = Release|Any CPU
|
{E7CD429A-D057-48E3-8C51-E5C934E8E07B}.Release_NetFramework|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
@@ -165,16 +162,15 @@ Global
|
|||||||
{EAE9FAE6-8011-45A3-8B6E-0C7F14210533} = {6E2DD21E-0854-4F4A-B925-D90E0016D03D}
|
{EAE9FAE6-8011-45A3-8B6E-0C7F14210533} = {6E2DD21E-0854-4F4A-B925-D90E0016D03D}
|
||||||
{D404C973-441D-48ED-B266-C21320BA0D87} = {6E2DD21E-0854-4F4A-B925-D90E0016D03D}
|
{D404C973-441D-48ED-B266-C21320BA0D87} = {6E2DD21E-0854-4F4A-B925-D90E0016D03D}
|
||||||
{490B052B-7F23-4052-AD04-613856618901} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
{490B052B-7F23-4052-AD04-613856618901} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
||||||
{429D5F83-7FEC-4D09-AB82-E868EB61AF59} = {D5F47CFC-E4F3-46EE-B4F3-2474CF7D9E2C}
|
|
||||||
{76EB1952-7826-471C-9CF3-815D094DA077} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
{76EB1952-7826-471C-9CF3-815D094DA077} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
||||||
{08083F40-98AA-4176-BA01-817C18C35C7F} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
{08083F40-98AA-4176-BA01-817C18C35C7F} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
||||||
{067BCC8C-FC25-4929-B4F4-C6A5A7496994} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
{067BCC8C-FC25-4929-B4F4-C6A5A7496994} = {6EC98884-A3DC-4828-85EF-5F10F7519429}
|
||||||
{68C57430-3E92-4B50-A9A5-208FE9CCD914} = {12081C35-76DF-450C-AC83-1E1CB84516AA}
|
{68C57430-3E92-4B50-A9A5-208FE9CCD914} = {12081C35-76DF-450C-AC83-1E1CB84516AA}
|
||||||
{A6DDBD9E-773C-437A-88AA-995BC5FE90DF} = {12081C35-76DF-450C-AC83-1E1CB84516AA}
|
|
||||||
{C76B3E16-93A8-4CD7-95A2-18EBF2437001} = {12081C35-76DF-450C-AC83-1E1CB84516AA}
|
|
||||||
{D5F47CFC-E4F3-46EE-B4F3-2474CF7D9E2C} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
|
||||||
{6E2DD21E-0854-4F4A-B925-D90E0016D03D} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
{6E2DD21E-0854-4F4A-B925-D90E0016D03D} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
||||||
{C32E74A3-C0BD-42DE-9E2F-D033D496ACB9} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
{C32E74A3-C0BD-42DE-9E2F-D033D496ACB9} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
||||||
|
{E4E75C18-4156-4213-A20C-8677EF6B5312} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
||||||
|
{429D5F83-7FEC-4D09-AB82-E868EB61AF59} = {E4E75C18-4156-4213-A20C-8677EF6B5312}
|
||||||
|
{CE06453E-44E7-4D50-9A68-AA15F4C1C8D1} = {BF8F4E07-3B89-4152-89F4-9EF9D4AAA1E0}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {55AC11EF-F568-4C79-A356-7ED9510145B1}
|
SolutionGuid = {55AC11EF-F568-4C79-A356-7ED9510145B1}
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.IL2CPP\BepInEx.IL2CPP.csproj"/>
|
<ProjectReference Include="..\BepInEx.Unity.IL2CPP\BepInEx.Unity.IL2CPP.csproj"/>
|
||||||
<!-- BepInEx.Unity only targets net35 because that's supported by all mono variants. -->
|
<!-- BepInEx.Unity only targets net35 because that's supported by all mono variants. -->
|
||||||
<ProjectReference Include="..\BepInEx.UnityMono\BepInEx.UnityMono.csproj"/>
|
<ProjectReference Include="..\Runtimes\Unity\BepInEx.Unity.Mono\BepInEx.Unity.Mono.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -4,6 +4,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using BepInEx.Unity.Mono.Configuration;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using UEC::UnityEngine;
|
using UEC::UnityEngine;
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,14 @@
|
|||||||
<RepositoryUrl>https://github.com/BepInEx/BepInEx</RepositoryUrl>
|
<RepositoryUrl>https://github.com/BepInEx/BepInEx</RepositoryUrl>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<Copyright>Copyright © 2022 BepInEx Team</Copyright>
|
<Copyright>Copyright © 2022 BepInEx Team</Copyright>
|
||||||
<PackageOutputPath>../bin/NuGet</PackageOutputPath>
|
<BuildDir>$(SolutionDir)bin</BuildDir>
|
||||||
|
<PackageOutputPath>$(BuildDir)/NuGet</PackageOutputPath>
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\assets\logo.png" Pack="true" Visible="false" PackagePath=""/>
|
<None Include="$(SolutionDir)\Assets\logos\logo.png" Pack="true" Visible="false" PackagePath=""/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup Condition="'$(DistributionIdentifier)' != ''">
|
||||||
|
<OutDir>$(BuildDir)/$(DistributionIdentifier)/</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
+1
-1
@@ -2,7 +2,7 @@ using BepInEx.Configuration;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher.Common
|
namespace BepInEx.NET.Common
|
||||||
{
|
{
|
||||||
public abstract class BasePlugin
|
public abstract class BasePlugin
|
||||||
{
|
{
|
||||||
+2
-2
@@ -10,8 +10,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using System.Reflection;
|
|||||||
using BepInEx.Bootstrap;
|
using BepInEx.Bootstrap;
|
||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher.Common
|
namespace BepInEx.NET.Common
|
||||||
{
|
{
|
||||||
public class NetChainloader : BaseChainloader<BasePlugin>
|
public class NetChainloader : BaseChainloader<BasePlugin>
|
||||||
{
|
{
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
|
<DistributionIdentifier>NET.CoreCLR</DistributionIdentifier>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\BepInEx.NET.Common\BepInEx.NET.Common.csproj"/>
|
||||||
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="..\BepInEx.NET.Shared\BepInEx.NET.Shared.projitems" Label="Shared"/>
|
||||||
|
</Project>
|
||||||
+3
-3
@@ -3,8 +3,8 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.NetCore;
|
using BepInEx.NET.CoreCLR;
|
||||||
using BepInEx.NetLauncher.Shared;
|
using BepInEx.NET.Shared;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
|
|
||||||
internal class StartupHook
|
internal class StartupHook
|
||||||
@@ -139,7 +139,7 @@ internal class StartupHook
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace BepInEx.NetCore
|
namespace BepInEx.NET.CoreCLR
|
||||||
{
|
{
|
||||||
internal static class NetCorePreloaderRunner
|
internal static class NetCorePreloaderRunner
|
||||||
{
|
{
|
||||||
+2
-2
@@ -4,13 +4,13 @@ using System.IO;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using BepInEx.Bootstrap;
|
using BepInEx.Bootstrap;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.NetLauncher.Common;
|
using BepInEx.NET.Common;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
using BepInEx.Preloader.Core.Patching;
|
using BepInEx.Preloader.Core.Patching;
|
||||||
using Mono.Cecil;
|
using Mono.Cecil;
|
||||||
|
|
||||||
namespace BepInEx.NetCore
|
namespace BepInEx.NET.CoreCLR
|
||||||
{
|
{
|
||||||
internal class NetCorePreloader
|
internal class NetCorePreloader
|
||||||
{
|
{
|
||||||
File renamed without changes.
+5
-7
@@ -4,20 +4,18 @@
|
|||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net452</TargetFramework>
|
<TargetFramework>net452</TargetFramework>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<AssemblyTitle>BepInEx.NetLauncher</AssemblyTitle>
|
|
||||||
<Product>BepInEx.NetLauncher</Product>
|
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
<OutputPath>..\bin\NetLauncher\</OutputPath>
|
<DistributionIdentifier>NET.Framework</DistributionIdentifier>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.NetLauncher.Common\BepInEx.NetLauncher.Common.csproj"/>
|
<ProjectReference Include="..\BepInEx.NET.Common\BepInEx.NET.Common.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="HarmonyX" Version="2.10.0"/>
|
<PackageReference Include="HarmonyX" Version="2.10.0"/>
|
||||||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="..\BepInEx.NetLauncher.Shared\BepInEx.NetLauncher.Shared.projitems" Label="Shared"/>
|
<Import Project="..\BepInEx.NET.Shared\BepInEx.NET.Shared.projitems" Label="Shared"/>
|
||||||
</Project>
|
</Project>
|
||||||
+3
-3
@@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
|
|||||||
using BepInEx.Bootstrap;
|
using BepInEx.Bootstrap;
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.NetLauncher.Common;
|
using BepInEx.NET.Common;
|
||||||
using BepInEx.NetLauncher.RuntimeFixes;
|
using BepInEx.NET.Framework.Launcher.RuntimeFixes;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
using BepInEx.Preloader.Core.Patching;
|
using BepInEx.Preloader.Core.Patching;
|
||||||
@@ -16,7 +16,7 @@ using HarmonyLib;
|
|||||||
using Mono.Cecil;
|
using Mono.Cecil;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher;
|
namespace BepInEx.NET.Framework.Launcher;
|
||||||
|
|
||||||
public static class NetPreloader
|
public static class NetPreloader
|
||||||
{
|
{
|
||||||
+2
-2
@@ -3,10 +3,10 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.NetLauncher.Shared;
|
using BepInEx.NET.Shared;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher;
|
namespace BepInEx.NET.Framework.Launcher;
|
||||||
|
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
+1
-1
@@ -5,7 +5,7 @@ using System.Reflection;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher.RuntimeFixes;
|
namespace BepInEx.NET.Framework.Launcher.RuntimeFixes;
|
||||||
|
|
||||||
internal class AssemblyFixes
|
internal class AssemblyFixes
|
||||||
{
|
{
|
||||||
File renamed without changes.
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>067bcc8c-fc25-4929-b4f4-c6a5a7496994</ProjectGuid>
|
||||||
|
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"/>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props"/>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props"/>
|
||||||
|
<PropertyGroup/>
|
||||||
|
<Import Project="BepInEx.NetLauncher.Shared.projitems" Label="Shared"/>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets"/>
|
||||||
|
</Project>
|
||||||
+7
-5
@@ -9,16 +9,18 @@ using System.Reflection;
|
|||||||
// and placing this logic inside of an external assembly will cause a crash.
|
// and placing this logic inside of an external assembly will cause a crash.
|
||||||
// A shared project is the only way to deduplicate code here
|
// A shared project is the only way to deduplicate code here
|
||||||
|
|
||||||
namespace BepInEx.NetLauncher.Shared
|
namespace BepInEx.NET.Shared
|
||||||
{
|
{
|
||||||
internal static class SharedEntrypoint
|
internal static class SharedEntrypoint
|
||||||
{
|
{
|
||||||
public static ResolveEventHandler RemoteResolve(List<string> resolveDirectories)
|
public static ResolveEventHandler RemoteResolve(List<string> resolveDirectories)
|
||||||
{
|
{
|
||||||
return (sender, args) => RemoteResolveInternal(sender, args, resolveDirectories);
|
return (sender, args) => RemoteResolveInternal(sender, args, resolveDirectories);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Assembly RemoteResolveInternal(object sender, ResolveEventArgs reference, List<string> resolveDirectories)
|
private static Assembly RemoteResolveInternal(object sender,
|
||||||
|
ResolveEventArgs reference,
|
||||||
|
List<string> resolveDirectories)
|
||||||
{
|
{
|
||||||
var assemblyName = new AssemblyName(reference.Name);
|
var assemblyName = new AssemblyName(reference.Name);
|
||||||
|
|
||||||
@@ -60,7 +62,7 @@ namespace BepInEx.NetLauncher.Shared
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Assembly LocalResolve(object sender, ResolveEventArgs args)
|
public static Assembly LocalResolve(object sender, ResolveEventArgs args)
|
||||||
{
|
{
|
||||||
var assemblyName = new AssemblyName(args.Name);
|
var assemblyName = new AssemblyName(args.Name);
|
||||||
File renamed without changes.
@@ -6,11 +6,11 @@ using System.Text;
|
|||||||
using AssetRipper.VersionUtilities;
|
using AssetRipper.VersionUtilities;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("BepInEx.Preloader.UnityMono")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.Mono.Preloader")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.UnityMono")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.Mono")]
|
||||||
[assembly: InternalsVisibleTo("BepInEx.IL2CPP")]
|
[assembly: InternalsVisibleTo("BepInEx.Unity.IL2CPP")]
|
||||||
|
|
||||||
namespace BepInEx.Unity.Core;
|
namespace BepInEx.Unity.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Various information about the currently executing Unity player.
|
/// Various information about the currently executing Unity player.
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using Il2CppInterop.Runtime.InteropTypes;
|
using Il2CppInterop.Runtime.InteropTypes;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP;
|
namespace BepInEx.Unity.IL2CPP;
|
||||||
|
|
||||||
public abstract class BasePlugin
|
public abstract class BasePlugin
|
||||||
{
|
{
|
||||||
+4
-6
@@ -3,16 +3,14 @@
|
|||||||
<Description>BepInEx support library for Il2Cpp games</Description>
|
<Description>BepInEx support library for Il2Cpp games</Description>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
<AssemblyTitle>BepInEx.IL2CPP</AssemblyTitle>
|
|
||||||
<Product>BepInEx.IL2CPP</Product>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<OutputPath>..\bin\IL2CPP\</OutputPath>
|
<DistributionIdentifier>Unity.IL2CPP</DistributionIdentifier>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
||||||
<ProjectReference Include="..\BepInEx.Unity.Core\BepInEx.Unity.Core.csproj"/>
|
<ProjectReference Include="..\BepInEx.Unity.Common\BepInEx.Unity.Common.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="HarmonyX" Version="2.10.0"/>
|
<PackageReference Include="HarmonyX" Version="2.10.0"/>
|
||||||
+5
-3
@@ -3,11 +3,12 @@ using System.Diagnostics;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using BepInEx;
|
using BepInEx;
|
||||||
using BepInEx.IL2CPP;
|
|
||||||
using BepInEx.IL2CPP.Utils;
|
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
|
using BepInEx.Unity.IL2CPP;
|
||||||
|
using BepInEx.Unity.IL2CPP.Utils;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
|
// ReSharper disable once CheckNamespace
|
||||||
namespace Doorstop;
|
namespace Doorstop;
|
||||||
|
|
||||||
internal static class Entrypoint
|
internal static class Entrypoint
|
||||||
@@ -18,7 +19,8 @@ internal static class Entrypoint
|
|||||||
public static void Start()
|
public static void Start()
|
||||||
{
|
{
|
||||||
// We set it to the current directory first as a fallback, but try to use the same location as the .exe file.
|
// We set it to the current directory first as a fallback, but try to use the same location as the .exe file.
|
||||||
var silentExceptionLog = Environment.GetEnvironmentVariable("BEPINEX_PRELOADER_LOG") ?? $"preloader_{DateTime.Now:yyyyMMdd_HHmmss_fff}.log";
|
var silentExceptionLog = Environment.GetEnvironmentVariable("BEPINEX_PRELOADER_LOG") ??
|
||||||
|
$"preloader_{DateTime.Now:yyyyMMdd_HHmmss_fff}.log";
|
||||||
Mutex mutex = null;
|
Mutex mutex = null;
|
||||||
|
|
||||||
try
|
try
|
||||||
+1
-1
@@ -4,7 +4,7 @@ using System.Runtime.InteropServices;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using MonoMod.RuntimeDetour;
|
using MonoMod.RuntimeDetour;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook;
|
namespace BepInEx.Unity.IL2CPP.Hook;
|
||||||
|
|
||||||
internal abstract class BaseNativeDetour<T> : INativeDetour where T : BaseNativeDetour<T>
|
internal abstract class BaseNativeDetour<T> : INativeDetour where T : BaseNativeDetour<T>
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook.Dobby;
|
namespace BepInEx.Unity.IL2CPP.Hook.Dobby;
|
||||||
|
|
||||||
internal class DobbyDetour : BaseNativeDetour<DobbyDetour>
|
internal class DobbyDetour : BaseNativeDetour<DobbyDetour>
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook.Dobby;
|
namespace BepInEx.Unity.IL2CPP.Hook.Dobby;
|
||||||
|
|
||||||
internal static unsafe class DobbyLib
|
internal static unsafe class DobbyLib
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook.Funchook;
|
namespace BepInEx.Unity.IL2CPP.Hook.Funchook;
|
||||||
|
|
||||||
internal class FunchookDetour : BaseNativeDetour<FunchookDetour>
|
internal class FunchookDetour : BaseNativeDetour<FunchookDetour>
|
||||||
{
|
{
|
||||||
+1
-3
@@ -1,8 +1,6 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using BepInEx.IL2CPP.Utils;
|
|
||||||
using Il2CppSystem.IO;
|
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook.Funchook;
|
namespace BepInEx.Unity.IL2CPP.Hook.Funchook;
|
||||||
|
|
||||||
internal enum FunchookResult
|
internal enum FunchookResult
|
||||||
{
|
{
|
||||||
+4
-4
@@ -1,14 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.IL2CPP.Hook.Dobby;
|
using BepInEx.Unity.IL2CPP.Hook.Dobby;
|
||||||
using BepInEx.IL2CPP.Hook.Funchook;
|
using BepInEx.Unity.IL2CPP.Hook.Funchook;
|
||||||
using MonoMod.RuntimeDetour;
|
using MonoMod.RuntimeDetour;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook;
|
namespace BepInEx.Unity.IL2CPP.Hook;
|
||||||
|
|
||||||
public interface INativeDetour : IDetour
|
public interface INativeDetour : IDetour
|
||||||
{
|
{
|
||||||
@@ -38,6 +37,7 @@ public interface INativeDetour : IDetour
|
|||||||
{
|
{
|
||||||
return new CacheDetourWrapper(detour, target);
|
return new CacheDetourWrapper(detour, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
return detour;
|
return detour;
|
||||||
}
|
}
|
||||||
|
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
using Il2CppInterop.Runtime.Injection;
|
using System;
|
||||||
using System;
|
using Il2CppInterop.Runtime.Injection;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Hook;
|
namespace BepInEx.Unity.IL2CPP.Hook;
|
||||||
|
|
||||||
internal class Il2CppInteropDetourProvider : IDetourProvider
|
internal class Il2CppInteropDetourProvider : IDetourProvider
|
||||||
{
|
{
|
||||||
+4
-8
@@ -1,23 +1,19 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using BepInEx.Bootstrap;
|
using BepInEx.Bootstrap;
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.IL2CPP.Hook;
|
|
||||||
using BepInEx.IL2CPP.Logging;
|
|
||||||
using BepInEx.IL2CPP.Utils;
|
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
|
using BepInEx.Unity.IL2CPP.Hook;
|
||||||
|
using BepInEx.Unity.IL2CPP.Logging;
|
||||||
|
using BepInEx.Unity.IL2CPP.Utils;
|
||||||
using Il2CppInterop.Runtime.InteropTypes;
|
using Il2CppInterop.Runtime.InteropTypes;
|
||||||
using MonoMod.Utils;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = BepInEx.Logging.Logger;
|
using Logger = BepInEx.Logging.Logger;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP;
|
namespace BepInEx.Unity.IL2CPP;
|
||||||
|
|
||||||
public class IL2CPPChainloader : BaseChainloader<BasePlugin>
|
public class IL2CPPChainloader : BaseChainloader<BasePlugin>
|
||||||
{
|
{
|
||||||
+4
-4
@@ -9,10 +9,10 @@ using System.Security.Cryptography;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.IL2CPP.Hook;
|
|
||||||
using BepInEx.IL2CPP.Logging;
|
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.Unity.Core;
|
using BepInEx.Unity.Common;
|
||||||
|
using BepInEx.Unity.IL2CPP.Hook;
|
||||||
|
using BepInEx.Unity.IL2CPP.Logging;
|
||||||
using Cpp2IL.Core;
|
using Cpp2IL.Core;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using Il2CppInterop.Common;
|
using Il2CppInterop.Common;
|
||||||
@@ -27,7 +27,7 @@ using MonoMod.Utils;
|
|||||||
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
||||||
using MSLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory;
|
using MSLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP;
|
namespace BepInEx.Unity.IL2CPP;
|
||||||
|
|
||||||
internal static class Il2CppInteropManager
|
internal static class Il2CppInteropManager
|
||||||
{
|
{
|
||||||
+1
-1
@@ -5,7 +5,7 @@ using Microsoft.Extensions.Logging;
|
|||||||
using BepInExLogLevel = BepInEx.Logging.LogLevel;
|
using BepInExLogLevel = BepInEx.Logging.LogLevel;
|
||||||
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Logging;
|
namespace BepInEx.Unity.IL2CPP.Logging;
|
||||||
|
|
||||||
internal class BepInExLoggerProvider : ILoggerProvider
|
internal class BepInExLoggerProvider : ILoggerProvider
|
||||||
{
|
{
|
||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Logging;
|
namespace BepInEx.Unity.IL2CPP.Logging;
|
||||||
|
|
||||||
public class IL2CPPLogSource : ILogSource
|
public class IL2CPPLogSource : ILogSource
|
||||||
{
|
{
|
||||||
+1
-1
@@ -2,7 +2,7 @@ using System;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Logging;
|
namespace BepInEx.Unity.IL2CPP.Logging;
|
||||||
|
|
||||||
public class IL2CPPUnityLogSource : ILogSource
|
public class IL2CPPUnityLogSource : ILogSource
|
||||||
{
|
{
|
||||||
@@ -7,9 +7,9 @@ using BepInEx.Preloader.Core;
|
|||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
using BepInEx.Preloader.Core.Patching;
|
using BepInEx.Preloader.Core.Patching;
|
||||||
using BepInEx.Preloader.RuntimeFixes;
|
using BepInEx.Preloader.RuntimeFixes;
|
||||||
using BepInEx.Unity.Core;
|
using BepInEx.Unity.Common;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP;
|
namespace BepInEx.Unity.IL2CPP;
|
||||||
|
|
||||||
public static class Preloader
|
public static class Preloader
|
||||||
{
|
{
|
||||||
-1
@@ -31,7 +31,6 @@ internal static class RedirectStdErrFix
|
|||||||
{
|
{
|
||||||
if (PlatformHelper.Is(Platform.Windows))
|
if (PlatformHelper.Is(Platform.Windows))
|
||||||
{
|
{
|
||||||
Logger.Log(LogLevel.Info, "Redirecting stderr");
|
|
||||||
var errorFile = CreateFile(Path.Combine(Paths.BepInExRootPath, "ErrorLog.log"), GENERIC_WRITE,
|
var errorFile = CreateFile(Path.Combine(Paths.BepInExRootPath, "ErrorLog.log"), GENERIC_WRITE,
|
||||||
FILE_SHARE_READ,
|
FILE_SHARE_READ,
|
||||||
0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
namespace BepInEx.IL2CPP.UnityEngine;
|
namespace BepInEx.Unity.IL2CPP.UnityEngine;
|
||||||
|
|
||||||
public enum KeyCode
|
public enum KeyCode
|
||||||
{
|
{
|
||||||
+1
-1
@@ -4,7 +4,7 @@ using System.Linq;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP;
|
namespace BepInEx.Unity.IL2CPP;
|
||||||
|
|
||||||
internal static class UnityPreloaderRunner
|
internal static class UnityPreloaderRunner
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
using Il2CppSystem.Collections;
|
using Il2CppSystem.Collections;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils.Collections;
|
namespace BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
|
|
||||||
public static class CollectionExtensions
|
public static class CollectionExtensions
|
||||||
{
|
{
|
||||||
+1
-1
@@ -5,7 +5,7 @@ using ArgumentNullException = System.ArgumentNullException;
|
|||||||
using IEnumerator = Il2CppSystem.Collections.IEnumerator;
|
using IEnumerator = Il2CppSystem.Collections.IEnumerator;
|
||||||
using IntPtr = System.IntPtr;
|
using IntPtr = System.IntPtr;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils.Collections;
|
namespace BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
|
|
||||||
public class Il2CppManagedEnumerable : Object
|
public class Il2CppManagedEnumerable : Object
|
||||||
{
|
{
|
||||||
+1
-1
@@ -11,7 +11,7 @@ using IntPtr = System.IntPtr;
|
|||||||
using NotSupportedException = System.NotSupportedException;
|
using NotSupportedException = System.NotSupportedException;
|
||||||
using Type = System.Type;
|
using Type = System.Type;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils.Collections;
|
namespace BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
|
|
||||||
public class Il2CppManagedEnumerator : Object
|
public class Il2CppManagedEnumerator : Object
|
||||||
{
|
{
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils.Collections;
|
namespace BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
|
|
||||||
public class ManagedIl2CppEnumerable : IEnumerable
|
public class ManagedIl2CppEnumerable : IEnumerable
|
||||||
{
|
{
|
||||||
+1
-2
@@ -1,9 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using MonoMod.Utils;
|
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils.Collections;
|
namespace BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
|
|
||||||
public class ManagedIl2CppEnumerator : IEnumerator
|
public class ManagedIl2CppEnumerator : IEnumerator
|
||||||
{
|
{
|
||||||
+1
-1
@@ -4,7 +4,7 @@ using Il2CppInterop.Runtime.Injection;
|
|||||||
using Il2CppInterop.Runtime.InteropTypes;
|
using Il2CppInterop.Runtime.InteropTypes;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils;
|
namespace BepInEx.Unity.IL2CPP.Utils;
|
||||||
|
|
||||||
internal static class Il2CppUtils
|
internal static class Il2CppUtils
|
||||||
{
|
{
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using System.ComponentModel;
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils;
|
namespace BepInEx.Unity.IL2CPP.Utils;
|
||||||
|
|
||||||
internal static class MessageBox
|
internal static class MessageBox
|
||||||
{
|
{
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using BepInEx.IL2CPP.Utils.Collections;
|
using BepInEx.Unity.IL2CPP.Utils.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils;
|
namespace BepInEx.Unity.IL2CPP.Utils;
|
||||||
|
|
||||||
public static class MonoBehaviourExtensions
|
public static class MonoBehaviourExtensions
|
||||||
{
|
{
|
||||||
+3
-3
@@ -2,12 +2,14 @@ using System;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace BepInEx.IL2CPP.Utils;
|
namespace BepInEx.Unity.IL2CPP.Utils;
|
||||||
|
|
||||||
internal static class NotifySend
|
internal static class NotifySend
|
||||||
{
|
{
|
||||||
private const string EXECUTABLE_NAME = "notify-send";
|
private const string EXECUTABLE_NAME = "notify-send";
|
||||||
|
|
||||||
|
public static bool IsSupported => Find(EXECUTABLE_NAME) != null;
|
||||||
|
|
||||||
private static string Find(string fileName)
|
private static string Find(string fileName)
|
||||||
{
|
{
|
||||||
if (File.Exists(fileName))
|
if (File.Exists(fileName))
|
||||||
@@ -27,8 +29,6 @@ internal static class NotifySend
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsSupported => Find(EXECUTABLE_NAME) != null;
|
|
||||||
|
|
||||||
public static void Send(string summary, string body)
|
public static void Send(string summary, string body)
|
||||||
{
|
{
|
||||||
if (!IsSupported) throw new NotSupportedException();
|
if (!IsSupported) throw new NotSupportedException();
|
||||||
File renamed without changes.
+4
-7
@@ -1,20 +1,17 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
||||||
<AssemblyTitle>BepInEx.Preloader.UnityMono</AssemblyTitle>
|
|
||||||
<Product>BepInEx.Preloader.UnityMono</Product>
|
|
||||||
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
|
||||||
<RootNamespace>BepInEx.Preloader.UnityMono</RootNamespace>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net35'">
|
<PropertyGroup Condition="'$(TargetFramework)' == 'net35'">
|
||||||
<!-- Output only net35 version to distribution; netstadnard is only used for generating NuGet package -->
|
<!-- Output only net35 version to distribution; netstadnard is only used for generating NuGet package -->
|
||||||
<OutputPath>..\bin\UnityMono\</OutputPath>
|
<DistributionIdentifier>Unity.IL2CPP</DistributionIdentifier>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Unity.Core\BepInEx.Unity.Core.csproj"/>
|
<ProjectReference Include="..\BepInEx.Unity.Common\BepInEx.Unity.Common.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
using BepInEx.Preloader.UnityMono;
|
using BepInEx.Unity.Mono.Preloader;
|
||||||
|
|
||||||
// ReSharper disable once CheckNamespace
|
// ReSharper disable once CheckNamespace
|
||||||
namespace Doorstop;
|
namespace Doorstop;
|
||||||
@@ -25,7 +25,7 @@ internal static class Entrypoint
|
|||||||
|
|
||||||
// In some versions of Unity 4, Mono tries to resolve BepInEx.dll prematurely because of the call to Paths.SetExecutablePath
|
// In some versions of Unity 4, Mono tries to resolve BepInEx.dll prematurely because of the call to Paths.SetExecutablePath
|
||||||
// To prevent that, we have to use reflection and a separate startup class so that we can install required assembly resolvers before the main code
|
// To prevent that, we have to use reflection and a separate startup class so that we can install required assembly resolvers before the main code
|
||||||
typeof(Entrypoint).Assembly.GetType($"BepInEx.Preloader.UnityMono.{nameof(UnityPreloaderRunner)}")
|
typeof(Entrypoint).Assembly.GetType($"BepInEx.Unity.Mono.Preloader.{nameof(UnityPreloaderRunner)}")
|
||||||
?.GetMethod(nameof(UnityPreloaderRunner.PreloaderPreMain))
|
?.GetMethod(nameof(UnityPreloaderRunner.PreloaderPreMain))
|
||||||
?.Invoke(null, null);
|
?.Invoke(null, null);
|
||||||
}
|
}
|
||||||
+3
-3
@@ -6,11 +6,11 @@ using BepInEx.Bootstrap;
|
|||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.Preloader.Core.Patching;
|
using BepInEx.Preloader.Core.Patching;
|
||||||
using BepInEx.Unity.Core;
|
using BepInEx.Unity.Common;
|
||||||
using Mono.Cecil;
|
using Mono.Cecil;
|
||||||
using Mono.Cecil.Cil;
|
using Mono.Cecil.Cil;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono;
|
namespace BepInEx.Unity.Mono.Preloader;
|
||||||
|
|
||||||
[PatcherPluginInfo("io.bepinex.entrypointpatcher", "BepInEx Entrypoint", "1.0")]
|
[PatcherPluginInfo("io.bepinex.entrypointpatcher", "BepInEx Entrypoint", "1.0")]
|
||||||
internal class EntrypointPatcher : BasePatcher
|
internal class EntrypointPatcher : BasePatcher
|
||||||
@@ -60,7 +60,7 @@ internal class EntrypointPatcher : BasePatcher
|
|||||||
if (entryType == null)
|
if (entryType == null)
|
||||||
throw new Exception("The entrypoint type is invalid! Please check your config/BepInEx.cfg file");
|
throw new Exception("The entrypoint type is invalid! Please check your config/BepInEx.cfg file");
|
||||||
|
|
||||||
var chainloaderAssemblyPath = Path.Combine(Paths.BepInExAssemblyDirectory, "BepInEx.UnityMono.dll");
|
var chainloaderAssemblyPath = Path.Combine(Paths.BepInExAssemblyDirectory, "BepInEx.Unity.Mono.dll");
|
||||||
|
|
||||||
var readerParameters = new ReaderParameters
|
var readerParameters = new ReaderParameters
|
||||||
{
|
{
|
||||||
+1
-1
@@ -4,7 +4,7 @@ using System.Linq;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono.RuntimeFixes;
|
namespace BepInEx.Unity.Mono.Preloader.RuntimeFixes;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This exists because the Mono implementation of <see cref="Trace" /> is/was broken, and would call Write directly
|
/// This exists because the Mono implementation of <see cref="Trace" /> is/was broken, and would call Write directly
|
||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using BepInEx.Preloader.UnityMono.Utils;
|
using BepInEx.Unity.Mono.Preloader.Utils;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono.RuntimeFixes;
|
namespace BepInEx.Unity.Mono.Preloader.RuntimeFixes;
|
||||||
|
|
||||||
internal static class UnityPatches
|
internal static class UnityPatches
|
||||||
{
|
{
|
||||||
+1
-1
@@ -7,7 +7,7 @@ using MonoMod.RuntimeDetour;
|
|||||||
using MonoMod.RuntimeDetour.Platforms;
|
using MonoMod.RuntimeDetour.Platforms;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono.RuntimeFixes;
|
namespace BepInEx.Unity.Mono.Preloader.RuntimeFixes;
|
||||||
|
|
||||||
internal static class XTermFix
|
internal static class XTermFix
|
||||||
{
|
{
|
||||||
+4
-4
@@ -8,11 +8,11 @@ using BepInEx.Preloader.Core;
|
|||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
using BepInEx.Preloader.Core.Patching;
|
using BepInEx.Preloader.Core.Patching;
|
||||||
using BepInEx.Preloader.RuntimeFixes;
|
using BepInEx.Preloader.RuntimeFixes;
|
||||||
using BepInEx.Preloader.UnityMono.RuntimeFixes;
|
using BepInEx.Unity.Common;
|
||||||
using BepInEx.Preloader.UnityMono.Utils;
|
using BepInEx.Unity.Mono.Preloader.RuntimeFixes;
|
||||||
using BepInEx.Unity.Core;
|
using BepInEx.Unity.Mono.Preloader.Utils;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono;
|
namespace BepInEx.Unity.Mono.Preloader;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main entrypoint of BepInEx, and initializes all patchers and the chainloader.
|
/// The main entrypoint of BepInEx, and initializes all patchers and the chainloader.
|
||||||
+3
-3
@@ -4,10 +4,10 @@ using System.Linq;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using BepInEx.Preloader.Core;
|
using BepInEx.Preloader.Core;
|
||||||
using BepInEx.Preloader.RuntimeFixes;
|
using BepInEx.Preloader.RuntimeFixes;
|
||||||
using BepInEx.Preloader.UnityMono.RuntimeFixes;
|
using BepInEx.Unity.Mono.Preloader.RuntimeFixes;
|
||||||
using BepInEx.Preloader.UnityMono.Utils;
|
using BepInEx.Unity.Mono.Preloader.Utils;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono;
|
namespace BepInEx.Unity.Mono.Preloader;
|
||||||
|
|
||||||
internal static class UnityPreloaderRunner
|
internal static class UnityPreloaderRunner
|
||||||
{
|
{
|
||||||
+1
-1
@@ -7,7 +7,7 @@ using BepInEx.Preloader.Core;
|
|||||||
using Mono.Cecil;
|
using Mono.Cecil;
|
||||||
using MonoMod.Utils;
|
using MonoMod.Utils;
|
||||||
|
|
||||||
namespace BepInEx.Preloader.UnityMono.Utils;
|
namespace BepInEx.Unity.Mono.Preloader.Utils;
|
||||||
|
|
||||||
internal static class MonoAssemblyHelper
|
internal static class MonoAssemblyHelper
|
||||||
{
|
{
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using BepInEx.Configuration;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono;
|
namespace BepInEx.Unity.Mono;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The base plugin type that is used by the BepInEx plugin loader.
|
/// The base plugin type that is used by the BepInEx plugin loader.
|
||||||
+4
-7
@@ -2,20 +2,17 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Description>BepInEx support library for Mono Unity games</Description>
|
<Description>BepInEx support library for Mono Unity games</Description>
|
||||||
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
<TargetFrameworks>net35;netstandard2.0</TargetFrameworks>
|
||||||
<AssemblyTitle>BepInEx.UnityMono</AssemblyTitle>
|
|
||||||
<Product>BepInEx.UnityMono</Product>
|
|
||||||
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
|
||||||
<RootNamespace>BepInEx.UnityMono</RootNamespace>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net35'">
|
<PropertyGroup Condition="'$(TargetFramework)' == 'net35'">
|
||||||
<!-- Output only net35 version to distribution; netstadnard is only used for generating NuGet package -->
|
<!-- Output only net35 version to distribution; netstadnard is only used for generating NuGet package -->
|
||||||
<OutputPath>..\bin\UnityMono\</OutputPath>
|
<DistributionIdentifier>Unity.Mono</DistributionIdentifier>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BepInEx.Core\BepInEx.Core.csproj"/>
|
<ProjectReference Include="..\..\..\BepInEx.Core\BepInEx.Core.csproj"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
<ProjectReference Include="..\..\..\BepInEx.Preloader.Core\BepInEx.Preloader.Core.csproj" PrivateAssets="All"/>
|
||||||
<ProjectReference Include="..\BepInEx.Preloader.UnityMono\BepInEx.Preloader.UnityMono.csproj" PrivateAssets="All"/>
|
<ProjectReference Include="..\BepInEx.Unity.Mono.Preloader\BepInEx.Unity.Mono.Preloader.csproj" PrivateAssets="All"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All"/>
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
using BepInEx.UnityMono.Bootstrap;
|
using BepInEx.Unity.Mono.Bootstrap;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono;
|
namespace BepInEx.Unity.Mono;
|
||||||
|
|
||||||
public static class BepInExInstance
|
public static class BepInExInstance
|
||||||
{
|
{
|
||||||
+5
-4
@@ -7,8 +7,8 @@ using BepInEx.Bootstrap;
|
|||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using BepInEx.Preloader.Core.Logging;
|
using BepInEx.Preloader.Core.Logging;
|
||||||
using BepInEx.Unity.Core;
|
using BepInEx.Unity.Common;
|
||||||
using BepInEx.UnityMono.Logging;
|
using BepInEx.Unity.Mono.Logging;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = BepInEx.Logging.Logger;
|
using Logger = BepInEx.Logging.Logger;
|
||||||
using Object = UnityEngine.Object;
|
using Object = UnityEngine.Object;
|
||||||
@@ -16,7 +16,7 @@ using Object = UnityEngine.Object;
|
|||||||
[assembly: InternalsVisibleTo("UnityEngine")]
|
[assembly: InternalsVisibleTo("UnityEngine")]
|
||||||
[assembly: InternalsVisibleTo("UnityEngine.Core")]
|
[assembly: InternalsVisibleTo("UnityEngine.Core")]
|
||||||
|
|
||||||
namespace BepInEx.UnityMono.Bootstrap;
|
namespace BepInEx.Unity.Mono.Bootstrap;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The manager and loader for all plugins, and the entry point for BepInEx plugin system.
|
/// The manager and loader for all plugins, and the entry point for BepInEx plugin system.
|
||||||
@@ -33,6 +33,8 @@ public class UnityChainloader : BaseChainloader<BaseUnityPlugin>
|
|||||||
false,
|
false,
|
||||||
"Include unity log messages in log file output.");
|
"Include unity log messages in log file output.");
|
||||||
|
|
||||||
|
private static readonly bool staticStartHasBeenCalled = false;
|
||||||
|
|
||||||
private string _consoleTitle;
|
private string _consoleTitle;
|
||||||
|
|
||||||
// TODO: Remove once proper instance handling exists
|
// TODO: Remove once proper instance handling exists
|
||||||
@@ -133,7 +135,6 @@ public class UnityChainloader : BaseChainloader<BaseUnityPlugin>
|
|||||||
|
|
||||||
ChainloaderLogHelper.RewritePreloaderLogs();
|
ChainloaderLogHelper.RewritePreloaderLogs();
|
||||||
|
|
||||||
|
|
||||||
if (ConfigUnityLogging.Value)
|
if (ConfigUnityLogging.Value)
|
||||||
Logger.Sources.Add(new UnityLogSource());
|
Logger.Sources.Add(new UnityLogSource());
|
||||||
}
|
}
|
||||||
+1
-1
@@ -6,7 +6,7 @@ using BepInEx.Logging;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = BepInEx.Logging.Logger;
|
using Logger = BepInEx.Logging.Logger;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono.Configuration;
|
namespace BepInEx.Unity.Mono.Configuration;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A keyboard shortcut that can be used in Update method to check if user presses a key combo. The shortcut is only
|
/// A keyboard shortcut that can be used in Update method to check if user presses a key combo. The shortcut is only
|
||||||
+1
-1
@@ -7,7 +7,7 @@ using BepInEx.Logging;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = BepInEx.Logging.Logger;
|
using Logger = BepInEx.Logging.Logger;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono.Logging
|
namespace BepInEx.Unity.Mono.Logging
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs entries using Unity specific outputs.
|
/// Logs entries using Unity specific outputs.
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using System.Reflection;
|
|||||||
using BepInEx.Logging;
|
using BepInEx.Logging;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono.Logging;
|
namespace BepInEx.Unity.Mono.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs entries using Unity specific outputs.
|
/// Logs entries using Unity specific outputs.
|
||||||
+1
-1
@@ -8,7 +8,7 @@ using BepInEx.Logging;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = BepInEx.Logging.Logger;
|
using Logger = BepInEx.Logging.Logger;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono;
|
namespace BepInEx.Unity.Mono;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides methods for running code on other threads and synchronizing with the main thread.
|
/// Provides methods for running code on other threads and synchronizing with the main thread.
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
|
|||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace BepInEx.UnityMono;
|
namespace BepInEx.Unity.Mono;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Config types that are unity specific
|
/// Config types that are unity specific
|
||||||
+11
-12
@@ -2,19 +2,18 @@
|
|||||||
[General]
|
[General]
|
||||||
|
|
||||||
# Enable Doorstop?
|
# Enable Doorstop?
|
||||||
enabled=true
|
enabled = true
|
||||||
|
|
||||||
# Path to the assembly to load and execute
|
# Path to the assembly to load and execute
|
||||||
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
||||||
target_assembly=BepInEx\core\BepInEx.IL2CPP.dll
|
target_assembly = BepInEx\core\BepInEx.Unity.IL2CPP.dll
|
||||||
|
|
||||||
# If true, Unity's output log is redirected to <current folder>\output_log.txt
|
# If true, Unity's output log is redirected to <current folder>\output_log.txt
|
||||||
redirect_output_log=false
|
redirect_output_log = false
|
||||||
|
|
||||||
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
||||||
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
||||||
ignore_disable_switch=false
|
ignore_disable_switch = false
|
||||||
|
|
||||||
|
|
||||||
# Options specific to running under Unity Mono runtime
|
# Options specific to running under Unity Mono runtime
|
||||||
[UnityMono]
|
[UnityMono]
|
||||||
@@ -24,26 +23,26 @@ ignore_disable_switch=false
|
|||||||
# (e.g. mscorlib is stripped in original game)
|
# (e.g. mscorlib is stripped in original game)
|
||||||
# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
|
# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
|
||||||
# Original Managed folder is added as a secondary folder in the search path
|
# Original Managed folder is added as a secondary folder in the search path
|
||||||
dll_search_path_override=
|
dll_search_path_override =
|
||||||
|
|
||||||
# If true, Mono debugger server will be enabled
|
# If true, Mono debugger server will be enabled
|
||||||
debug_enabled=false
|
debug_enabled = false
|
||||||
|
|
||||||
# When debug_enabled is true, this option specifies whether Doorstop should initialize the debugger server
|
# When debug_enabled is true, this option specifies whether Doorstop should initialize the debugger server
|
||||||
# If you experience crashes when starting the debugger on debug UnityPlayer builds, try setting this to false
|
# If you experience crashes when starting the debugger on debug UnityPlayer builds, try setting this to false
|
||||||
debug_start_server=true
|
debug_start_server = true
|
||||||
|
|
||||||
# When debug_enabled is true, specifies the address to use for the debugger server
|
# When debug_enabled is true, specifies the address to use for the debugger server
|
||||||
debug_address=127.0.0.1:10000
|
debug_address = 127.0.0.1:10000
|
||||||
|
|
||||||
# If true and debug_enabled is true, Mono debugger server will suspend the game execution until a debugger is attached
|
# If true and debug_enabled is true, Mono debugger server will suspend the game execution until a debugger is attached
|
||||||
debug_suspend=false
|
debug_suspend = false
|
||||||
|
|
||||||
# Options sepcific to running under Il2Cpp runtime
|
# Options sepcific to running under Il2Cpp runtime
|
||||||
[Il2Cpp]
|
[Il2Cpp]
|
||||||
|
|
||||||
# Path to coreclr.dll that contains the CoreCLR runtime
|
# Path to coreclr.dll that contains the CoreCLR runtime
|
||||||
coreclr_path=dotnet\coreclr.dll
|
coreclr_path = dotnet\coreclr.dll
|
||||||
|
|
||||||
# Path to the directory containing the managed core libraries for CoreCLR (mscorlib, System, etc.)
|
# Path to the directory containing the managed core libraries for CoreCLR (mscorlib, System, etc.)
|
||||||
corlib_dir=dotnet
|
corlib_dir = dotnet
|
||||||
+9
-9
@@ -2,18 +2,18 @@
|
|||||||
[General]
|
[General]
|
||||||
|
|
||||||
# Enable Doorstop?
|
# Enable Doorstop?
|
||||||
enabled=true
|
enabled = true
|
||||||
|
|
||||||
# Path to the assembly to load and execute
|
# Path to the assembly to load and execute
|
||||||
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
||||||
target_assembly=BepInEx\core\BepInEx.Preloader.UnityMono.dll
|
target_assembly = BepInEx\core\BepInEx.Unity.Mono.Preloader.dll
|
||||||
|
|
||||||
# If true, Unity's output log is redirected to <current folder>\output_log.txt
|
# If true, Unity's output log is redirected to <current folder>\output_log.txt
|
||||||
redirect_output_log=false
|
redirect_output_log = false
|
||||||
|
|
||||||
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
||||||
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
||||||
ignore_disable_switch=false
|
ignore_disable_switch = false
|
||||||
|
|
||||||
# Options specific to running under Unity Mono runtime
|
# Options specific to running under Unity Mono runtime
|
||||||
[UnityMono]
|
[UnityMono]
|
||||||
@@ -23,17 +23,17 @@ ignore_disable_switch=false
|
|||||||
# (e.g. mscorlib is stripped in original game)
|
# (e.g. mscorlib is stripped in original game)
|
||||||
# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
|
# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
|
||||||
# Original Managed folder is added as a secondary folder in the search path
|
# Original Managed folder is added as a secondary folder in the search path
|
||||||
dll_search_path_override=
|
dll_search_path_override =
|
||||||
|
|
||||||
# If true, Mono debugger server will be enabled
|
# If true, Mono debugger server will be enabled
|
||||||
debug_enabled=false
|
debug_enabled = false
|
||||||
|
|
||||||
# When debug_enabled is true, this option specifies whether Doorstop should initialize the debugger server
|
# When debug_enabled is true, this option specifies whether Doorstop should initialize the debugger server
|
||||||
# If you experience crashes when starting the debugger on debug UnityPlayer builds, try setting this to false
|
# If you experience crashes when starting the debugger on debug UnityPlayer builds, try setting this to false
|
||||||
debug_start_server=true
|
debug_start_server = true
|
||||||
|
|
||||||
# When debug_enabled is true, specifies the address to use for the debugger server
|
# When debug_enabled is true, specifies the address to use for the debugger server
|
||||||
debug_address=127.0.0.1:10000
|
debug_address = 127.0.0.1:10000
|
||||||
|
|
||||||
# If true and debug_enabled is true, Mono debugger server will suspend the game execution until a debugger is attached
|
# If true and debug_enabled is true, Mono debugger server will suspend the game execution until a debugger is attached
|
||||||
debug_suspend=false
|
debug_suspend = false
|
||||||
@@ -23,7 +23,7 @@ enabled="1"
|
|||||||
|
|
||||||
# Path to the assembly to load and execute
|
# Path to the assembly to load and execute
|
||||||
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
||||||
target_assembly="BepInEx/core/BepInEx.IL2CPP.dll"
|
target_assembly="BepInEx/core/BepInEx.Unity.IL2CPP.dll"
|
||||||
|
|
||||||
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
||||||
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
||||||
@@ -23,7 +23,7 @@ enabled="1"
|
|||||||
|
|
||||||
# Path to the assembly to load and execute
|
# Path to the assembly to load and execute
|
||||||
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
|
||||||
target_assembly="BepInEx/core/BepInEx.Preloader.UnityMono.dll"
|
target_assembly="BepInEx/core/BepInEx.Unity.Mono.Preloader.dll"
|
||||||
|
|
||||||
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
# If enabled, DOORSTOP_DISABLE env var value is ignored
|
||||||
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
|
||||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,15 @@
|
|||||||
|
static class BuildDependencies
|
||||||
|
{
|
||||||
|
public const string DoorstopVersion = "4.0.0-rc.5";
|
||||||
|
public const string DotnetRuntimeVersion = "6.0.6-test";
|
||||||
|
public const string DobbyVersion = "1.0.0";
|
||||||
|
|
||||||
|
public const string DotnetRuntimeZipUrl =
|
||||||
|
$"https://github.com/BepInEx/dotnet-runtime/releases/download/{DotnetRuntimeVersion}/mini-coreclr-Release.zip";
|
||||||
|
|
||||||
|
public static string DoorstopZipUrl(string arch) =>
|
||||||
|
$"https://github.com/NeighTools/UnityDoorstop/releases/download/v{DoorstopVersion}/doorstop_{arch}_release_{DoorstopVersion}.zip";
|
||||||
|
|
||||||
|
public static string DobbyZipUrl(string arch) =>
|
||||||
|
$"https://github.com/BepInEx/Dobby/releases/download/v{DobbyVersion}/dobby-{arch}.zip";
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using Nuke.Common.IO;
|
||||||
|
using static Nuke.Common.IO.SerializationTasks;
|
||||||
|
|
||||||
|
readonly record struct DependencyCache(AbsolutePath CacheFile)
|
||||||
|
{
|
||||||
|
readonly IDictionary<string, string> cache =
|
||||||
|
CacheFile.Exists()
|
||||||
|
? JsonDeserialize<Dictionary<string, string>>(File.ReadAllText(CacheFile))
|
||||||
|
: new Dictionary<string, string>();
|
||||||
|
|
||||||
|
public void Refresh(string name, string key, Action process)
|
||||||
|
{
|
||||||
|
if (cache.TryGetValue(name, out var curKey) && curKey == key) return;
|
||||||
|
process();
|
||||||
|
cache[name] = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save() => File.WriteAllText(CacheFile, JsonSerialize(cache));
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
readonly record struct DistributionTarget(string DistributionIdentifier, string RuntimeIndentifier)
|
||||||
|
{
|
||||||
|
public readonly string Arch = RuntimeIndentifier.Split('-')[1];
|
||||||
|
public readonly string Engine = DistributionIdentifier.Split('.')[0];
|
||||||
|
public readonly string Os = RuntimeIndentifier.Split('-')[0];
|
||||||
|
public readonly string Runtime = DistributionIdentifier.Split('.')[1];
|
||||||
|
public readonly string Target = $"{DistributionIdentifier}-{RuntimeIndentifier}";
|
||||||
|
|
||||||
|
public string ClearOsName => Os switch
|
||||||
|
{
|
||||||
|
"win" => "Windows",
|
||||||
|
"linux" => "Linux",
|
||||||
|
"macos" => "macOS",
|
||||||
|
var _ => throw new NotSupportedException($"OS {Os} is not supported")
|
||||||
|
};
|
||||||
|
|
||||||
|
public string DllExtension => Os switch
|
||||||
|
{
|
||||||
|
"win" => "dll",
|
||||||
|
"linux" => "so",
|
||||||
|
"macos" => "dylib",
|
||||||
|
var _ => throw new NotSupportedException($"Unsupported OS: {Os}")
|
||||||
|
};
|
||||||
|
|
||||||
|
public string DllPrefix => Os switch
|
||||||
|
{
|
||||||
|
"win" => "",
|
||||||
|
"linux" => "lib",
|
||||||
|
"macos" => "lib",
|
||||||
|
_ => throw new NotSupportedException($"Unsupported OS: {Os}")
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Nuke.Common.IO;
|
||||||
|
using ShellProgressBar;
|
||||||
|
|
||||||
|
static class DownloadTasks
|
||||||
|
{
|
||||||
|
public static void DownloadFiles(string name, params (string Name, string Url, AbsolutePath Destination)[] files)
|
||||||
|
{
|
||||||
|
using var progress = new ProgressBar(files.Length, $"Downloading {name}");
|
||||||
|
Task.WaitAll(files.Select(t => DownloadFile(progress, t.Name, t.Url, t.Destination)).ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DownloadZipFiles(string name, params (string Name, string Url, AbsolutePath Destination)[] files)
|
||||||
|
{
|
||||||
|
using var progress = new ProgressBar(files.Length, $"Downloading {name}");
|
||||||
|
Task.WaitAll(files.Select(async t =>
|
||||||
|
{
|
||||||
|
var zipFilePath = (AbsolutePath) $"{t.Destination}_tmp.zip";
|
||||||
|
await DownloadFile(progress, t.Name, t.Url, zipFilePath);
|
||||||
|
await UnzipFile(progress, t.Name, zipFilePath, t.Destination);
|
||||||
|
File.Delete(zipFilePath!);
|
||||||
|
}).ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
static async Task DownloadFile(ProgressBarBase bar, string name, string url, AbsolutePath destination)
|
||||||
|
{
|
||||||
|
using var client = new HttpClient();
|
||||||
|
await using var fs = File.Create(destination);
|
||||||
|
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
throw new Exception($"Failed to download {name}");
|
||||||
|
await using var stream = await response.Content.ReadAsStreamAsync();
|
||||||
|
using var childBar = bar.Spawn((int) (response.Content.Headers.ContentLength ?? 1), $"Downloading {name}");
|
||||||
|
|
||||||
|
var buffer = new byte[4096];
|
||||||
|
int read;
|
||||||
|
while ((read = await stream.ReadAsync(buffer)) > 0)
|
||||||
|
{
|
||||||
|
await fs.WriteAsync(buffer.AsMemory(0, read));
|
||||||
|
childBar.Tick(childBar.CurrentTick + read);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async Task UnzipFile(ProgressBarBase bar, string name, AbsolutePath zipFile, AbsolutePath destination)
|
||||||
|
{
|
||||||
|
using var zip = ZipFile.OpenRead(zipFile);
|
||||||
|
using var childBar = bar.Spawn((int) zip.Entries.Select(e => e.Length).Sum(), $"Extracting {name}");
|
||||||
|
|
||||||
|
foreach (var entry in zip.Entries)
|
||||||
|
{
|
||||||
|
// Use Path.Combine to ensure the trailing slash is preserved.
|
||||||
|
var fullPath = Path.Combine(destination, entry.FullName);
|
||||||
|
var fileName = Path.GetFileName(fullPath);
|
||||||
|
if (string.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(fullPath);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(fullPath) ?? throw new InvalidOperationException());
|
||||||
|
await using var fs = File.Create(fullPath);
|
||||||
|
await using var stream = entry.Open();
|
||||||
|
var buffer = new byte[4096];
|
||||||
|
int read;
|
||||||
|
while ((read = await stream.ReadAsync(buffer)) > 0)
|
||||||
|
{
|
||||||
|
await fs.WriteAsync(buffer.AsMemory(0, read));
|
||||||
|
childBar.Tick(childBar.CurrentTick + read);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user