ManlyMarco / RuntimeUnityEditor

In-game inspector and debugging tools for applications made with Unity3D game engine
GNU General Public License v3.0
810 stars 99 forks source link

Failed to initialize REPL environment #68

Open mricher-git opened 9 months ago

mricher-git commented 9 months ago

Getting the following issue in Railroader: [RuntimeUnityEditor] [Warning] Failed to initialize REPL environment - The type initializer for 'Mono.CSharp.SkipVisibilityExt' threw an exception.

Seems https://github.com/5rog/Explorer has the same issue with mcs and commented out the constructor. I tried commented it out, REPL loads but then I get:

error CS0060: Inconsistent accessibility: base class RuntimeUnityEditor.Core.REPL.REPL' is less accessible than class<InteractiveExpressionClass 4>'

Unsure if the two are related.

ManlyMarco commented 9 months ago

Yes, the class in the error is specifically to fix accessibility issues like the one you've got.

mricher-git commented 9 months ago

Due to the issue we're having with Railroaders, I moved Mono.* MonoMod.* to Railroader_Data\Managed. That removed the error during REPL init regarding SkipVisibilityExt but surprisingly continues to complain about the inconsistent accessibility. If we can sort out why the .dll's aren't being resolved, I suspect this issue will fix itself.

Edit: can confirm if I copy all .dll's to Managed (Mono.*, MonoMod.*, RuntimeUnityEditor.Core.dll), REPL works fine.

mricher-git commented 7 months ago

I have no idea what makes this tick, but I moved to a new PC and: error CS0060: Inconsistent accessibility: base class RuntimeUnityEditor.Core.REPL.REPL' is less accessible than class<InteractiveExpressionClass 4>'

is back, but without the exception being thrown as mentioned in my first post. Placed all dlls in the Managed folder, same as before, but it still doesn't work.

[RuntimeUnityEditor] Version '5.3'. Loading.
[RuntimeUnityEditor] Active.
[Manager] FINISH. SUCCESSFUL LOADED 5/5 MODS.
[Manager] Spawning.
[RuntimeUnityEditor] Successfully initialized 14/14 features: CursorUnlocker, WireframeFeature, ContextMenu, Taskbar, MouseInspect, ReplWindow, ObjectViewWindow, ProfilerWindow, ObjectTreeViewer, Inspector, ClipboardWindow, ChangeHistoryWindow, DnSpyHelper, GizmoDrawer
[Manager] Checking updates.
[RuntimeUnityEditor] [UnityInput] Using LegacyInputSystem
[RuntimeUnityEditor] Full GameObject list refresh finished in 2ms
[RuntimeUnityEditor] Full GameObject list refresh finished in 0ms
[RuntimeUnityEditor] [REPL] Found 512 public namespaces
ManlyMarco commented 7 months ago

Did you try making RuntimeUnityEditor.Core.REPL.REPL public?

mricher-git commented 7 months ago

Isn't it already?

namespace RuntimeUnityEditor.Core.REPL
{
    /// <summary>
    /// C# REPL environment. Everything in here can be called directly in the REPL console.
    /// </summary>
    public class REPL : InteractiveBase
ManlyMarco commented 7 months ago

Oh, that's right, no idea then. I don't think OS has any effect on it, the game must be set up differently.

mricher-git commented 7 months ago

In 5.3 UMM flavor there is both a RuntimeUnityEditor.UMM.dll and a RuntimeUnityEditor.Core.dll.

From dnSpy, the UMM dll:

namespace RuntimeUnityEditor.Core.REPL
{
    // Token: 0x0200002A RID: 42
    internal class REPL : InteractiveBase
    {

From the .Core.dll:

namespace RuntimeUnityEditor.Core.REPL
{
    /// <summary>
    /// C# REPL environment. Everything in here can be called directly in the REPL console.
    /// </summary>
    // Token: 0x0200001F RID: 31
    public class REPL : InteractiveBase
    {

Edit: I deleted the ILRepack.targets from the UMM folder and re-compiled, and now have no issues. FYI: Seems latest UMM (0.27.14) solved the issue of not loading additional referenced DLLs from mod folder, so this workaround is no longer required anyway.

ManlyMarco commented 7 months ago

So this commit can be safely reverted now? https://github.com/ManlyMarco/RuntimeUnityEditor/commit/55252e7ab8b7dda0c4123f987c1829316f62128a