48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Linq;
|
||
|
using System.Reflection;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Packages.Rider.Editor
|
||
|
{
|
||
|
internal class RiderInitializer
|
||
|
{
|
||
|
public void Initialize(string editorPath)
|
||
|
{
|
||
|
if (EditorPluginInterop.EditorPluginIsLoadedFromAssets())
|
||
|
{
|
||
|
Debug.LogError($"Please delete {EditorPluginInterop.GetEditorPluginAssembly().Location}. Unity 2019.2+ loads it directly from Rider installation. To disable this, open Rider's settings, search and uncheck 'Automatically install and update Rider's Unity editor plugin'.");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var dllName = "JetBrains.Rider.Unity.Editor.Plugin.Full.Repacked.dll";
|
||
|
var relPath = "../../plugins/rider-unity/EditorPlugin";
|
||
|
if (SystemInfo.operatingSystemFamily == OperatingSystemFamily.MacOSX)
|
||
|
relPath = "Contents/plugins/rider-unity/EditorPlugin";
|
||
|
var dllFile = new FileInfo(Path.Combine(Path.Combine(editorPath, relPath), dllName));
|
||
|
|
||
|
if (dllFile.Exists)
|
||
|
{
|
||
|
// doesn't lock assembly on disk
|
||
|
var bytes = File.ReadAllBytes(dllFile.FullName);
|
||
|
var pdbFile = new FileInfo(Path.ChangeExtension(dllFile.FullName, ".pdb"));
|
||
|
if (pdbFile.Exists)
|
||
|
{
|
||
|
AppDomain.CurrentDomain.Load(bytes, File.ReadAllBytes(pdbFile.FullName));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
AppDomain.CurrentDomain.Load(bytes);
|
||
|
// AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(dllFile.FullName)); // use this for external source debug
|
||
|
}
|
||
|
EditorPluginInterop.InitEntryPoint();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Debug.Log((object) ($"Unable to find Rider EditorPlugin {dllFile.FullName} for Unity "));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|