remove System.ValueTuple
This caused reference errors on Linux/Mac, and there aren't enough use cases to look into it further for now.
This commit is contained in:
parent
771263299c
commit
136525b40d
|
@ -27,7 +27,6 @@ For players:
|
||||||
For modders:
|
For modders:
|
||||||
* Added `SDate` utility for in-game date calculations (see [API reference](http://stardewvalleywiki.com/Modding:SMAPI_APIs#Dates)).
|
* Added `SDate` utility for in-game date calculations (see [API reference](http://stardewvalleywiki.com/Modding:SMAPI_APIs#Dates)).
|
||||||
* Added support for minimum dependency versions in `manifest.json` (see [API reference](http://stardewvalleywiki.com/Modding:SMAPI_APIs#Manifest)).
|
* Added support for minimum dependency versions in `manifest.json` (see [API reference](http://stardewvalleywiki.com/Modding:SMAPI_APIs#Manifest)).
|
||||||
* Added `System.ValueTuple.dll` to the SMAPI install package so mods can use [C# 7 value tuples](https://docs.microsoft.com/en-us/dotnet/csharp/tuples).
|
|
||||||
* Added more useful logging when loading mods.
|
* Added more useful logging when loading mods.
|
||||||
* Changed `manifest.MinimumApiVersion` from string to `ISemanticVersion`. This shouldn't affect mods unless they referenced that field in code.
|
* Changed `manifest.MinimumApiVersion` from string to `ISemanticVersion`. This shouldn't affect mods unless they referenced that field in code.
|
||||||
* Fixed `SemanticVersion` parsing some invalid versions into close approximations (like `1.apple` → `1.0-apple`).
|
* Fixed `SemanticVersion` parsing some invalid versions into close approximations (like `1.apple` → `1.0-apple`).
|
||||||
|
|
|
@ -43,9 +43,6 @@
|
||||||
<HintPath>..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
|
<HintPath>..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="..\GlobalAssemblyInfo.cs">
|
<Compile Include="..\GlobalAssemblyInfo.cs">
|
||||||
|
|
|
@ -4,5 +4,4 @@
|
||||||
<package id="Moq" version="4.7.10" targetFramework="net45" />
|
<package id="Moq" version="4.7.10" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net45" />
|
||||||
<package id="NUnit" version="3.6.1" targetFramework="net452" />
|
<package id="NUnit" version="3.6.1" targetFramework="net452" />
|
||||||
<package id="System.ValueTuple" version="4.3.1" targetFramework="net45" />
|
|
||||||
</packages>
|
</packages>
|
|
@ -228,7 +228,7 @@ namespace StardewModdingAPI.Framework.ModLoading
|
||||||
from entry in mod.Manifest.Dependencies
|
from entry in mod.Manifest.Dependencies
|
||||||
let dependencyMod = mods.FirstOrDefault(m => string.Equals(m.Manifest?.UniqueID, entry.UniqueID, StringComparison.InvariantCultureIgnoreCase))
|
let dependencyMod = mods.FirstOrDefault(m => string.Equals(m.Manifest?.UniqueID, entry.UniqueID, StringComparison.InvariantCultureIgnoreCase))
|
||||||
orderby entry.UniqueID
|
orderby entry.UniqueID
|
||||||
select (ID: entry.UniqueID, MinVersion: entry.MinimumVersion, Mod: dependencyMod)
|
select new { ID = entry.UniqueID, MinVersion = entry.MinimumVersion, Mod = dependencyMod }
|
||||||
)
|
)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
|
|
|
@ -232,11 +232,11 @@ namespace StardewModdingAPI.Framework
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return entry.Interceptor.CanLoad<T>(info);
|
return entry.Value.CanLoad<T>(info);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
this.Monitor.Log($"{entry.Mod.DisplayName} crashed when checking whether it could load asset '{info.AssetName}', and will be ignored. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
this.Monitor.Log($"{entry.Key.DisplayName} crashed when checking whether it could load asset '{info.AssetName}', and will be ignored. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -247,14 +247,14 @@ namespace StardewModdingAPI.Framework
|
||||||
return null;
|
return null;
|
||||||
if (loaders.Length > 1)
|
if (loaders.Length > 1)
|
||||||
{
|
{
|
||||||
string[] loaderNames = loaders.Select(p => p.Mod.DisplayName).ToArray();
|
string[] loaderNames = loaders.Select(p => p.Key.DisplayName).ToArray();
|
||||||
this.Monitor.Log($"Multiple mods want to provide the '{info.AssetName}' asset ({string.Join(", ", loaderNames)}), but an asset can't be loaded multiple times. SMAPI will use the default asset instead; uninstall one of the mods to fix this. (Message for modders: you should usually use {typeof(IAssetEditor)} instead to avoid conflicts.)", LogLevel.Warn);
|
this.Monitor.Log($"Multiple mods want to provide the '{info.AssetName}' asset ({string.Join(", ", loaderNames)}), but an asset can't be loaded multiple times. SMAPI will use the default asset instead; uninstall one of the mods to fix this. (Message for modders: you should usually use {typeof(IAssetEditor)} instead to avoid conflicts.)", LogLevel.Warn);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetch asset from loader
|
// fetch asset from loader
|
||||||
IModMetadata mod = loaders[0].Mod;
|
IModMetadata mod = loaders[0].Key;
|
||||||
IAssetLoader loader = loaders[0].Interceptor;
|
IAssetLoader loader = loaders[0].Value;
|
||||||
T data;
|
T data;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -290,8 +290,8 @@ namespace StardewModdingAPI.Framework
|
||||||
foreach (var entry in this.GetInterceptors(this.Editors))
|
foreach (var entry in this.GetInterceptors(this.Editors))
|
||||||
{
|
{
|
||||||
// check for match
|
// check for match
|
||||||
IModMetadata mod = entry.Mod;
|
IModMetadata mod = entry.Key;
|
||||||
IAssetEditor editor = entry.Interceptor;
|
IAssetEditor editor = entry.Value;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!editor.CanEdit<T>(info))
|
if (!editor.CanEdit<T>(info))
|
||||||
|
@ -299,7 +299,7 @@ namespace StardewModdingAPI.Framework
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
this.Monitor.Log($"{entry.Mod.DisplayName} crashed when checking whether it could edit asset '{info.AssetName}', and will be ignored. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
this.Monitor.Log($"{mod.DisplayName} crashed when checking whether it could edit asset '{info.AssetName}', and will be ignored. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ namespace StardewModdingAPI.Framework
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
this.Monitor.Log($"{entry.Mod.DisplayName} crashed when editing asset '{info.AssetName}', which may cause errors in-game. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
this.Monitor.Log($"{mod.DisplayName} crashed when editing asset '{info.AssetName}', which may cause errors in-game. Error details:\n{ex.GetLogSummary()}", LogLevel.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate edit
|
// validate edit
|
||||||
|
@ -333,7 +333,7 @@ namespace StardewModdingAPI.Framework
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Get all registered interceptors from a list.</summary>
|
/// <summary>Get all registered interceptors from a list.</summary>
|
||||||
private IEnumerable<(IModMetadata Mod, T Interceptor)> GetInterceptors<T>(IDictionary<IModMetadata, IList<T>> entries)
|
private IEnumerable<KeyValuePair<IModMetadata, T>> GetInterceptors<T>(IDictionary<IModMetadata, IList<T>> entries)
|
||||||
{
|
{
|
||||||
foreach (var entry in entries)
|
foreach (var entry in entries)
|
||||||
{
|
{
|
||||||
|
@ -342,11 +342,11 @@ namespace StardewModdingAPI.Framework
|
||||||
|
|
||||||
// special case if mod is an interceptor
|
// special case if mod is an interceptor
|
||||||
if (metadata.Mod is T modAsInterceptor)
|
if (metadata.Mod is T modAsInterceptor)
|
||||||
yield return (metadata, modAsInterceptor);
|
yield return new KeyValuePair<IModMetadata, T>(metadata, modAsInterceptor);
|
||||||
|
|
||||||
// registered editors
|
// registered editors
|
||||||
foreach (T interceptor in interceptors)
|
foreach (T interceptor in interceptors)
|
||||||
yield return (metadata, interceptor);
|
yield return new KeyValuePair<IModMetadata, T>(metadata, interceptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,9 +79,6 @@
|
||||||
<Reference Include="System.Runtime.Caching">
|
<Reference Include="System.Runtime.Caching">
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Windows.Forms" Condition="$(OS) == 'Windows_NT'" />
|
<Reference Include="System.Windows.Forms" Condition="$(OS) == 'Windows_NT'" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
|
|
@ -2,5 +2,4 @@
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net45" />
|
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||||
<package id="System.ValueTuple" version="4.3.1" targetFramework="net45" />
|
|
||||||
</packages>
|
</packages>
|
|
@ -31,7 +31,6 @@
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Mono" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Mono" />
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.ValueTuple.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" />
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(PackageInternalPath)\Mono" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(PackageInternalPath)\Mono" />
|
||||||
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(PackageInternalPath)\Mono\Mods\%(RecursiveDir)" />
|
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(PackageInternalPath)\Mono\Mods\%(RecursiveDir)" />
|
||||||
|
|
Loading…
Reference in New Issue