From 222183c651c5b5d9e402db1b8009e2e0a0681b06 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 4 Apr 2021 11:37:11 -0400 Subject: standardize spelling of 'macOS' --- src/SMAPI.Toolkit/Framework/Clients/WebApi/WebApiClient.cs | 2 +- src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs | 2 +- src/SMAPI.Toolkit/Framework/LowLevelEnvironmentUtility.cs | 8 ++++---- src/SMAPI.Toolkit/Framework/ModData/ModWarning.cs | 2 +- src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs | 4 ++-- src/SMAPI.Toolkit/Utilities/Platform.cs | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/SMAPI.Toolkit') diff --git a/src/SMAPI.Toolkit/Framework/Clients/WebApi/WebApiClient.cs b/src/SMAPI.Toolkit/Framework/Clients/WebApi/WebApiClient.cs index 2fb6ed20..c2d906a0 100644 --- a/src/SMAPI.Toolkit/Framework/Clients/WebApi/WebApiClient.cs +++ b/src/SMAPI.Toolkit/Framework/Clients/WebApi/WebApiClient.cs @@ -61,7 +61,7 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi /// The body content to post. private TResult Post(string url, TBody content) { - // note: avoid HttpClient for Mac compatibility + // note: avoid HttpClient for macOS compatibility using WebClient client = new WebClient(); Uri fullUrl = new Uri(this.BaseUrl, url); diff --git a/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs b/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs index 785daba3..d18a2204 100644 --- a/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs +++ b/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs @@ -82,7 +82,7 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning ? $"{home}/.steam/steam/steamapps/common/Stardew Valley" : $"{home}/.local/share/Steam/steamapps/common/Stardew Valley"; - // Mac + // macOS yield return "/Applications/Stardew Valley.app/Contents/MacOS"; yield return $"{home}/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS"; } diff --git a/src/SMAPI.Toolkit/Framework/LowLevelEnvironmentUtility.cs b/src/SMAPI.Toolkit/Framework/LowLevelEnvironmentUtility.cs index e635725c..8cbd8e51 100644 --- a/src/SMAPI.Toolkit/Framework/LowLevelEnvironmentUtility.cs +++ b/src/SMAPI.Toolkit/Framework/LowLevelEnvironmentUtility.cs @@ -74,7 +74,7 @@ namespace StardewModdingAPI.Toolkit.Framework break; case nameof(Platform.Mac): - name = $"MacOS {name}"; + name = $"macOS {name}"; break; } return name; @@ -124,10 +124,10 @@ namespace StardewModdingAPI.Toolkit.Framework } } - /// Detect whether the code is running on Mac. + /// Detect whether the code is running on macOS. /// - /// This code is derived from the Mono project (see System.Windows.Forms/System.Windows.Forms/XplatUI.cs). It detects Mac by calling the - /// uname system command and checking the response, which is always 'Darwin' for MacOS. + /// This code is derived from the Mono project (see System.Windows.Forms/System.Windows.Forms/XplatUI.cs). It detects macOS by calling the + /// uname system command and checking the response, which is always 'Darwin' for macOS. /// private static bool IsRunningMac() { diff --git a/src/SMAPI.Toolkit/Framework/ModData/ModWarning.cs b/src/SMAPI.Toolkit/Framework/ModData/ModWarning.cs index 925e0b5c..afebba87 100644 --- a/src/SMAPI.Toolkit/Framework/ModData/ModWarning.cs +++ b/src/SMAPI.Toolkit/Framework/ModData/ModWarning.cs @@ -18,7 +18,7 @@ namespace StardewModdingAPI.Toolkit.Framework.ModData /// The mod patches the game in a way that may impact stability. PatchesGame = 4, - /// The mod uses the dynamic keyword which won't work on Linux/Mac. + /// The mod uses the dynamic keyword which won't work on Linux/macOS. UsesDynamic = 8, /// The mod references specialized 'unvalidated update tick' events which may impact stability. diff --git a/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs b/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs index fd206d9d..30177fc5 100644 --- a/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs +++ b/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs @@ -21,7 +21,7 @@ namespace StardewModdingAPI.Toolkit.Framework.ModScanning private readonly HashSet IgnoreFilesystemNames = new HashSet { new Regex(@"^__folder_managed_by_vortex$", RegexOptions.Compiled | RegexOptions.IgnoreCase), // Vortex mod manager - new Regex(@"(?:^\._|^\.DS_Store$|^__MACOSX$|^mcs$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), // MacOS + new Regex(@"(?:^\._|^\.DS_Store$|^__MACOSX$|^mcs$)", RegexOptions.Compiled | RegexOptions.IgnoreCase), // macOS new Regex(@"^(?:desktop\.ini|Thumbs\.db)$", RegexOptions.Compiled | RegexOptions.IgnoreCase) // Windows }; @@ -136,7 +136,7 @@ namespace StardewModdingAPI.Toolkit.Framework.ModScanning return new ModFolder(root, searchFolder, ModType.Xnb, null, ModParseError.XnbMod, "it's not a SMAPI mod (see https://smapi.io/xnb for info)."); // SMAPI installer - if (relevantFiles.Any(p => p.Name == "install on Linux.sh" || p.Name == "install on Mac.command" || p.Name == "install on Windows.bat")) + if (relevantFiles.Any(p => p.Name == "install on Linux.sh" || p.Name == "install on macOS.command" || p.Name == "install on Windows.bat")) return new ModFolder(root, searchFolder, ModType.Invalid, null, ModParseError.ManifestMissing, "the SMAPI installer isn't a mod (you can delete this folder after running the installer file)."); // not a mod? diff --git a/src/SMAPI.Toolkit/Utilities/Platform.cs b/src/SMAPI.Toolkit/Utilities/Platform.cs index f780e812..563d3250 100644 --- a/src/SMAPI.Toolkit/Utilities/Platform.cs +++ b/src/SMAPI.Toolkit/Utilities/Platform.cs @@ -9,7 +9,7 @@ namespace StardewModdingAPI.Toolkit.Utilities /// The Linux version of the game. Linux, - /// The Mac version of the game. + /// The macOS version of the game. Mac, /// The Windows version of the game. -- cgit From 47a806533b9fbcfe3fc771316283a7734702baae Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 23 Apr 2021 02:05:14 -0400 Subject: add 64-bit support to the SMAPI installer (#767) --- build/common.targets | 15 +++--- docs/release-notes.md | 4 +- docs/technical/smapi.md | 17 ++++--- src/SMAPI.Installer/Framework/InstallerPaths.cs | 11 ++++- src/SMAPI.Installer/InteractiveInstaller.cs | 53 +++++++++++++++++++--- .../Framework/GameScanning/GameScanner.cs | 11 +++-- 6 files changed, 84 insertions(+), 27 deletions(-) (limited to 'src/SMAPI.Toolkit') diff --git a/build/common.targets b/build/common.targets index 4068c491..6834c162 100644 --- a/build/common.targets +++ b/build/common.targets @@ -1,13 +1,16 @@ - + 3.9.5 SMAPI - latest $(AssemblySearchPaths);{GAC} - + + + + $(DefineConstants);SMAPI_FOR_WINDOWS $(DefineConstants);SMAPI_FOR_XNA @@ -53,9 +56,9 @@ - - - + + + diff --git a/docs/release-notes.md b/docs/release-notes.md index 748e62c5..9de285ae 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -9,13 +9,13 @@ ## Upcoming release * For players: + * Added support for unofficial 64-bit Stardew Valley, including automatic support in the SMAPI installer. + * Added update checks for Stardew64Installer if it patched the game. * When many mods fail to load, root dependencies are now listed in their own group so it's easier to see which ones you should try updating first. * On macOS, the `StardewModdingAPI.bin.osx` file is no longer overwritten if it's identical to avoid resetting file permissions (thanks to 007wayne!). - * Added update checks for Stardew64Installer if it patched the game. * Fixed error for non-English players after returning to title, reloading, and entering town with a completed movie theater. * Fixed `world_clear` console command not removing resource clumps outside the farm and secret woods. * Fixed inconsistent spelling/style for 'macOS'. - * Internal changes to prepare for unofficial 64-bit. * For modders: * Added asset propagation for `Data\Concessions`. diff --git a/docs/technical/smapi.md b/docs/technical/smapi.md index ca1631cd..b64239c1 100644 --- a/docs/technical/smapi.md +++ b/docs/technical/smapi.md @@ -82,7 +82,9 @@ 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 numbers in `build/common.targets`, `Constants`, and the `manifest.json` for +1. [Install a separate 64-bit version of Stardew Valley](https://github.com/Steviegt6/Stardew64Installer#readme) + on Windows. +2. 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 @@ -90,12 +92,15 @@ on the wiki for the first-time setup. dev build | `-alpha.` | `3.0.0-alpha.20171230` prerelease | `-beta.` | `3.0.0-beta.20171230` release | `` | `3.0.0` - -2. In Windows: +3. In Windows: 1. Rebuild the solution with the _release_ solution configuration. - 2. Copy `bin/SMAPI installer` and `bin/SMAPI installer for developers` to Linux/macOS. - -3. In Linux/macOS: + 2. Back up the `bin/SMAPI installer` and `bin/SMAPI installer for developers` folders. + 3. Edit `common.targets` and uncomment the Stardew Valley 64-bit section at the top. + 4. Rebuild the solution again. + 5. Rename the compiled `StardewModdingAPI.exe` file to `StardewModdingAPI-x64.exe`, and copy it + into the `windows-install.dat` files from step ii. + 6. Copy the folders from step ii to Linux/MacOS. +4. In Linux/macOS: 1. Rebuild the solution with the _release_ solution configuration. 2. Add the `windows-install.*` files from Windows to the `bin/SMAPI installer` and `bin/SMAPI installer for developers` folders compiled on Linux. diff --git a/src/SMAPI.Installer/Framework/InstallerPaths.cs b/src/SMAPI.Installer/Framework/InstallerPaths.cs index 2cabf88b..6ba5fa5f 100644 --- a/src/SMAPI.Installer/Framework/InstallerPaths.cs +++ b/src/SMAPI.Installer/Framework/InstallerPaths.cs @@ -44,8 +44,8 @@ namespace StardewModdingAPI.Installer.Framework /// The full path to the user's config overrides file. public string ApiUserConfigPath { get; } - /// The full path to the installed SMAPI executable file. - public string ExecutablePath { get; } + /// The full path to the installed game executable file. + public string ExecutablePath { get; private set; } /// The full path to the vanilla game launcher on Linux/macOS. public string UnixLauncherPath { get; } @@ -79,5 +79,12 @@ namespace StardewModdingAPI.Installer.Framework this.ApiConfigPath = Path.Combine(gameDir.FullName, "smapi-internal", "config.json"); this.ApiUserConfigPath = Path.Combine(gameDir.FullName, "smapi-internal", "config.user.json"); } + + /// Override the filename for the . + /// the file name. + public void SetExecutableFileName(string filename) + { + this.ExecutablePath = Path.Combine(this.GamePath, filename); + } } } diff --git a/src/SMAPI.Installer/InteractiveInstaller.cs b/src/SMAPI.Installer/InteractiveInstaller.cs index 376949da..6bfc6874 100644 --- a/src/SMAPI.Installer/InteractiveInstaller.cs +++ b/src/SMAPI.Installer/InteractiveInstaller.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; @@ -10,7 +11,6 @@ using StardewModdingAPI.Internal.ConsoleWriting; using StardewModdingAPI.Toolkit; using StardewModdingAPI.Toolkit.Framework.ModScanning; using StardewModdingAPI.Toolkit.Utilities; -using System.Diagnostics; namespace StardewModdingApi.Installer { @@ -275,7 +275,20 @@ namespace StardewModdingApi.Installer /********* - ** Step 4: validate assumptions + ** Step 4: detect 64-bit Stardew Valley + *********/ + // detect 64-bit mode + bool isWindows64Bit = false; + if (context.Platform == Platform.Windows) + { + FileInfo linuxExecutable = new FileInfo(Path.Combine(paths.GamePath, "StardewValley.exe")); + isWindows64Bit = linuxExecutable.Exists && this.Is64Bit(linuxExecutable.FullName); + if (isWindows64Bit) + paths.SetExecutableFileName(linuxExecutable.Name); + } + + /********* + ** Step 5: validate assumptions *********/ // executable exists if (!File.Exists(paths.ExecutablePath)) @@ -298,7 +311,7 @@ namespace StardewModdingApi.Installer /********* - ** Step 5: ask what to do + ** Step 6: ask what to do *********/ ScriptAction action; { @@ -306,7 +319,7 @@ namespace StardewModdingApi.Installer ** print header ****/ this.PrintInfo("Hi there! I'll help you install or remove SMAPI. Just one question first."); - this.PrintDebug($"Game path: {paths.GamePath}"); + this.PrintDebug($"Game path: {paths.GamePath}{(context.IsWindows ? $" [{(isWindows64Bit ? "64-bit" : "32-bit")}]" : "")}"); this.PrintDebug($"Color scheme: {this.GetDisplayText(scheme)}"); this.PrintDebug("----------------------------------------------------------------------------"); Console.WriteLine(); @@ -344,14 +357,14 @@ namespace StardewModdingApi.Installer /********* - ** Step 6: apply + ** Step 7: apply *********/ { /**** ** print header ****/ this.PrintInfo($"That's all I need! I'll {action.ToString().ToLower()} SMAPI now."); - this.PrintDebug($"Game path: {paths.GamePath}"); + this.PrintDebug($"Game path: {paths.GamePath}{(context.IsWindows ? $" [{(isWindows64Bit ? "64-bit" : "32-bit")}]" : "")}"); this.PrintDebug($"Color scheme: {this.GetDisplayText(scheme)}"); this.PrintDebug("----------------------------------------------------------------------------"); Console.WriteLine(); @@ -412,6 +425,27 @@ namespace StardewModdingApi.Installer this.RecursiveCopy(sourceEntry, paths.GameDir); } + if (isWindows64Bit) + { + this.PrintDebug("Making SMAPI 64-bit..."); + FileInfo x64Executable = new FileInfo(Path.Combine(paths.BundleDir.FullName, "StardewModdingAPI-x64.exe")); + if (x64Executable.Exists) + { + string targetName = "StardewModdingAPI.exe"; + this.InteractivelyDelete(Path.Combine(paths.GameDir.FullName, targetName)); + this.InteractivelyDelete(Path.Combine(paths.GameDir.FullName, x64Executable.Name)); + + this.RecursiveCopy(x64Executable, paths.GameDir); + File.Move(Path.Combine(paths.GamePath, x64Executable.Name), Path.Combine(paths.GamePath, targetName)); + } + else + { + this.PrintError($"Oops! Could not find the required '{x64Executable.Name}' installer file. SMAPI was unable to install correctly."); + Console.ReadLine(); + return; + } + } + // replace mod launcher (if possible) if (context.IsUnix) { @@ -535,6 +569,13 @@ namespace StardewModdingApi.Installer /********* ** Private methods *********/ + /// Get whether an executable is 64-bit. + /// The absolute path to the executable file. + private bool Is64Bit(string executablePath) + { + return AssemblyName.GetAssemblyName(executablePath).ProcessorArchitecture != ProcessorArchitecture.X86; + } + /// Get the display text for a color scheme. /// The color scheme. private string GetDisplayText(MonitorColorScheme scheme) diff --git a/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs b/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs index d18a2204..c90fc1d3 100644 --- a/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs +++ b/src/SMAPI.Toolkit/Framework/GameScanning/GameScanner.cs @@ -20,9 +20,6 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning /// The current OS. private readonly Platform Platform; - /// The name of the Stardew Valley executable. - private readonly string ExecutableName; - /********* ** Public methods @@ -31,7 +28,6 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning public GameScanner() { this.Platform = EnvironmentUtility.DetectPlatform(); - this.ExecutableName = EnvironmentUtility.GetExecutableName(this.Platform); } /// Find all valid Stardew Valley install folders. @@ -58,7 +54,12 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning /// The folder to check. public bool LooksLikeGameFolder(DirectoryInfo dir) { - return dir.Exists && dir.EnumerateFiles(this.ExecutableName).Any(); + return + dir.Exists + && ( + dir.EnumerateFiles("StardewValley.exe").Any() + || dir.EnumerateFiles("Stardew Valley.exe").Any() + ); } -- cgit From 9e8a7fa986329986b8f725a21c9b22fe347347bf Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 24 Apr 2021 11:10:53 -0400 Subject: ignore *.ico files when scanning for mods (#773) --- docs/release-notes.md | 1 + src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs | 1 + 2 files changed, 2 insertions(+) (limited to 'src/SMAPI.Toolkit') diff --git a/docs/release-notes.md b/docs/release-notes.md index 9de285ae..ddc3ab30 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -13,6 +13,7 @@ * Added update checks for Stardew64Installer if it patched the game. * When many mods fail to load, root dependencies are now listed in their own group so it's easier to see which ones you should try updating first. * On macOS, the `StardewModdingAPI.bin.osx` file is no longer overwritten if it's identical to avoid resetting file permissions (thanks to 007wayne!). + * `*.ico` files are now ignored when scanning for mods. * Fixed error for non-English players after returning to title, reloading, and entering town with a completed movie theater. * Fixed `world_clear` console command not removing resource clumps outside the farm and secret woods. * Fixed inconsistent spelling/style for 'macOS'. diff --git a/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs b/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs index 30177fc5..e6105f9c 100644 --- a/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs +++ b/src/SMAPI.Toolkit/Framework/ModScanning/ModScanner.cs @@ -38,6 +38,7 @@ namespace StardewModdingAPI.Toolkit.Framework.ModScanning // images ".bmp", ".gif", + ".ico", ".jpeg", ".jpg", ".png", -- cgit From 3de9858c9b89d13cfb69662a2d9e0ce03ff0593a Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 30 Apr 2021 18:52:19 -0400 Subject: fix update subkeys for Nexus mods marked as adult content --- docs/release-notes.md | 3 +++ src/SMAPI.Toolkit/SMAPI.Toolkit.csproj | 2 +- src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs | 2 +- src/SMAPI.Web/SMAPI.Web.csproj | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src/SMAPI.Toolkit') diff --git a/docs/release-notes.md b/docs/release-notes.md index ddc3ab30..b6b14f97 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -25,6 +25,9 @@ * Fixed `Context.IsMainPlayer` returning true for a farmhand in split-screen mode before the screen is initialized. * Fixed error when editing bundle data while a split-screen player is joining. +* For the web API: + * Fixed update subkeys not working in file descriptions for Nexus mods marked as adult content. + ## 3.9.5 Released 21 March 2021 for Stardew Valley 1.5.4 or later. diff --git a/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj b/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj index d8e32acf..0d96b486 100644 --- a/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj +++ b/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs b/src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs index ef3ef22e..4ba94f81 100644 --- a/src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs +++ b/src/SMAPI.Web/Framework/Clients/Nexus/NexusClient.cs @@ -186,7 +186,7 @@ namespace StardewModdingAPI.Web.Framework.Clients.Nexus Version = SemanticVersion.TryParse(mod.Version, out ISemanticVersion version) ? version?.ToString() : mod.Version, Url = this.GetModUrl(id), Downloads = files.Files - .Select(file => (IModDownload)new GenericModDownload(file.Name, null, file.FileVersion)) + .Select(file => (IModDownload)new GenericModDownload(file.Name, file.Description, file.FileVersion)) .ToArray() }; } diff --git a/src/SMAPI.Web/SMAPI.Web.csproj b/src/SMAPI.Web/SMAPI.Web.csproj index ce5ffdbd..f1bdb866 100644 --- a/src/SMAPI.Web/SMAPI.Web.csproj +++ b/src/SMAPI.Web/SMAPI.Web.csproj @@ -22,8 +22,8 @@ - - + + -- cgit From 621b989c243a8aa1ff5c4928026f2cfe087f378d Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 30 Apr 2021 19:16:52 -0400 Subject: update web and unit test packages --- .../SMAPI.ModBuildConfig.Analyzer.Tests.csproj | 4 ++-- src/SMAPI.Tests/SMAPI.Tests.csproj | 4 ++-- src/SMAPI.Toolkit/SMAPI.Toolkit.csproj | 2 +- src/SMAPI.Web/SMAPI.Web.csproj | 14 +++++++------- 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/SMAPI.Toolkit') diff --git a/src/SMAPI.ModBuildConfig.Analyzer.Tests/SMAPI.ModBuildConfig.Analyzer.Tests.csproj b/src/SMAPI.ModBuildConfig.Analyzer.Tests/SMAPI.ModBuildConfig.Analyzer.Tests.csproj index d0123e93..8cc61f44 100644 --- a/src/SMAPI.ModBuildConfig.Analyzer.Tests/SMAPI.ModBuildConfig.Analyzer.Tests.csproj +++ b/src/SMAPI.ModBuildConfig.Analyzer.Tests/SMAPI.ModBuildConfig.Analyzer.Tests.csproj @@ -7,8 +7,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/SMAPI.Tests/SMAPI.Tests.csproj b/src/SMAPI.Tests/SMAPI.Tests.csproj index a0e5b2df..27520baf 100644 --- a/src/SMAPI.Tests/SMAPI.Tests.csproj +++ b/src/SMAPI.Tests/SMAPI.Tests.csproj @@ -16,9 +16,9 @@ - + - + diff --git a/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj b/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj index 0d96b486..8dc4d559 100644 --- a/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj +++ b/src/SMAPI.Toolkit/SMAPI.Toolkit.csproj @@ -9,7 +9,7 @@ - + diff --git a/src/SMAPI.Web/SMAPI.Web.csproj b/src/SMAPI.Web/SMAPI.Web.csproj index f1bdb866..e9d209ec 100644 --- a/src/SMAPI.Web/SMAPI.Web.csproj +++ b/src/SMAPI.Web/SMAPI.Web.csproj @@ -13,15 +13,15 @@ - - + + - - - - + + + + - + -- cgit