mirror of
https://github.com/BepInEx/BepInEx.git
synced 2026-10-19 15:51:45 +00:00
Remove BepInEx.Common and merge with main BepInEx project
This commit is contained in:
1 parent
a6c9907d7a
commit
2b632fe173
4 files changed
+102
-8
No files matched your search
@@ -66,7 +66,6 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="..\bin\patcher\BepInEx.Bootstrap.dll" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\BepInEx.Common\BepInEx.Common.projitems" Label="Shared" />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -10,15 +10,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx.Patcher", "BepInEx.
|
||||
{4FFBA620-F5ED-47F9-B90C-DAD1316FD9B9} = {4FFBA620-F5ED-47F9-B90C-DAD1316FD9B9}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BepInEx.Common", "BepInEx.Common\BepInEx.Common.shproj", "{D8DEEEF7-28F5-4F13-A004-C581CE051CDC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx.Bootstrap", "BepInEx.Bootstrap\BepInEx.Bootstrap.csproj", "{6E6BC1E5-5BE8-4566-B3AE-52C4CB218AEB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
BepInEx.Common\BepInEx.Common.projitems*{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}*SharedItemsImports = 4
|
||||
BepInEx.Common\BepInEx.Common.projitems*{d8deeef7-28f5-4f13-a004-c581ce051cdc}*SharedItemsImports = 13
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|v2017 = Debug|v2017
|
||||
Debug|v4 = Debug|v4
|
||||
|
||||
@@ -74,8 +74,8 @@
|
||||
<Compile Include="Paths.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Bootstrap\TypeLoader.cs" />
|
||||
<Compile Include="Utility.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="..\BepInEx.Common\BepInEx.Common.projitems" Label="Shared" />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace BepInEx.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Generic helper properties and methods.
|
||||
/// </summary>
|
||||
public static class Utility
|
||||
{
|
||||
/// <summary>
|
||||
/// Combines multiple paths together, as the specfic method is not availble in .NET 3.5.
|
||||
/// </summary>
|
||||
/// <param name="parts">The multiple paths to combine together.</param>
|
||||
/// <returns>A combined path.</returns>
|
||||
public static string CombinePaths(params string[] parts) => parts.Aggregate(Path.Combine);
|
||||
|
||||
/// <summary>
|
||||
/// Tries to parse a bool, with a default value if unable to parse.
|
||||
/// </summary>
|
||||
/// <param name="input">The string to parse</param>
|
||||
/// <param name="defaultValue">The value to return if parsing is unsuccessful.</param>
|
||||
/// <returns>Boolean value of input if able to be parsed, otherwise default value.</returns>
|
||||
public static bool SafeParseBool(string input, bool defaultValue = false)
|
||||
{
|
||||
return bool.TryParse(input, out bool result) ? result : defaultValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a file path into a UnityEngine.WWW format.
|
||||
/// </summary>
|
||||
/// <param name="path">The file path to convert.</param>
|
||||
/// <returns>A converted file path.</returns>
|
||||
public static string ConvertToWWWFormat(string path)
|
||||
{
|
||||
return $"file://{path.Replace('\\', '/')}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether a specified string is null, empty, or consists only of white-space characters.
|
||||
/// </summary>
|
||||
/// <param name="self">The string to test.</param>
|
||||
/// <returns>True if the value parameter is null or empty, or if value consists exclusively of white-space characters.</returns>
|
||||
public static bool IsNullOrWhiteSpace(this string self)
|
||||
{
|
||||
return self == null || self.Trim().Length == 0;
|
||||
}
|
||||
|
||||
public static IEnumerable<TNode> TopologicalSort<TNode>(IEnumerable<TNode> nodes, Func<TNode, IEnumerable<TNode>> dependencySelector)
|
||||
{
|
||||
List<TNode> nodeQueue = new List<TNode>(nodes);
|
||||
List<TNode> sorted = new List<TNode>();
|
||||
|
||||
while (nodeQueue.Count > 0)
|
||||
{
|
||||
List<TNode> nextBatch = nodeQueue.Where(x => !dependencySelector(x).Except(sorted).Any()).ToList();
|
||||
|
||||
if (!nextBatch.Any())
|
||||
throw new Exception("Cyclic Dependency:\r\n" +
|
||||
nodeQueue.Select(x => x.ToString()).Aggregate((a , b) => $"{a}\r\n{b}"));
|
||||
|
||||
sorted.AddRange(nextBatch);
|
||||
|
||||
foreach (TNode item in nextBatch)
|
||||
nodeQueue.Remove(item);
|
||||
}
|
||||
|
||||
return sorted;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to resolve and load the given assembly DLL.
|
||||
/// </summary>
|
||||
/// <param name="assemblyName">Name of the assembly, of the type <see cref="AssemblyName" />.</param>
|
||||
/// <param name="directory">Directory to search the assembly from.</param>
|
||||
/// <param name="assembly">The loaded assembly.</param>
|
||||
/// <returns>True, if the assembly was found and loaded. Otherwise, false.</returns>
|
||||
public static bool TryResolveDllAssembly(AssemblyName assemblyName, string directory, out Assembly assembly)
|
||||
{
|
||||
assembly = null;
|
||||
string path = Path.Combine(directory, $"{assemblyName.Name}.dll");
|
||||
|
||||
if (!File.Exists(path))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
assembly = Assembly.LoadFile(path);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user