Mutagen-Modding / Spriggit

A tool to facilitate converting Bethesda plugin files to a text based format that can be stored in Git
GNU General Public License v3.0
88 stars 10 forks source link

It seems every time the translation package is updated, it breaks the existing version #66

Closed JMPZ11 closed 2 months ago

JMPZ11 commented 3 months ago

So far, every time the model has changed, it breaks the spriggit UI with very confusing errors (Object of type 'Mutagen.Bethesda.Plugins.ModPath' cannot be converted to type 'Mutagen.Bethesda.Plugins.ModPath'.)

I typically have to hunt down the assembly caches and delete the whole thing to get it working again... if it even will.

Is there any chance you could distribute a version that has the translation package(s) bundled; and has the option to not auto-update?

\Spriggit.Yaml.Starfield.dll
2024-06-09 15:45:57.249 -04:00 [INF] Loading plugin: C:\Users\jason\AppData\Local\Temp\Spriggit\Sources\Spriggit.Yaml.Starfield.0.19.0\Spriggit.Yaml.Starfield.0.19.0\lib\net7.0\Spriggit.Yaml.Starfield.dll
2024-06-09 15:45:57.264 -04:00 [INF] Retrieving default assembly
2024-06-09 15:45:57.264 -04:00 [INF] Retrieving default assembly
2024-06-09 15:45:57.282 -04:00 [INF] Trying to create entry point object
2024-06-09 15:45:57.282 -04:00 [INF] Finding entry point type
2024-06-09 15:45:57.282 -04:00 [INF] Looking for typically named entry point classes
2024-06-09 15:45:57.283 -04:00 [INF] Trying to create simplistic entry point object
2024-06-09 15:45:57.283 -04:00 [INF] Finding simplistic entry point type
2024-06-09 15:45:57.283 -04:00 [INF] Looking for typically named simplistic entry point classes
2024-06-09 15:45:57.283 -04:00 [INF] Cached entry point for Spriggit.Yaml.Starfield.0.19.0
2024-06-09 15:45:57.285 -04:00 [INF] Trying to create entry point object
2024-06-09 15:45:57.285 -04:00 [INF] Finding entry point type
2024-06-09 15:45:57.285 -04:00 [INF] Looking for typically named entry point classes
2024-06-09 15:45:57.287 -04:00 [INF] Trying to create simplistic entry point object
2024-06-09 15:45:57.287 -04:00 [INF] Finding simplistic entry point type
2024-06-09 15:45:57.287 -04:00 [INF] Looking for typically named simplistic entry point classes
2024-06-09 15:45:57.287 -04:00 [INF] Cached entry point for Spriggit.Yaml.Starfield.0.21.0
2024-06-09 15:46:34.496 -04:00 [INF]   CACHE https://api.nuget.org/v3-flatcontainer/spriggit.yaml.starfield/index.json
2024-06-09 15:46:34.499 -04:00 [INF] Getting first identity for SpriggitMeta { Source = Spriggit.Yaml.Starfield.0.21.0, Release = Starfield }
2024-06-09 15:46:34.499 -04:00 [INF] Cached first identity for SpriggitMeta { Source = Spriggit.Yaml.Starfield.0.21.0, Release = Starfield }: Spriggit.Yaml.Starfield.0.21.0
2024-06-09 15:46:37.257 -04:00 [INF] Syncing from Mod to Git. C:\Program Files (x86)\Steam\steamapps\common\Starfield\Data\1k_starstations.esm -> C:\a1mods\esm\1k_starstations
2024-06-09 15:46:37.259 -04:00 [INF] Spriggit version 0.20.0+9f0f89a1f
2024-06-09 15:46:37.260 -04:00 [INF] Getting entry point for SpriggitMeta { Source = Spriggit.Yaml.Starfield.0.21.0, Release = Starfield }
2024-06-09 15:46:37.260 -04:00 [INF] Starting to serialize from 1k_starstations.esm => C:\Program Files (x86)\Steam\steamapps\common\Starfield\Data\1k_starstations.esm to C:\a1mods\esm\1k_starstations with SpriggitMeta { Source = Spriggit.Yaml.Starfield.0.21.0, Release = Starfield }
2024-06-09 15:46:37.289 -04:00 [ERR] Error syncing to Git
System.ArgumentException: Object of type 'Mutagen.Bethesda.Plugins.ModPath' cannot be converted to type 'Mutagen.Bethesda.Plugins.ModPath'.
   at System.RuntimeType.CheckValue(Object& value, ParameterCopyBackAction& copyBack, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
   at System.Reflection.MethodBase.CheckArguments(Span`1 copyOfParameters, IntPtr* byrefParameters, Span`1 shouldCopyBack, ReadOnlySpan`1 parameters, RuntimeType[] sigTypes, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
   at System.Reflection.RuntimeMethodInfo.InvokeWithManyArguments(RuntimeMethodInfo mi, Int32 argCount, Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Spriggit.Core.DynamicEntryPoint.Serialize(ModPath modPath, DirectoryPath outputDir, GameRelease release, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, SpriggitSource meta, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Core\DynamicEntryPoint.cs:line 29
   at Spriggit.Engine.AssemblyLoadedEntryPoint.Serialize(ModPath modPath, DirectoryPath outputDir, GameRelease release, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, SpriggitSource meta, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\AssemblyLoadedEntryPoint.cs:line 37
   at Spriggit.Engine.SpriggitEngine.Serialize(ModPath bethesdaPluginPath, DirectoryPath outputFolder, IEngineEntryPoint entryPt, SpriggitMeta meta, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\SpriggetEngine.cs:line 62
   at Spriggit.UI.ViewModels.Transient.LinkVm.SyncToGit(CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.UI\ViewModels\Transient\LinkVm.cs:line 220
2024-06-09 15:46:46.206 -04:00 [INF] Disposing container

(I am unable to add new mappings with the new UI, so kinda stuck again)

Noggog commented 3 months ago

What version of the CLI/UI are these logs from?

JMPZ11 commented 2 months ago

This was using the UI version of 0.20.0 -- but I get this same error I believe every time the translation package is updated.

The solution as mentioned, required hunting down dotnet's randomly named per-app assembly cache for Spriggit and deleting everything (or downloading a new version to a new folder)

Or, in this case, I was able to get around it by changing it from "latest" to 0.20.0,

I keep spriggit in a folder on my desktop (It's that valuable 😊) And have only used the GUI so far. When I can trust that updated models won't break it (and it can write compressed cells - SF kinda requires it I think), I'd like to use it to establish a solid dev pipline.

This is why I keep pestering, and I hope I'm not coming across as pushy or anything... just trying to fulfil the dream lol

Noggog commented 2 months ago

Just added another mechanism for backwards compatibility. Let's reopen if it keeps having issues