Unable to update Sirenix.OdinInspector.Editor on Unity 2023.3 causing Addressables API warnings

Issue #973 resolved
Dan Vicarel created an issue

What happened?

Importing Odin with the Addressables API module on Unity 2023.3 results in these warnings:

Unable to update following assemblies:Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll (Name = Sirenix.OdinInspector.Editor, Error = 131) (Output: C:\Users\shund\AppData\Local\Temp\tmp6dd198b7.tmp)

Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly
at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader, Boolean throwIfSymbolsAreNotMaching)
at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly(String assemblyPath, IAPIUpdaterListener listener, FileAccess mode, String[] searchPaths)
at AssemblyUpdater.Core.AssemblyUpdaterContext.From(String assemblyPath, ConfigurationProvider configuration, String[] assemblySearchPaths, IAPIUpdaterListener listener)
at AssemblyUpdater.Application.Program.<>c__DisplayClass0_0.<Main>b__1(UpdateOptions o)
at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)
at AssemblyUpdater.Application.Program.Main(String[] args)
Following assemblies were successfully updated but due to the failed ones above they were ignored (not copied to the destination folder):Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp19cf640b.tmp)

Packages/rabadash8820.unityutil/Runtime/UnityUtil.dll (Result = 11) (Output: C:\Users\shund\AppData\Local\Temp\tmp4b56c04a.tmp)
[AssemblyUpdater] Type reference 'UnityEngine.PhysicMaterial' replaced with 'UnityEngine.PhysicsMaterial' as return type of 'UnityEngine.PhysicMaterial UnityEngine.Collider::get_material()' in 'System.Void UnityUtil.Physics.ColliderDuplicator::duplicateCollider(UnityEngine.Collider,UnityEngine.GameObject) {IL_00c1: callvirt UnityEngine.PhysicMaterial UnityEngine.Collider::get_material()}'.
[AssemblyUpdater] Type reference 'UnityEngine.PhysicMaterial' replaced with 'UnityEngine.PhysicsMaterial' in '' parameter type of System.Void UnityEngine.Collider::set_material(UnityEngine.PhysicMaterial).
[AssemblyUpdater] Member 'System.Void UnityEngine.Rigidbody::set_velocity(UnityEngine.Vector3)' replaced with 'System.Void UnityEngine.Rigidbody::set_linearVelocity(UnityEngine.Vector3)' in method 'System.Void UnityUtil.Spawner::Spawn()'.
[AssemblyUpdater] Member 'UnityEngine.Vector3 UnityEngine.Rigidbody::get_velocity()' replaced with 'UnityEngine.Vector3 UnityEngine.Rigidbody::get_linearVelocity()' in method 'UnityEngine.Vector3 UnityUtil.Movement.TargetFlyer::getFlyingForce(UnityEngine.Vector3)'.

Packages/rabadash8820.unityutil/Editor/UnityUtil.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmpe340eff.tmp)

Assets/Boop/Editor/Boop.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp925f383.tmp)

Packages/com.serilog.enrichers.unityobjectpath/Runtime/Serilog.Enrichers.UnityObjectPath.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp5ac1dd9f.tmp)

Assets/Boop/Runtime/Boop.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp4aff382a.tmp)

Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Utilities.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp130004f5.tmp)

Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Utilities.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp26e4519e.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp70fac541.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp5e975e32.tmp)

Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Serialization.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp3b5d2ebd.tmp)

Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Serialization.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp3d1f43e6.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp34edde6.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp26530f36.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp327c961.tmp)

Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp645786e3.tmp)

UnityEditor.Scripting.APIUpdaterLogger:WriteErrorToConsole (string,object[])
UnityEditorInternal.APIUpdating.APIUpdaterManager:HandleAssemblyUpdaterErrors (System.Collections.Generic.IList`1<UnityEditorInternal.APIUpdating.AssemblyUpdaterUpdateTask>)
UnityEditorInternal.APIUpdating.APIUpdaterManager:UpdateAssemblies ()
UnityEditorInternal.APIUpdating.APIUpdaterManager:ProcessImportedAssemblies (string[])

Addressables API has changed in this version of Unity, this API was missing: PlayerDataGroupSchema type not found
UnityEngine.Debug:LogWarning (object)
Sirenix.OdinInspector.Editor.AddressablesUtility:.cctor ()
Sirenix.OdinValidator.Editor.SessionConfig:UpdateAssets () (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Config/SessionConfig.cs:423)
Sirenix.OdinValidator.Editor.SessionConfig:UpdateAll () (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Config/SessionConfig.cs:161)
Sirenix.OdinValidator.Editor.SessionConfig:ShouldValidateScene (string) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Config/SessionConfig.cs:123)
Sirenix.OdinValidator.Editor.SessionConfig:ShouldValidateUnityObjectReference (int) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Config/SessionConfig.cs:606)
Sirenix.OdinValidator.Editor.ValidationSession:Enqueue (Sirenix.OdinValidator.Editor.ProjectEvent,bool) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Core/ValidationSession.cs:776)
Sirenix.OdinValidator.Editor.ValidationSession:OnProjectEvent (Sirenix.OdinValidator.Editor.ProjectEvent[]) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Core/ValidationSession.cs:1010)
Sirenix.OdinValidator.Editor.ProjectWatcher:InvokeProjectEvent (Sirenix.OdinValidator.Editor.ProjectEvent[]) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/ProjectWatcher.cs:291)
Sirenix.OdinValidator.Editor.ProjectWatcher:OnValidationStateChanged (Sirenix.OdinInspector.Editor.Validation.ValidationStateChangeInfo) (at Y:/Repos/Sirenix-Development-Framework/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/ProjectWatcher.cs:117)
Sirenix.OdinInspector.Editor.Validation.ValidationEvents:InvokeOnValidationStateChanged (Sirenix.OdinInspector.Editor.Validation.ValidationStateChangeInfo)
Sirenix.OdinInspector.Editor.Validation.ValidationDrawer`1<Boop.UiToolkitButtonClickHandler>:Initialize ()
Sirenix.OdinInspector.Editor.OdinDrawer:Initialize (Sirenix.OdinInspector.Editor.InspectorProperty)
Sirenix.OdinInspector.Editor.InspectorProperty:GetActiveDrawerChain (bool&)
Sirenix.OdinInspector.Editor.InspectorProperty:GetActiveDrawerChain ()
Sirenix.OdinInspector.Editor.InspectorProperty:Draw (UnityEngine.GUIContent)
Sirenix.OdinInspector.Editor.PropertyTree:DrawProperties ()
Sirenix.OdinInspector.Editor.PropertyTree:Draw (bool)
Sirenix.OdinInspector.Editor.OdinEditor:DrawTree ()
Sirenix.OdinInspector.Editor.OdinEditor:DrawOdinInspector ()
Sirenix.OdinInspector.Editor.OdinEditor:OnInspectorGUI ()
UnityEditor.InspectorWindow:RedrawFromNative ()

How can we reproduce it?

  • Create a new Unity 2023.3 project
  • Install the Addressables package from Package Manager window
  • Install Odin

What version of Unity are you using? 2023.3.0b10

What version of Odin are you using? 3.2.1.0

Do you have Editor Only mode enabled? Yes

What operating system are you on? Windows 11 Pro (23H2)

Comments (18)

  1. Lucas Schwaner

    Hey, this should be fixed in the latest version (3.3, currently in beta). Let me know if the issue persists if you give the beta a try.

  2. Dan Vicarel reporter

    Hey Lucas, thanks for the quick reply. I just tried importing Odin 3.3.0.1 beta into a fresh Unity 2023.3.0f10 beta project (3D URP project template, if that’s relevant.) and unfortunately I’m seeing the same warnings. First I see this dialog:

    Then, when I click Yes, I see the following errors/warnings in the Unity Console.

    Unable to update following assemblies:Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll (Name = Sirenix.OdinInspector.Editor, Error = 131) (Output: C:\Users\shund\AppData\Local\Temp\tmp10273792.tmp)

    Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly
    at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader, Boolean throwIfSymbolsAreNotMaching)
    at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
    at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
    at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
    at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly(String assemblyPath, IAPIUpdaterListener listener, FileAccess mode, String[] searchPaths)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.From(String assemblyPath, ConfigurationProvider configuration, String[] assemblySearchPaths, IAPIUpdaterListener listener)
    at AssemblyUpdater.Application.Program.<>c__DisplayClass0_0.<Main>b__1(UpdateOptions o)
    at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)
    at AssemblyUpdater.Application.Program.Main(String[] args)

    UnityEditor.Scripting.APIUpdaterLogger:WriteErrorToConsole (string,object[])
    UnityEditorInternal.APIUpdating.APIUpdaterManager:HandleAssemblyUpdaterErrors (System.Collections.Generic.IList`1<UnityEditorInternal.APIUpdating.AssemblyUpdaterUpdateTask>)
    UnityEditorInternal.APIUpdating.APIUpdaterManager:UpdateAssemblies ()
    UnityEditorInternal.APIUpdating.APIUpdaterManager:ProcessImportedAssemblies (string[])

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll.meta_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.pdb.meta_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.pdb_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.xml.meta_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.xml_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    Unable to update following assemblies:Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll (Name = Sirenix.OdinInspector.Editor, Error = 131) (Output: C:\Users\shund\AppData\Local\Temp\tmp266f8dc2.tmp)

    Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly
    at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader, Boolean throwIfSymbolsAreNotMaching)
    at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
    at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
    at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
    at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly(String assemblyPath, IAPIUpdaterListener listener, FileAccess mode, String[] searchPaths)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.From(String assemblyPath, ConfigurationProvider configuration, String[] assemblySearchPaths, IAPIUpdaterListener listener)
    at AssemblyUpdater.Application.Program.<>c__DisplayClass0_0.<Main>b__1(UpdateOptions o)
    at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)
    at AssemblyUpdater.Application.Program.Main(String[] args)
    Following assemblies were successfully updated but due to the failed ones above they were ignored (not copied to the destination folder):Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp11bcaca3.tmp)

    UnityEditor.Scripting.APIUpdaterLogger:WriteErrorToConsole (string,object[])
    UnityEditorInternal.APIUpdating.APIUpdaterManager:HandleAssemblyUpdaterErrors (System.Collections.Generic.IList`1<UnityEditorInternal.APIUpdating.AssemblyUpdaterUpdateTask>)
    UnityEditorInternal.APIUpdating.APIUpdaterManager:UpdateAssemblies ()
    UnityEditorInternal.APIUpdating.APIUpdaterManager:ProcessImportedAssemblies (string[])

    Unable to update following assemblies:Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll (Name = Sirenix.OdinInspector.Editor, Error = 131) (Output: C:\Users\shund\AppData\Local\Temp\tmp4bff6bd6.tmp)

    Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly
    at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader, Boolean throwIfSymbolsAreNotMaching)
    at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
    at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
    at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
    at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly(String assemblyPath, IAPIUpdaterListener listener, FileAccess mode, String[] searchPaths)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.From(String assemblyPath, ConfigurationProvider configuration, String[] assemblySearchPaths, IAPIUpdaterListener listener)
    at AssemblyUpdater.Application.Program.<>c__DisplayClass0_0.<Main>b__1(UpdateOptions o)
    at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)
    at AssemblyUpdater.Application.Program.Main(String[] args)
    Following assemblies were successfully updated but due to the failed ones above they were ignored (not copied to the destination folder):Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp44d794d4.tmp)

    UnityEditor.Scripting.APIUpdaterLogger:WriteErrorToConsole (string,object[])
    UnityEditorInternal.APIUpdating.APIUpdaterManager:HandleAssemblyUpdaterErrors (System.Collections.Generic.IList`1<UnityEditorInternal.APIUpdating.AssemblyUpdaterUpdateTask>)
    UnityEditorInternal.APIUpdating.APIUpdaterManager:UpdateAssemblies ()

    Automatically activating Odin Module 'Unity.Mathematics support' version '1.0.1.0', because its dependencies were detected...
    UnityEngine.Debug:Log (object)
    Sirenix.OdinInspector.Editor.Modules.ModuleManager:Refresh ()
    Sirenix.OdinInspector.Editor.Modules.OdinModuleConfig:RefreshModuleSetup ()
    Sirenix.OdinInspector.Editor.Modules.OdinModuleConfig/<>c:<.cctor>b__16_0 ()
    Sirenix.OdinInspector.Editor.UnityEditorEventUtility/<>c__DisplayClass14_0:<DelayAction>b__4 () (at C:/Sirenix/Sirenix Solution/Sirenix.Utilities.Editor/Misc/UnityEditorEventUtility.cs:121)
    Sirenix.OdinInspector.Editor.UnityEditorEventUtility/<>c__DisplayClass14_0:<DelayAction>b__2 () (at C:/Sirenix/Sirenix Solution/Sirenix.Utilities.Editor/Misc/UnityEditorEventUtility.cs:111)
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()

  3. Lucas Schwaner

    Hey Dan, I've tried to replicate your issue on 2023.3 with a fresh URP Project, using several 3.3 builds, but I am unable to reproduce the errors. Would you be able to provide a .zip file of the fresh URP project?

  4. Dan Vicarel reporter

    Interesting. Here’s a link to a minimal project on my Google Drive. This is the state of the project after installing Odin and seeing all the errors that I pasted above. If it helps, I’m using the “3D (URP) Core” project template (pictured below), not the 2D template or standard 3D template. This was using the same Unity/Odin versions that I mentioned above.

  5. Lucas Schwaner

    Hey, could you try removing the Library folder? We are unable to replicate this issue, and the .zip provided does not contain the Library folder. Since the project attached in the .zip doesn't throw any exceptions, the library could be the culprit.

  6. Dan Vicarel reporter

    Strange, this issue occurs for me even with the fresh project. That is, re-downloading the project that I shared from Google Drive and opening in Unity (so a fresh Library/ folder), I still get the following error:

    Unable to update following assemblies:Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll (Name = Sirenix.OdinInspector.Editor, Error = 131) (Output: C:\Users\shund\AppData\Local\Temp\tmp47a9659.tmp)

    Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly
    at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader, Boolean throwIfSymbolsAreNotMaching)
    at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
    at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
    at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
    at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly(String assemblyPath, IAPIUpdaterListener listener, FileAccess mode, String[] searchPaths)
    at AssemblyUpdater.Core.AssemblyUpdaterContext.From(String assemblyPath, ConfigurationProvider configuration, String[] assemblySearchPaths, IAPIUpdaterListener listener)
    at AssemblyUpdater.Application.Program.<>c__DisplayClass0_0.<Main>b__1(UpdateOptions o)
    at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)
    at AssemblyUpdater.Application.Program.Main(String[] args)
    Following assemblies were successfully updated but due to the failed ones above they were ignored (not copied to the destination folder):Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp65c55910.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp28a81893.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp370ffbf9.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp5e41b53a.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp61e858df.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp7b444fa0.tmp)

    Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.dll (Result = 0) (Output: C:\Users\shund\AppData\Local\Temp\tmp7247e97b.tmp)

    UnityEditor.Scripting.APIUpdaterLogger:WriteErrorToConsole (string,object[])
    UnityEditorInternal.APIUpdating.APIUpdaterManager:HandleAssemblyUpdaterErrors (System.Collections.Generic.IList`1<UnityEditorInternal.APIUpdating.AssemblyUpdaterUpdateTask>)
    UnityEditorInternal.APIUpdating.APIUpdaterManager:UpdateAssemblies ()
    UnityEditorInternal.APIUpdating.APIUpdaterManager:ProcessImportedAssemblies (string[])

  7. Dan Vicarel reporter

    Same issue is still occurring in a fresh project on Unity 6 Beta (6000.0.0b13, i.e., what Unity is calling 2023.3 betas now). I tested with:

    • Odin 3.3.01 Beta and the 3D URP Core project template
    • Odin 3.3.01 Beta and the default 3D project template
    • Odin 3.2.1.0 and the default 3D project template

    All of these project setups yield the same dialog box and “Symbols were found but are not matching the assembly” errors that I provided above. Also, if it matters, I got each of these Odin versions by downloading from the Odin website with the following options.

    @Lucas Schwaner Are you able to repro with any of these setups?

  8. Dan Vicarel reporter

    To make sure its not just something weird with my computer, I also just tried importing Odin in an earlier version of Unity. Both of the following setups did succeed without the above errors, so it really seems to be something on the latest version(s) of Unity.

    • Odin 3.3.0.1 beta on Unity 2022.3.16f1
    • Odin 3.2.1.0 on Unity 2022.3.16f1

  9. Lucas Schwaner

    Hey Dan, we managed to reproduce the issue. It seems there's an issue with how the Assembly Upgrader interacts with 'Sirenix.OdinInspector.Editor.dll'. The modified DLL no longer associates 'Sirenix.OdinInspector.Editor.pdb' as its related PDB file; instead, it associates a temporary PDB file. This means that when 'ModuleDefinition.ReadSymbols' is called in Mono.Cecil, it compares the unmodified PDB file with the modified DLL file, resulting in a mismatch of symbols. We've pushed a beta update earlier today (3.3.0.2), and in that update, we adjusted our code so that the Assembly Upgrader no longer needs to upgrade 'Sirenix.OdinInspector.Editor.dll'. We are also working on creating a reproduction case for Unity to investigate.

  10. Dan Vicarel reporter

    Awesome, so glad you were able to repro this. And thanks for the quick turnaround on another beta release, I’ll give that a try this evening!

    That does seem like a pretty big issue that Unity’s Assembly Upgrader can potentially break the association with PDB files. I wonder if there’s some editor callback that you can use to know if an upgrade occurred and then manually update the PDB with Cecil or something else. I know precious little about debug symbols, but I assume its just the GUID in the updated assembly not matching the existing GUID in the PDB. Definitely something that Unity should handle itself though… I’ll put my vote on any bug report you create lol.

  11. Dan Vicarel reporter

    Okay, I can confirm that the Assembly Upgrader error is gone when importing Odin 3.3.0.2 beta into a fresh Unity 6000.0.0b13 project. Thanks again so much for addressing this!

    Unfortunately, it does look like a new error is occurring after a fresh import (or Reimport All):

    FormatException: Unrecognized Guid format.
    System.Guid+GuidResult.SetFailure (System.Guid+ParseFailureKind failure, System.String failureMessageID, System.Object failureMessageFormatArgument, System.String failureArgumentName, System.Exception innerException) (at <795a77b0d71641bca88ebd6007d059f3>:0)
    System.Guid+GuidResult.SetFailure (System.Guid+ParseFailureKind failure, System.String failureMessageID) (at <795a77b0d71641bca88ebd6007d059f3>:0)
    System.Guid.TryParseGuid (System.ReadOnlySpan`1[T] guidString, System.Guid+GuidStyles flags, System.Guid+GuidResult& result) (at <795a77b0d71641bca88ebd6007d059f3>:0)
    System.Guid..ctor (System.String g) (at <795a77b0d71641bca88ebd6007d059f3>:0)
    Sirenix.OdinValidator.Editor.WorkItemResultCountCache.RegisterWorkItemResultCount (System.String guid, System.UInt32 count) (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Core/WorkItemResultCountCache.cs:227)
    Sirenix.OdinValidator.Editor.ValidationSession+<ProcessWorkItem>d__72.MoveNext () (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Core/ValidationSession.cs:1139)
    Sirenix.OdinValidator.Editor.ValidationSession+<BackgroundValidationTicker>d__73.MoveNext () (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Core/ValidationSession.cs:1376)
    Sirenix.OdinValidator.Editor.BackgroundTaskHandle.MoveNext () (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/BackgroundTaskRunner.cs:260)
    UnityEngine.Debug:LogException(Exception)
    Sirenix.OdinValidator.Editor.BackgroundTaskHandle:MoveNext() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/BackgroundTaskRunner.cs:271)
    Sirenix.OdinValidator.Editor.<TaskEnumerator>d__9:MoveNext() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/BackgroundTaskRunner.cs:94)
    Sirenix.OdinValidator.Editor.<>c__DisplayClass8_0:<.cctor>b__0() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinValidator.Editor/Utils/BackgroundTaskRunner.cs:49)
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

  12. Lucas Schwaner

    Great! We have also just released an update for the beta (3.3.0.3) specifically targeting that exception. Let me know how that works out for you.

  13. Dan Vicarel reporter

    Amazing, thank you! The FormatException is gone with 3.3.0.3! I would say this Issue is good to close now. 👍

    Out of curiosity, how did you track down the APIs that you needed to update in the Odin assemblies? I’m getting similar update issues from some of my own assemblies, but I’m not sure what Unity is actually trying to update. I’m familiar with decompiling using tools like dnSpy, but idk if/where Unity is storing the updated assemblies or which types to decompile to find the differences.

  14. Dan Vicarel reporter

    Also, if I had to nitpick one other thing: a fresh import of Odin results in a lot of warnings like the following for various files with _tmp in the name:

    A meta data file (.meta) exists but its asset 'Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinValidator.Editor.pdb.meta_tmp' can't be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

    I see these files in the .unitypackage whenever I update Odin, so clearly Odin is automatically deleting them somewhere after it’s installed. Looks like maybe it just needs to delete the associated .meta files too.

  15. Lucas Schwaner

    Glad we got that resolved. I'll take a look at what is happening with those .meta_tmp files.

    In the Console window, there's the burger menu on the top right. Open that, then select 'Open Editor Log'. In this log, you can see why the Assembly Updater needs to run. Look for '[API Updater]' to figure out which DLLs needed to be updated, and for '[AssemblyUpdater]' about what specifically was updated (e.g., Type reference 'Some.Object' replaced with 'Some.ObjectB' as the field type of 'field').

  16. Dan Vicarel reporter

    Hm, I’m having trouble finding any sort of “Type reference replaced with…” logs in the Editor log file; all I can find is the “Symbols were found but are not matching the assembly” error from above. But I guess that’s not your concern lol. I’ve gone ahead and Resolved this Issue. Thanks again for your help!

  17. Log in to comment