+1
Fixed in Hotfix

Cannot Build/Update Unit Options after updating to 1.4.6. MissingMethodException error.

Victory Over All 2 years ago updated by Lazlo Bonin (Lead Developer) 2 years ago 12 2 duplicates

I recently tried updating to 1.4.6 and encountered some strange behaviours and errors. I have attempted to update from 1.4.4 and 1.4.5, and have the same results. I’m running Unity 2019.1.8f1 on macOS High Sierra 10.13.6. I’m downloading from the Asset Store and updating using the installers in the Install Bolt folder.

First, when making a backup using the Update Wizard it reaches the end of the progress bar, then a Backup Error dialogue shows up stating:

Failed to create backup:
UnityEditor.VersionControl.Task
UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)

The only option is to hit OK. Then at the Required Actions tab of the Update Wizard it states I must rebuild my unit options. I’ve tried doing this both whilst the Update Wizard is still open and after proceeding to Finish, but the progress bar (which usually shows up when building unit options) simply flashes up for a split second then vanishes, and the following error shows up in the console:

MissingMethodException: UnityEditor.VersionControl.Task UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)
Bolt.UnitBase.Build () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Options/UnitBase.cs:174)
Bolt.UnitOptionsWizard.BuildUnitOptions () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Windows/UnitOptionsWizard.cs:45)

A similar error shows up if I attempt to Update Unit Options, or if I go through the Setup Wizard process.

Despite these errors, it shows that 1.4.6 is installed in the About and all looks fine, but I cannot Build or Update Unit Options. I’ve “downgraded” to 1.4.4 and 1.4.5 using the installers found in the Install Bolt folder and the ability to Build or Update Unit Options returns to normal. I also have a backed up version of the project which uses 1.4.4 and this has no problems either.

Is the missing Input units fix in 1.4.6 necessary for 2019.1? Standard Keyboard and Mouse input has been working fine, but I was about to look into implementing either the New Input System or Rewired for gamepads, so I wanted to be sure that input was working as intended. If 1.4.6 isn’t necessary for 2019.1 then I’ll simply stick with 1.4.5 for now, but I thought it was worth posting about this in case it’s a genuine bug and not simply User Error™.

Bolt Version:
1.4.6
Unity Version:
2019.1.8f1
Platform(s):
Scripting Backend:
.NET Version (API Compatibility Level):

Answer

Duplicates 2

Working on Fix

Implementing for v.1.4.6. The exact check is:

When adding types/generating unit options in 2019.1.14f1 (.net4 netstandard2) I'm now getting 

MissingMethodException: UnityEditor.VersionControl.Task UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)

after upgrading to the latest 1.4.6 (net4)

Pending Review

Hi Oliver,

What is the full stack trace of this error exactly?

Dependent on what you do:

MissingMethodException: UnityEditor.VersionControl.Task UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)
Bolt.UnitBase.Update () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Options/UnitBase.cs:257)
Bolt.UnitOptionsWizard.UpdateUnitOptions () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Windows/UnitOptionsWizard.cs:51)
MissingMethodException: UnityEditor.VersionControl.Task UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)
Ludiq.SerializedPropertyProviderProvider.GenerateProviderScripts () (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/SerializedProperties/SerializedPropertyProviderProvider.cs:68)
Ludiq.GeneratePropertyProvidersPage.OnContentGUI () (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/GeneratePropertyProvidersWindow/GeneratePropertyProvidersPage.cs:38)
UnityEngine.Debug:LogException(Exception)
Ludiq.GeneratePropertyProvidersPage:OnContentGUI() (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/GeneratePropertyProvidersWindow/GeneratePropertyProvidersPage.cs:45)
Ludiq.Page:DrawContent() (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/Page.cs:70)
Ludiq.SinglePageWindow`1:OnGUI() (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/SinglePageWindow.cs:74)
Ludiq.WrappedEditorWindow:OnGUI() (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/WrappedEditorWindow.cs:51)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
MissingMethodException: UnityEditor.VersionControl.Task UnityEditor.VersionControl.Provider.Checkout(string,UnityEditor.VersionControl.CheckoutMode)
Bolt.UnitBase.Build () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Options/UnitBase.cs:174)
Bolt.TypeOptionsPage.Complete () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Windows/TypeOptionsPage.cs:94)
Bolt.TypeOptionsPage.OnContentGUI () (at C:/Users/lazlo/Projects/Bolt1/Package/Bolt.Flow/Editor/Windows/TypeOptionsPage.cs:81)
Ludiq.Page.DrawContent () (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/Page.cs:70)
Ludiq.Wizard.OnGUI () (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/Wizard.cs:106)
Ludiq.WrappedEditorWindow.OnGUI () (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Editor/Windows/WrappedEditorWindow.cs:51)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <7d97106330684add86d080ecf65bfe69>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <7d97106330684add86d080ecf65bfe69>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <7d97106330684add86d080ecf65bfe69>:0)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:340)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:334)
UnityEditor.HostView.OldOnGUI () (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:146)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:295)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:481)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:464)
UnityEngine.UIElements.IMGUIContainer.HandleEvent (UnityEngine.UIElements.EventBase evt) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:444)
UnityEngine.UIElements.MouseCaptureDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/Events/MouseCaptureDispatchingStrategy.cs:93)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:280)
UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:156)
UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/Panel.cs:189)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:255)
UnityEngine.UIElements.UIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:78)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)

Looks like Oliver's error above is similar to the error I'm getting with 1.4.6. I posted a Bug thread earlier with a bit more info. Hopefully it helps.

Pending Review

Hi John,

Sorry you're experiencing this issue and thanks for the report.

I'll look into it!

+1
Working on Fix

Hi everyone,

Looks like I introduced a regression in v.1.4.6 trying to fix a version control issue.

I'll look into this ASAP to issue a patch/hotfix, hopefully today.

Thanks for your patience!

+1

Hi,

So I figured the cause of the issue. Unity changed the underlying signature of Provider.Checkout in 2019.1 but didn't mark it as obsolete or API upgradable. Using a few reflection hacks to fix it.