embed debug symbols for Linux/macOS compatibility
This fixes error stack traces not having line numbers on Linux/macOS.
This commit is contained in:
parent
53e0e8cd24
commit
9dd702a162
|
@ -14,6 +14,9 @@ repo. It imports the other MSBuild files as needed.
|
||||||
<DefineConstants>$(DefineConstants);SMAPI_DEPRECATED</DefineConstants>
|
<DefineConstants>$(DefineConstants);SMAPI_DEPRECATED</DefineConstants>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|
||||||
|
<!--embed symbols for error stack trace line numbers on Linux/macOS: https://github.com/dotnet/runtime/issues/39987-->
|
||||||
|
<DebugType>embedded</DebugType>
|
||||||
|
|
||||||
<!--enable nullable annotations, except in .NET Standard 2.0 where they aren't supported-->
|
<!--enable nullable annotations, except in .NET Standard 2.0 where they aren't supported-->
|
||||||
<Nullable Condition="'$(TargetFramework)' != 'netstandard2.0'">enable</Nullable>
|
<Nullable Condition="'$(TargetFramework)' != 'netstandard2.0'">enable</Nullable>
|
||||||
<NoWarn Condition="'$(TargetFramework)' == 'netstandard2.0'">$(NoWarn);CS8632</NoWarn>
|
<NoWarn Condition="'$(TargetFramework)' == 'netstandard2.0'">$(NoWarn);CS8632</NoWarn>
|
||||||
|
|
|
@ -18,7 +18,6 @@ This assumes `find-game-folder.targets` has already been imported and validated.
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFolder="$(GamePath)" Condition="$(OS) == 'Windows_NT'" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFolder="$(GamePath)" Condition="$(OS) == 'Windows_NT'" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName)" DestinationFolder="$(GamePath)" Condition="$(OS) != 'Windows_NT'" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName)" DestinationFolder="$(GamePath)" Condition="$(OS) != 'Windows_NT'" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)" />
|
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)" />
|
||||||
<Copy SourceFiles="$(TargetDir)\SMAPI.config.json" DestinationFiles="$(GamePath)\smapi-internal\config.json" />
|
<Copy SourceFiles="$(TargetDir)\SMAPI.config.json" DestinationFiles="$(GamePath)\smapi-internal\config.json" />
|
||||||
<Copy SourceFiles="$(TargetDir)\SMAPI.metadata.json" DestinationFiles="$(GamePath)\smapi-internal\metadata.json" />
|
<Copy SourceFiles="$(TargetDir)\SMAPI.metadata.json" DestinationFiles="$(GamePath)\smapi-internal\metadata.json" />
|
||||||
|
@ -62,7 +61,6 @@ This assumes `find-game-folder.targets` has already been imported and validated.
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" Condition="Exists('$(TargetDir)\$(TargetName).pdb')" />
|
|
||||||
<Copy SourceFiles="$(TargetDir)\manifest.json" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" />
|
<Copy SourceFiles="$(TargetDir)\manifest.json" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)" />
|
||||||
<Copy SourceFiles="@(TranslationFiles)" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)\i18n" />
|
<Copy SourceFiles="@(TranslationFiles)" DestinationFolder="$(GamePath)\Mods\$(AssemblyName)\i18n" />
|
||||||
</Target>
|
</Target>
|
||||||
|
@ -70,12 +68,10 @@ This assumes `find-game-folder.targets` has already been imported and validated.
|
||||||
<!-- toolkit -->
|
<!-- toolkit -->
|
||||||
<Target Name="CopyToolkit" Condition="'$(MSBuildProjectName)' == 'SMAPI.Toolkit'" AfterTargets="PostBuildEvent">
|
<Target Name="CopyToolkit" Condition="'$(MSBuildProjectName)' == 'SMAPI.Toolkit'" AfterTargets="PostBuildEvent">
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\smapi-internal" />
|
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
|
||||||
</Target>
|
</Target>
|
||||||
<Target Name="CopyToolkitCoreInterfaces" Condition="'$(MSBuildProjectName)' == 'SMAPI.Toolkit.CoreInterfaces'" AfterTargets="PostBuildEvent">
|
<Target Name="CopyToolkitCoreInterfaces" Condition="'$(MSBuildProjectName)' == 'SMAPI.Toolkit.CoreInterfaces'" AfterTargets="PostBuildEvent">
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(GamePath)\smapi-internal" />
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)\smapi-internal" />
|
|
||||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
|
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)\smapi-internal" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -122,7 +122,7 @@ for folder in ${folders[@]}; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# bundle root files
|
# bundle root files
|
||||||
for name in "StardewModdingAPI" "StardewModdingAPI.dll" "StardewModdingAPI.pdb" "StardewModdingAPI.xml" "steam_appid.txt"; do
|
for name in "StardewModdingAPI" "StardewModdingAPI.dll" "StardewModdingAPI.xml" "steam_appid.txt"; do
|
||||||
if [ $name == "StardewModdingAPI" ] && [ $folder == "windows" ]; then
|
if [ $name == "StardewModdingAPI" ] && [ $folder == "windows" ]; then
|
||||||
name="$name.exe"
|
name="$name.exe"
|
||||||
fi
|
fi
|
||||||
|
@ -134,7 +134,7 @@ for folder in ${folders[@]}; do
|
||||||
cp -r "$smapiBin/i18n" "$bundlePath/smapi-internal"
|
cp -r "$smapiBin/i18n" "$bundlePath/smapi-internal"
|
||||||
|
|
||||||
# bundle smapi-internal
|
# bundle smapi-internal
|
||||||
for name in "0Harmony.dll" "0Harmony.xml" "Mono.Cecil.dll" "Mono.Cecil.Mdb.dll" "Mono.Cecil.Pdb.dll" "MonoMod.Common.dll" "Newtonsoft.Json.dll" "Pathoschild.Http.Client.dll" "Pintail.dll" "TMXTile.dll" "SMAPI.Toolkit.dll" "SMAPI.Toolkit.pdb" "SMAPI.Toolkit.xml" "SMAPI.Toolkit.CoreInterfaces.dll" "SMAPI.Toolkit.CoreInterfaces.pdb" "SMAPI.Toolkit.CoreInterfaces.xml" "System.Net.Http.Formatting.dll"; do
|
for name in "0Harmony.dll" "0Harmony.xml" "Mono.Cecil.dll" "Mono.Cecil.Mdb.dll" "Mono.Cecil.Pdb.dll" "MonoMod.Common.dll" "Newtonsoft.Json.dll" "Pathoschild.Http.Client.dll" "Pintail.dll" "TMXTile.dll" "SMAPI.Toolkit.dll" "SMAPI.Toolkit.xml" "SMAPI.Toolkit.CoreInterfaces.dll" "SMAPI.Toolkit.CoreInterfaces.xml" "System.Net.Http.Formatting.dll"; do
|
||||||
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
|
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -164,7 +164,6 @@ for folder in ${folders[@]}; do
|
||||||
mkdir "$targetPath" --parents
|
mkdir "$targetPath" --parents
|
||||||
|
|
||||||
cp "$fromPath/$modName.dll" "$targetPath"
|
cp "$fromPath/$modName.dll" "$targetPath"
|
||||||
cp "$fromPath/$modName.pdb" "$targetPath"
|
|
||||||
cp "$fromPath/manifest.json" "$targetPath"
|
cp "$fromPath/manifest.json" "$targetPath"
|
||||||
if [ -d "$fromPath/i18n" ]; then
|
if [ -d "$fromPath/i18n" ]; then
|
||||||
cp -r "$fromPath/i18n" "$targetPath"
|
cp -r "$fromPath/i18n" "$targetPath"
|
||||||
|
|
|
@ -142,7 +142,7 @@ foreach ($folder in $folders) {
|
||||||
}
|
}
|
||||||
|
|
||||||
# bundle root files
|
# bundle root files
|
||||||
foreach ($name in @("StardewModdingAPI", "StardewModdingAPI.dll", "StardewModdingAPI.pdb", "StardewModdingAPI.xml", "steam_appid.txt")) {
|
foreach ($name in @("StardewModdingAPI", "StardewModdingAPI.dll", "StardewModdingAPI.xml", "steam_appid.txt")) {
|
||||||
if ($name -eq "StardewModdingAPI" -and $folder -eq "windows") {
|
if ($name -eq "StardewModdingAPI" -and $folder -eq "windows") {
|
||||||
$name = "$name.exe"
|
$name = "$name.exe"
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ foreach ($folder in $folders) {
|
||||||
cp -Recurse "$smapiBin/i18n" "$bundlePath/smapi-internal"
|
cp -Recurse "$smapiBin/i18n" "$bundlePath/smapi-internal"
|
||||||
|
|
||||||
# bundle smapi-internal
|
# bundle smapi-internal
|
||||||
foreach ($name in @("0Harmony.dll", "0Harmony.xml", "Mono.Cecil.dll", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll", "MonoMod.Common.dll", "Newtonsoft.Json.dll", "Pathoschild.Http.Client.dll", "Pintail.dll", "TMXTile.dll", "SMAPI.Toolkit.dll", "SMAPI.Toolkit.pdb", "SMAPI.Toolkit.xml", "SMAPI.Toolkit.CoreInterfaces.dll", "SMAPI.Toolkit.CoreInterfaces.pdb", "SMAPI.Toolkit.CoreInterfaces.xml", "System.Net.Http.Formatting.dll")) {
|
foreach ($name in @("0Harmony.dll", "0Harmony.xml", "Mono.Cecil.dll", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll", "MonoMod.Common.dll", "Newtonsoft.Json.dll", "Pathoschild.Http.Client.dll", "Pintail.dll", "TMXTile.dll", "SMAPI.Toolkit.dll", "SMAPI.Toolkit.xml", "SMAPI.Toolkit.CoreInterfaces.dll", "SMAPI.Toolkit.CoreInterfaces.xml", "System.Net.Http.Formatting.dll")) {
|
||||||
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
|
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,6 @@ foreach ($folder in $folders) {
|
||||||
mkdir "$targetPath" > $null
|
mkdir "$targetPath" > $null
|
||||||
|
|
||||||
cp "$fromPath/$modName.dll" "$targetPath"
|
cp "$fromPath/$modName.dll" "$targetPath"
|
||||||
cp "$fromPath/$modName.pdb" "$targetPath"
|
|
||||||
cp "$fromPath/manifest.json" "$targetPath"
|
cp "$fromPath/manifest.json" "$targetPath"
|
||||||
if (Test-Path "$fromPath/i18n" -PathType Container) {
|
if (Test-Path "$fromPath/i18n" -PathType Container) {
|
||||||
cp -Recurse "$fromPath/i18n" "$targetPath"
|
cp -Recurse "$fromPath/i18n" "$targetPath"
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
_If needed, you can update to SMAPI 3.16.0 first and then install the latest version._
|
_If needed, you can update to SMAPI 3.16.0 first and then install the latest version._
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
## Upcoming release
|
||||||
|
* For players:
|
||||||
|
* Fixed logged SMAPI errors not having line numbers on Linux/macOS.
|
||||||
|
|
||||||
## 3.18.3
|
## 3.18.3
|
||||||
Released 09 April 2023 for Stardew Valley 1.5.6 or later.
|
Released 09 April 2023 for Stardew Valley 1.5.6 or later.
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,8 @@ namespace StardewModdingApi.Installer
|
||||||
yield return GetInstallPath("StardewModdingAPI.dll");
|
yield return GetInstallPath("StardewModdingAPI.dll");
|
||||||
yield return GetInstallPath("StardewModdingAPI.exe");
|
yield return GetInstallPath("StardewModdingAPI.exe");
|
||||||
yield return GetInstallPath("StardewModdingAPI.exe.config");
|
yield return GetInstallPath("StardewModdingAPI.exe.config");
|
||||||
yield return GetInstallPath("StardewModdingAPI.exe.mdb"); // Linux/macOS only
|
yield return GetInstallPath("StardewModdingAPI.exe.mdb"); // before 3.18.4 (Linux/macOS only)
|
||||||
yield return GetInstallPath("StardewModdingAPI.pdb"); // Windows only
|
yield return GetInstallPath("StardewModdingAPI.pdb"); // before 3.18.4 (Windows only)
|
||||||
yield return GetInstallPath("StardewModdingAPI.runtimeconfig.json");
|
yield return GetInstallPath("StardewModdingAPI.runtimeconfig.json");
|
||||||
yield return GetInstallPath("StardewModdingAPI.xml");
|
yield return GetInstallPath("StardewModdingAPI.xml");
|
||||||
yield return GetInstallPath("smapi-internal");
|
yield return GetInstallPath("smapi-internal");
|
||||||
|
|
Loading…
Reference in New Issue