Adds assemblies config, fixes crash bugs. (#134)
This commit is contained in:
parent
0140eb73b4
commit
8ec166bcd0
3223 changed files with 191 additions and 191 deletions
|
|
@ -2,7 +2,7 @@
|
|||
* ModernUO *
|
||||
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||
* Email: hi@modernuo.com *
|
||||
* File: AssemblyHandler.cs - Created: 2019/08/02 - Updated: 2020/01/19 *
|
||||
* File: AssemblyHandler.cs - Created: 2019/08/02 - Updated: 2020/05/09 *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
|
|
@ -33,21 +33,14 @@ namespace Server
|
|||
private static TypeCache m_NullCache;
|
||||
public static Assembly[] Assemblies { get; set; }
|
||||
|
||||
public static readonly string AssembliesPath = EnsureDirectory("Assemblies");
|
||||
public static void LoadScripts(string[] files)
|
||||
{
|
||||
var assemblies = new Assembly[files.Length];
|
||||
|
||||
public static void LoadScripts(string path = null) =>
|
||||
Assemblies = Directory.GetFiles(path ?? AssembliesPath, "*.dll")
|
||||
.Select(t =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return AssemblyLoadContext.Default.LoadFromAssemblyPath(t);
|
||||
} catch (BadImageFormatException)
|
||||
{
|
||||
// ignored
|
||||
return null;
|
||||
}
|
||||
}).Where(t => t != null).ToArray();
|
||||
for (int i = 0; i < files.Length; i++) assemblies[i] = AssemblyLoadContext.Default.LoadFromAssemblyPath(files[i]);
|
||||
|
||||
Assemblies = assemblies;
|
||||
}
|
||||
|
||||
public static void Invoke(string method)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||
* Email: hi@modernuo.com *
|
||||
* File: ServerConfiguration.cs *
|
||||
* Created: 2019/10/04 - Updated: 2020/05/02 *
|
||||
* Created: 2019/10/04 - Updated: 2020/05/09 *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ using System.Threading.Tasks;
|
|||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Server.Json;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server
|
||||
|
|
@ -117,8 +118,6 @@ namespace Server
|
|||
|
||||
public static Thread Thread { get; private set; }
|
||||
|
||||
public static MultiTextWriter MultiConsoleOut { get; private set; }
|
||||
|
||||
public static bool UsingHighResolutionTiming => m_HighRes && !Unix;
|
||||
|
||||
public static long TickCount => (long)Ticks;
|
||||
|
|
@ -309,6 +308,8 @@ namespace Server
|
|||
m_Signal.Set();
|
||||
}
|
||||
|
||||
private static string assembliesConfiguration = "Configuration/assemblies.json";
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||
|
|
@ -382,8 +383,13 @@ namespace Server
|
|||
|
||||
ServerConfiguration.Load();
|
||||
|
||||
// Load Assembly Scripts.CS.dll
|
||||
AssemblyHandler.LoadScripts();
|
||||
// Load UOContent.dll
|
||||
string[] assemblyFiles = JsonConfig.Deserialize<List<string>>(
|
||||
Path.Join(BaseDirectory, assembliesConfiguration)
|
||||
).Select(t => Path.Join(BaseDirectory, "Assemblies", t)).ToArray();
|
||||
AssemblyHandler.LoadScripts(assemblyFiles);
|
||||
|
||||
VerifySerialization();
|
||||
|
||||
AssemblyHandler.Invoke("Configure");
|
||||
|
||||
|
|
|
|||
|
|
@ -16,66 +16,70 @@
|
|||
<UseNETCoreGenerator>true</UseNETCoreGenerator>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<LangVersion>8.0</LangVersion>
|
||||
<PublishDir>$(SolutionDir)\Distribution</PublishDir>
|
||||
<!-- <OutDir>$(SolutionDir)\Distribution</OutDir>-->
|
||||
<!-- <OutputPath>$(SolutionDir)\Distribution</OutputPath>-->
|
||||
<PublishDir>..\..\Distribution</PublishDir>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||
<Configurations>Debug;Release;Analyze</Configurations>
|
||||
<Platforms>x64</Platforms>
|
||||
<DefineConstants Condition="$(RuntimeIdentifier.StartsWith('win'))">WINDOWS</DefineConstants>
|
||||
<DefineConstants Condition="$(RuntimeIdentifier.StartsWith(`win`)) != true">UNIX</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<Target Name="CleanPub" AfterTargets="Clean">
|
||||
<Message Text="Removing distribution files..." />
|
||||
<Delete Files="$(SolutionDir)\Distribution\libuv.dylib" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\libuv.so" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\libuv.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\zlib.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\libz.dylib" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\libz.so" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.AspNetCore.Connections.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.AspNetCore.Http.Features.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.Configuration.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.DependencyInjection.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.FileProviders.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.Hosting.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.Logging.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.Options.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\Microsoft.Extensions.Primitives.dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName)" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).dll" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).dll.config" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).exe" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).deps.json" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).pdb" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).runtimeconfig.dev.json" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\$(AssemblyName).runtimeconfig.json" ContinueOnError="true" />
|
||||
<Delete Files="$(SolutionDir)\Distribution\System.IO.Pipelines.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libuv.dylib" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libuv.so" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libuv.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\zlib.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libz.dylib" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libz.so" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\libdrng.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Connections.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Http.Features.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.Configuration.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.DependencyInjection.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.FileProviders.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.Hosting.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.Logging.Abstractions.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.Options.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\Microsoft.Extensions.Primitives.dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName)" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).dll" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).dll.config" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).exe" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).deps.json" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).pdb" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.dev.json" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.json" ContinueOnError="true" />
|
||||
<Delete Files="..\..\Distribution\System.IO.Pipelines.dll" ContinueOnError="true" />
|
||||
</Target>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ItemGroup>
|
||||
<AdditionalFiles Include="..\..\Rules.ruleset">
|
||||
<Link>Rules.rulest</Link>
|
||||
</AdditionalFiles>
|
||||
<AdditionalFiles Include="..\..\stylecop.json">
|
||||
<Link>stylecop.json</Link>
|
||||
</AdditionalFiles>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<Optimize>false</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'">
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Analyze|x64'">
|
||||
<Optimize>true</Optimize>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Analyze'">
|
||||
<RunCodeAnalysis>true</RunCodeAnalysis>
|
||||
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
|
||||
<CodeAnalysisRuleSet>$(SolutionDir)\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet>..\..\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Assemblies\libdrng.dll" Condition="'$(RuntimeIdentifier)' == 'win-x64'">
|
||||
<Content Include="Assemblies\libdrng.dll" Condition="$(DefineConstants.Contains('WINDOWS'))">
|
||||
<Link>libdrng.dll</Link>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<!-- <Content Include="Assemblies\zlib.dll" Condition="'$(RuntimeIdentifier)' == 'win-x64'">
|
||||
<Link>zlib.dll</Link>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content> -->
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.3" />
|
||||
|
|
@ -93,21 +97,15 @@
|
|||
<ItemGroup>
|
||||
<None Remove="Kestrel\Transport.Libuv\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(Configuration)|$(Platform)'=='Analyze|x64'">
|
||||
<ItemGroup Condition="'$(Configuration)'=='Analyze'">
|
||||
<PackageReference Include="StyleCop.Analyzers">
|
||||
<Version>1.1.118</Version>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<AdditionalFiles Include="$(SolutionDir)\stylecop.json">
|
||||
<Link>stylecop.json</Link>
|
||||
</AdditionalFiles>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers">
|
||||
<Version>2.9.8</Version>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<AdditionalFiles Include="$(SolutionDir)\Rules.ruleset">
|
||||
<Link>Rules.rulest</Link>
|
||||
</AdditionalFiles>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue