From 79181012ee01e93c1af7c4bf8bd1a3a717274ded Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 14 Jun 2020 10:55:52 -0400 Subject: tweak build files --- build/common.targets | 1 + 1 file changed, 1 insertion(+) (limited to 'build') diff --git a/build/common.targets b/build/common.targets index 41bea8af..ddfbd71a 100644 --- a/build/common.targets +++ b/build/common.targets @@ -7,6 +7,7 @@ 3.5.0 SMAPI + latest $(AssemblySearchPaths);{GAC} $(DefineConstants);SMAPI_FOR_WINDOWS -- cgit From a7cf886b7145e94dbcb1157f73aa0f2922fa183f Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 20 Jun 2020 00:13:23 -0400 Subject: switch to custom build of Harmony 1.2.0.1 --- .gitignore | 3 --- build/0Harmony.dll | Bin 0 -> 115200 bytes docs/release-notes.md | 1 + docs/technical/smapi.md | 14 +++++--------- src/SMAPI/SMAPI.csproj | 3 +-- 5 files changed, 7 insertions(+), 14 deletions(-) create mode 100644 build/0Harmony.dll (limited to 'build') diff --git a/.gitignore b/.gitignore index 02522716..b7f0d3e6 100644 --- a/.gitignore +++ b/.gitignore @@ -30,8 +30,5 @@ _ReSharper*/ # sensitive files appsettings.Development.json -# generated build files -build/0Harmony.* - # Azure generated files src/SMAPI.Web/Properties/PublishProfiles/*.pubxml diff --git a/build/0Harmony.dll b/build/0Harmony.dll new file mode 100644 index 00000000..2e893d0e Binary files /dev/null and b/build/0Harmony.dll differ diff --git a/docs/release-notes.md b/docs/release-notes.md index 9ea3e445..eadd45eb 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -28,6 +28,7 @@ * Added `Multiplayer.PeerConnected` event. * Added `harmony_summary` console command which lists all current Harmony patches, optionally with a search filter. * Added ability to override update keys from the compatibility list. + * SMAPI now uses [a custom build of Harmony](https://github.com/Pathoschild/Harmony#readme) to provide more useful stack traces in error logs. * Harmony mods which use the `[HarmonyPatch(type)]` attribute now work crossplatform. Previously SMAPI couldn't rewrite types in custom attributes for compatibility. * Improved mod rewriting for compatibility: * Fixed rewriting types in custom attributes. diff --git a/docs/technical/smapi.md b/docs/technical/smapi.md index 3b2d6e56..5d550cfc 100644 --- a/docs/technical/smapi.md +++ b/docs/technical/smapi.md @@ -58,7 +58,7 @@ SMAPI uses a small number of conditional compilation constants, which you can se flag | purpose ---- | ------- `SMAPI_FOR_WINDOWS` | Whether SMAPI is being compiled on Windows for players on Windows. Set automatically in `crossplatform.targets`. -`HARMONY_2` | Whether to enable experimental Harmony 2.0 support. Existing Harmony 1._x_ mods will be rewritten automatically for compatibility. +`HARMONY_2` | Whether to enable experimental Harmony 2.0 support and rewrite existing Harmony 1._x_ mods for compatibility. Note that you need to replace `build/0Harmony.dll` with a Harmony 2.0 build (or switch to a package reference) to use this flag. ## For SMAPI developers ### Compiling from source @@ -102,14 +102,10 @@ on the wiki for the first-time setup. 3. Rename the folders to `SMAPI installer` and `SMAPI installer for developers`. 4. Zip the two folders. -### Using a custom Harmony build -The official SMAPI releases include [a custom build of Harmony](https://github.com/Pathoschild/Harmony), -but compiling from source will use the official build. To use a custom build, put `0Harmony.dll` in -the `build` folder and it'll be referenced automatically. - -Note that Harmony merges its dependencies into `0Harmony.dll` when compiled in release mode. To use -a debug build of Harmony, you'll need to manually copy those dependencies into your game's -`smapi-internal` folder. +### Custom Harmony build +SMAPI uses [a custom build of Harmony](https://github.com/Pathoschild/Harmony#readme), which is +included in the `build` folder. To use a different build, just replace `0Harmony.dll` in that +folder. ## Release notes See [release notes](../release-notes.md). diff --git a/src/SMAPI/SMAPI.csproj b/src/SMAPI/SMAPI.csproj index c17de6d0..4af4527b 100644 --- a/src/SMAPI/SMAPI.csproj +++ b/src/SMAPI/SMAPI.csproj @@ -14,14 +14,13 @@ - - + -- cgit From cb9ff7019995eff92104703f097856d2523e02ce Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 20 Jun 2020 12:42:31 -0400 Subject: prepare for release --- build/common.targets | 2 +- docs/release-notes.md | 15 +++++++++------ docs/technical/smapi.md | 4 ++-- src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- src/SMAPI.Mods.SaveBackup/manifest.json | 4 ++-- src/SMAPI/Constants.cs | 2 +- 6 files changed, 17 insertions(+), 14 deletions(-) (limited to 'build') diff --git a/build/common.targets b/build/common.targets index ddfbd71a..f66f51df 100644 --- a/build/common.targets +++ b/build/common.targets @@ -4,7 +4,7 @@ - 3.5.0 + 3.6.0 SMAPI latest diff --git a/docs/release-notes.md b/docs/release-notes.md index b25defa8..1c5dc1dd 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -2,21 +2,23 @@ # Release notes -## Upcoming release +## 3.6 +Released 20 June 2020 for Stardew Valley 1.4.1 or later. + * For players: + * Added crossplatform compatibility for mods which use the `[HarmonyPatch(type)]` attribute. * Added experimental option to reduce startup time when loading mod DLLs (thanks to ZaneYork!). Enable `RewriteInParallel` in the `smapi-internal/config.json` to try it. * Reduced processing time when a mod loads many unpacked images (thanks to Entoarox!). - * Mod warnings are now listed alphabetically. + * Mod load warnings are now listed alphabetically. * MacOS files starting with `._` are now ignored and can no longer cause skipped mods. * Simplified paranoid warning logs and reduced their log level. - * Mods which use the `[HarmonyPatch(type)]` attribute now work crossplatform. Previously SMAPI couldn't rewrite types in custom attributes for compatibility. - * Fixed `BadImageFormatException` error detection. * Fixed black maps on Android for mods which use `.tmx` files. + * Fixed `BadImageFormatException` error detection. * Fixed `reload_i18n` command not reloading content pack translations. * For the web UI: @@ -35,7 +37,7 @@ * Added `harmony_summary` console command to list or search current Harmony patches. * Added `Multiplayer.PeerConnected` event. * Added support for overriding update keys from the wiki compatibility list. - * Improved mod rewriting for compatibility to support custom attributes and generic types. + * Improved mod rewriting for compatibility to support more cases (e.g. custom attributes and generic types). * Fixed `helper.Reflection` blocking access to game methods/properties intercepted by SMAPI. * Fixed asset propagation for Gil's portraits. * Fixed `.pdb` files ignored for error stack traces when mods are rewritten by SMAPI. @@ -45,6 +47,7 @@ * Eliminated MongoDB storage in the web services, which complicated the code unnecessarily. The app still uses an abstract interface for storage, so we can wrap a distributed cache in the future if needed. * Overhauled update checks to simplify mod site integrations, centralize common logic, and enable upcoming features. * Merged the separate legacy redirects app on AWS into the main app on Azure. + * Changed SMAPI's Harmony ID from `io.smapi` to `SMAPI` for readability in Harmony summaries. ## 3.5 Released 27 April 2020 for Stardew Valley 1.4.1 or later. diff --git a/docs/technical/smapi.md b/docs/technical/smapi.md index 5d550cfc..3cb450ae 100644 --- a/docs/technical/smapi.md +++ b/docs/technical/smapi.md @@ -81,8 +81,8 @@ To prepare a crossplatform SMAPI release, you'll need to compile it on two platf [crossplatforming info](https://stardewvalleywiki.com/Modding:Modder_Guide/Test_and_Troubleshoot#Testing_on_all_platforms) on the wiki for the first-time setup. -1. Update the version number in `.root/build/common.targets` and `Constants::Version`. Make sure - you use a [semantic version](https://semver.org). Recommended format: +1. Update the version numbers in `build/common.targets`, `Constants`, and the `manifest.json` for + bundled mods. Make sure you use a [semantic version](https://semver.org). Recommended format: build type | format | example :--------- | :----------------------- | :------ diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index 908d4f65..05304312 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "3.5.0", + "Version": "3.6.0", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueID": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "3.5.0" + "MinimumApiVersion": "3.6.0" } diff --git a/src/SMAPI.Mods.SaveBackup/manifest.json b/src/SMAPI.Mods.SaveBackup/manifest.json index cd42459e..5d5336e7 100644 --- a/src/SMAPI.Mods.SaveBackup/manifest.json +++ b/src/SMAPI.Mods.SaveBackup/manifest.json @@ -1,9 +1,9 @@ { "Name": "Save Backup", "Author": "SMAPI", - "Version": "3.5.0", + "Version": "3.6.0", "Description": "Automatically backs up all your saves once per day into its folder.", "UniqueID": "SMAPI.SaveBackup", "EntryDll": "SaveBackup.dll", - "MinimumApiVersion": "3.5.0" + "MinimumApiVersion": "3.6.0" } diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index 9d510d2d..66971709 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAPI/Constants.cs @@ -20,7 +20,7 @@ namespace StardewModdingAPI ** Public ****/ /// SMAPI's current semantic version. - public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("3.5.0"); + public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("3.6.0"); /// The minimum supported version of Stardew Valley. public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.4.1"); -- cgit