Redo launcher csproj and action to use framework dependent builds
This also includes package updates across the entire solution, which shouldn't matter at this stage on this branch.
This commit is contained in:
parent
49a2dce59e
commit
578df18901
7 changed files with 24 additions and 80 deletions
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/bash
|
||||
./bin/TShock.Run
|
||||
|
|
@ -5,89 +5,40 @@
|
|||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName Condition="'$(RuntimeIdentifier)' == 'win-x64' Or '$(RuntimeIdentifier)' == ''">TShock</AssemblyName>
|
||||
<AssemblyName Condition="'$(RuntimeIdentifier)' != 'win-x64' And '$(RuntimeIdentifier)' != ''">TShock.Run</AssemblyName>
|
||||
<AssemblyName>TShock.Server</AssemblyName>
|
||||
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||
<DebugType>embedded</DebugType>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> <!-- needed for sqlite native libs -->
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\TerrariaServerAPI\TerrariaServerAPI\TerrariaServerAPI.csproj" ExcludeFromSingleFile="true" />
|
||||
<ProjectReference Include="..\TShockAPI\TShockAPI.csproj" ExcludeFromSingleFile="true" Condition="'$(PublishSingleFile)' == 'true'" />
|
||||
<ProjectReference Include="..\TShockAPI\TShockAPI.csproj" ReferenceOutputAssembly="false" Condition="'$(PublishSingleFile)' != 'true'" />
|
||||
<ProjectReference Include="..\TShockAPI\TShockAPI.csproj" ExcludeFromSingleFile="true" ReferenceOutputAssembly="false" /> <!-- allow api to rebuilt with this project, so ServerPlugins are refreshed -->
|
||||
<Reference Include="HttpServer" ExcludeFromSingleFile="true">
|
||||
<HintPath>..\prebuilts\HttpServer.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- match tshocks dependencies so that publishing outputs all files to ./bin -->
|
||||
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.28" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.3" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.30" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.7" />
|
||||
<PackageReference Include="ModFramework" Version="1.0.40-alpha" /> <!-- temporary until otapi's nuget package describes the right version. oops. -->
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="MoveTShockDebug" AfterTargets="FinalCleanup;PostBuildEvent">
|
||||
<ItemGroup>
|
||||
<TShockPluginFilesDebug Include="$(TargetDir)/TShockAPI*" />
|
||||
</ItemGroup>
|
||||
<Move SourceFiles="@(TShockPluginFilesDebug)" DestinationFolder="$(TargetDir)ServerPlugins" ContinueOnError="true" />
|
||||
</Target>
|
||||
<Target Name="MoveTShockPublish" AfterTargets="Publish">
|
||||
<ItemGroup>
|
||||
<TShockPluginFilesPublish Include="$(PublishDir)/TShockAPI*" />
|
||||
<TShockPluginFilesForPublish Include="$(ProjectDir)../TShockAPI/bin/$(Configuration)/$(TargetFramework)/TShockAPI*" Condition="'$(PublishSingleFile)' != 'true'" />
|
||||
</ItemGroup>
|
||||
<Move SourceFiles="@(TShockPluginFilesPublish)" DestinationFolder="$(PublishDir)ServerPlugins" ContinueOnError="true" />
|
||||
<Copy SourceFiles="@(TShockPluginFilesForPublish)" DestinationFolder="$(PublishDir)ServerPlugins" ContinueOnError="true" Condition="'$(PublishSingleFile)' != 'true'" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CreateServerPlugins" AfterTargets="PostBuildEvent;Publish">
|
||||
<MakeDir Directories="$(OutDir)ServerPlugins" />
|
||||
<MakeDir Directories="$(PublishDir)ServerPlugins" />
|
||||
<ItemGroup>
|
||||
<ApiFiles Include="$(ProjectDir)../TShockAPI/bin/$(Configuration)/$(TargetFramework)/TShockAPI*" />
|
||||
</ItemGroup>
|
||||
<Copy SourceFiles="@(ApiFiles)" DestinationFolder="$(OutDir)ServerPlugins" ContinueOnError="true" />
|
||||
<Copy SourceFiles="@(ApiFiles)" DestinationFolder="$(PublishDir)ServerPlugins" ContinueOnError="true" />
|
||||
</Target>
|
||||
<Target Name="MoveBin" AfterTargets="Publish">
|
||||
<ItemGroup>
|
||||
<MoveBinaries Include="$(PublishDir)*" Exclude="$(PublishDir)\TShock.exe;$(PublishDir)\TShockAPI*" />
|
||||
<MoveBinaries Include="$(PublishDir)*" Exclude="$(PublishDir)\TShock.Server*" />
|
||||
</ItemGroup>
|
||||
<Move SourceFiles="@(MoveBinaries)" DestinationFolder="$(PublishDir)bin" ContinueOnError="true" />
|
||||
</Target>
|
||||
|
||||
<UsingTask TaskName="PatchAppHost" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
|
||||
<ParameterGroup>
|
||||
<HostExe ParameterType="System.String" Required="true" />
|
||||
</ParameterGroup>
|
||||
<Task>
|
||||
<Code Type="Fragment" Language="cs">
|
||||
/*
|
||||
This is a patch to allow self contained apps to run from the root while having the modules in a ./bin folder.
|
||||
https://github.com/dotnet/sdk/issues/10366
|
||||
|
||||
The script replaces the ./TShock.dll with ./bin/TShock.dll
|
||||
alternates: dnSpy(does this method), NetCoreBeauty
|
||||
*/
|
||||
var find = Encoding.UTF8.GetBytes("TShock.dll\0");
|
||||
var replace = Encoding.UTF8.GetBytes("bin" + Path.DirectorySeparatorChar + "TShock.dll\0");
|
||||
var contents = File.ReadAllBytes(HostExe);
|
||||
|
||||
var matches = 0;
|
||||
var offset = Array.FindIndex(contents, (b) => {
|
||||
matches = (b == find[matches]) ? matches + 1 : 0;
|
||||
return matches == find.Length;
|
||||
});
|
||||
if (offset > -1) offset -= find.Length - 1;
|
||||
|
||||
var x = 0;
|
||||
Array.ForEach(replace, _ => { contents[offset + x] = replace[x++]; });
|
||||
|
||||
File.WriteAllBytes(HostExe, contents);
|
||||
</Code>
|
||||
</Task>
|
||||
</UsingTask>
|
||||
|
||||
<Target Name="PatchAppHostAfterPublish" AfterTargets="Publish" Condition="'$(RuntimeIdentifier)' == 'win-x64'">
|
||||
<PatchAppHost HostExe="$(PublishDir)TShock.exe" />
|
||||
<Message Text="Patched TShock.exe host for ./bin redirect" Importance="High" />
|
||||
</Target>
|
||||
<Target Name="CreateScriptAfterPublish" AfterTargets="Publish" Condition="'$(RuntimeIdentifier)' != 'win-x64'">
|
||||
<Copy SourceFiles="$(ProjectDir)TShock.sh" DestinationFolder="$(PublishDir)" />
|
||||
<Message Text="Run the launcher with chmod +x TShock.sh && ./TShock.sh" Importance="High" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"additionalProbingPaths": [
|
||||
"../ServerPlugins"
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue