|
|
@@ -1,7 +1,7 @@
|
|
|
//------------------------------------------------------------------------------
|
|
|
// <auto-generated>
|
|
|
// This code was generated by a tool.
|
|
|
-// Version: 2.1.2.1737
|
|
|
+// Version: 2.1.3.4269
|
|
|
//
|
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
|
// the code is regenerated.
|
|
|
@@ -14,6 +14,7 @@ using System.Diagnostics;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Net;
|
|
|
+using System.Reflection;
|
|
|
using System.Runtime.CompilerServices;
|
|
|
using System.Runtime.InteropServices;
|
|
|
using System.Text.RegularExpressions;
|
|
|
@@ -39,10 +40,21 @@ namespace Plugins.Editor.JetBrains
|
|
|
UpgradeProjectFile(file);
|
|
|
}
|
|
|
|
|
|
- var slnFile = Directory.GetFiles(currentDirectory, "*.sln").First();
|
|
|
+ var slnFile = Directory.GetFiles(currentDirectory, "*.sln").FirstOrDefault();
|
|
|
+ if (string.IsNullOrEmpty(slnFile))
|
|
|
+ return;
|
|
|
+
|
|
|
RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, string.Format("Post-processing {0}", slnFile));
|
|
|
- string content = File.ReadAllText(slnFile);
|
|
|
- var lines = content.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
|
|
|
+ string slnAllText = File.ReadAllText(slnFile);
|
|
|
+ const string unityProjectGuid = @"Project(""{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1}"")";
|
|
|
+ if (!slnAllText.Contains(unityProjectGuid))
|
|
|
+ {
|
|
|
+ string matchGUID = @"Project\(\""\{[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}\""\)";
|
|
|
+ // Unity may put a random guid, unityProjectGuid will help VSTU recognize Rider-generated projects
|
|
|
+ slnAllText = Regex.Replace(slnAllText, matchGUID, unityProjectGuid);
|
|
|
+ }
|
|
|
+
|
|
|
+ var lines = slnAllText.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
|
|
|
var sb = new StringBuilder();
|
|
|
foreach (var line in lines)
|
|
|
{
|
|
|
@@ -86,9 +98,8 @@ namespace Plugins.Editor.JetBrains
|
|
|
FixSystemXml(projectContentElement, xmlns);
|
|
|
SetLangVersion(projectContentElement, xmlns);
|
|
|
// Unity_5_6_OR_NEWER switched to nunit 3.5
|
|
|
- // Fix helps only for Windows, on mac and linux I get https://youtrack.jetbrains.com/issue/RSRP-459932
|
|
|
-#if UNITY_5_6_OR_NEWER && UNITY_STANDALONE_WIN
|
|
|
- ChangeNunitReference(new FileInfo(projectFile).DirectoryName, projectContentElement, xmlns);
|
|
|
+#if UNITY_5_6_OR_NEWER
|
|
|
+ ChangeNunitReference(projectContentElement, xmlns);
|
|
|
#endif
|
|
|
|
|
|
#if !UNITY_2017_1_OR_NEWER // Unity 2017.1 and later has this features by itself
|
|
|
@@ -96,6 +107,7 @@ namespace Plugins.Editor.JetBrains
|
|
|
SetXCodeDllReference("UnityEditor.iOS.Extensions.Xcode.dll", xmlns, projectContentElement);
|
|
|
SetXCodeDllReference("UnityEditor.iOS.Extensions.Common.dll", xmlns, projectContentElement);
|
|
|
#endif
|
|
|
+ ApplyManualCompilingSettingsReferences(projectContentElement, xmlns);
|
|
|
doc.Save(projectFile);
|
|
|
}
|
|
|
|
|
|
@@ -111,7 +123,7 @@ namespace Plugins.Editor.JetBrains
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static void ChangeNunitReference(string baseDir, XElement projectContentElement, XNamespace xmlns)
|
|
|
+ private static void ChangeNunitReference(XElement projectContentElement, XNamespace xmlns)
|
|
|
{
|
|
|
var el = projectContentElement
|
|
|
.Elements(xmlns+"ItemGroup")
|
|
|
@@ -122,20 +134,20 @@ namespace Plugins.Editor.JetBrains
|
|
|
var hintPath = el.Elements(xmlns + "HintPath").FirstOrDefault();
|
|
|
if (hintPath != null)
|
|
|
{
|
|
|
- string unityAppBaseFolder = Path.GetDirectoryName(EditorApplication.applicationPath);
|
|
|
- var path = Path.Combine(unityAppBaseFolder, "Data/Managed/nunit.framework.dll");
|
|
|
+ var projectDirectory = Directory.GetParent(Application.dataPath).FullName;
|
|
|
+ var path = Path.Combine(projectDirectory, "Library/resharper-unity-libs/nunit3.5.0/nunit.framework.dll");
|
|
|
if (new FileInfo(path).Exists)
|
|
|
hintPath.Value = path;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private static readonly string PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, "mcs.rsp");
|
|
|
#if !UNITY_2017_1_OR_NEWER // Unity 2017.1 and later has this features by itself
|
|
|
private const string UNITY_PLAYER_PROJECT_NAME = "Assembly-CSharp.csproj";
|
|
|
private const string UNITY_EDITOR_PROJECT_NAME = "Assembly-CSharp-Editor.csproj";
|
|
|
private const string UNITY_UNSAFE_KEYWORD = "-unsafe";
|
|
|
private const string UNITY_DEFINE_KEYWORD = "-define:";
|
|
|
- private static readonly string PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, "mcs.rsp");
|
|
|
private static readonly string PLAYER_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, "smcs.rsp");
|
|
|
private static readonly string EDITOR_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, "gmcs.rsp");
|
|
|
|
|
|
@@ -255,6 +267,55 @@ namespace Plugins.Editor.JetBrains
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
+ private const string UNITY_REFERENCE_KEYWORD = "-r:";
|
|
|
+ /// <summary>
|
|
|
+ /// Handles custom references -r: in "mcs.rsp"
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="projectContentElement"></param>
|
|
|
+ /// <param name="xmlns"></param>
|
|
|
+ private static void ApplyManualCompilingSettingsReferences(XElement projectContentElement, XNamespace xmlns)
|
|
|
+ {
|
|
|
+ if (!File.Exists(PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH))
|
|
|
+ return;
|
|
|
+
|
|
|
+ var configFilePath = PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH;
|
|
|
+
|
|
|
+ if (File.Exists(configFilePath))
|
|
|
+ {
|
|
|
+ var configText = File.ReadAllText(configFilePath);
|
|
|
+ if (configText.Contains(UNITY_REFERENCE_KEYWORD))
|
|
|
+ {
|
|
|
+ var referenceList = new List<string>();
|
|
|
+ var compileFlags = configText.Split(' ', '\n');
|
|
|
+ foreach (var flag in compileFlags)
|
|
|
+ {
|
|
|
+ var f = flag.Trim();
|
|
|
+ if (f.Contains(UNITY_REFERENCE_KEYWORD))
|
|
|
+ {
|
|
|
+ var defineEndPos = f.IndexOf(UNITY_REFERENCE_KEYWORD) + UNITY_REFERENCE_KEYWORD.Length;
|
|
|
+ var definesSubString = f.Substring(defineEndPos,f.Length - defineEndPos);
|
|
|
+ definesSubString = definesSubString.Replace(";", ",");
|
|
|
+ referenceList.AddRange(definesSubString.Split(','));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var referenceName in referenceList)
|
|
|
+ {
|
|
|
+ ApplyCustomReference(referenceName, projectContentElement, xmlns);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void ApplyCustomReference(string name, XElement projectContentElement, XNamespace xmlns)
|
|
|
+ {
|
|
|
+ var itemGroup = new XElement(xmlns + "ItemGroup");
|
|
|
+ var reference = new XElement(xmlns + "Reference");
|
|
|
+ reference.Add(new XAttribute("Include", Path.GetFileNameWithoutExtension(name)));
|
|
|
+ itemGroup.Add(reference);
|
|
|
+ projectContentElement.Add(itemGroup);
|
|
|
+ }
|
|
|
+
|
|
|
// Helps resolve System.Linq under mono 4 - RIDER-573
|
|
|
private static void FixTargetFrameworkVersion(XElement projectElement, XNamespace xmlns)
|
|
|
{
|
|
|
@@ -263,7 +324,11 @@ namespace Plugins.Editor.JetBrains
|
|
|
.FirstOrDefault(); // Processing csproj files, which are not Unity-generated #56
|
|
|
if (targetFrameworkVersion != null)
|
|
|
{
|
|
|
- targetFrameworkVersion.SetValue("v"+RiderPlugin.TargetFrameworkVersion);
|
|
|
+ if (net46)
|
|
|
+ targetFrameworkVersion.SetValue("v"+RiderPlugin.TargetFrameworkVersion);
|
|
|
+ else
|
|
|
+ targetFrameworkVersion.SetValue("v"+RiderPlugin.TargetFrameworkVersionOldMono);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -303,6 +368,100 @@ namespace Plugins.Editor.JetBrains
|
|
|
|
|
|
return "4";
|
|
|
}
|
|
|
+
|
|
|
+ private static bool net46 =
|
|
|
+#if NET_4_6
|
|
|
+ true;
|
|
|
+#else
|
|
|
+ false;
|
|
|
+#endif
|
|
|
+
|
|
|
+ private static Type ourPdb2MdbDriver;
|
|
|
+ private static Type Pdb2MdbDriver
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (ourPdb2MdbDriver != null)
|
|
|
+ return ourPdb2MdbDriver;
|
|
|
+ Assembly assembly;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var path = Path.Combine(Directory.GetCurrentDirectory(), @"Library\resharper-unity-libs\pdb2mdb.exe");
|
|
|
+ var bytes = File.ReadAllBytes(path);
|
|
|
+ assembly = Assembly.Load(bytes);
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+ RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, "Loading pdb2mdb failed.");
|
|
|
+ assembly = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (assembly == null)
|
|
|
+ return null;
|
|
|
+ var type = assembly.GetType("Pdb2Mdb.Driver");
|
|
|
+ if (type == null)
|
|
|
+ return null;
|
|
|
+ return ourPdb2MdbDriver = type;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromPath)
|
|
|
+ {
|
|
|
+ if (!RiderPlugin.Enabled)
|
|
|
+ return;
|
|
|
+ var toBeConverted = importedAssets.Where(a =>
|
|
|
+ a.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) &&
|
|
|
+ importedAssets.Any(a1 => a1 == Path.ChangeExtension(a, ".pdb")) &&
|
|
|
+ importedAssets.All(b => b != Path.ChangeExtension(a, ".dll.mdb")))
|
|
|
+ .ToArray();
|
|
|
+ foreach (var asset in toBeConverted)
|
|
|
+ {
|
|
|
+ var pdb = Path.ChangeExtension(asset, ".pdb");
|
|
|
+ if (!IsPortablePdb(pdb))
|
|
|
+ ConvertSymbolsForAssembly(asset);
|
|
|
+ else
|
|
|
+ RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, string.Format("mdb generation for Portable pdb is not supported. {0}", pdb));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void ConvertSymbolsForAssembly(string asset)
|
|
|
+ {
|
|
|
+ if (Pdb2MdbDriver == null)
|
|
|
+ {
|
|
|
+ RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, "FailedToConvertDebugSymbolsNoPdb2mdb.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var method = Pdb2MdbDriver.GetMethod("Main", BindingFlags.Static | BindingFlags.NonPublic);
|
|
|
+ if (method == null)
|
|
|
+ {
|
|
|
+ RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, "WarningFailedToConvertDebugSymbolsPdb2mdbMainIsNull.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var strArray = new[] { Path.GetFullPath(asset) };
|
|
|
+ method.Invoke(null, new object[] { strArray });
|
|
|
+ }
|
|
|
+
|
|
|
+ //https://github.com/xamarin/xamarin-android/commit/4e30546f
|
|
|
+ const uint ppdb_signature = 0x424a5342;
|
|
|
+ public static bool IsPortablePdb(string filename)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
|
|
|
+ {
|
|
|
+ using (var br = new BinaryReader(fs))
|
|
|
+ {
|
|
|
+ return br.ReadUInt32() == ppdb_signature;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -318,7 +477,7 @@ namespace Plugins.Editor.JetBrains
|
|
|
{
|
|
|
if (level < SelectedLoggingLevel) return;
|
|
|
|
|
|
- var text = "[Rider] [" + level + "] " + initialText;
|
|
|
+ var text = "[Rider] "+DateTime.Now.ToString("HH:mm:ss:ff")+" [" + level + "] " + initialText;
|
|
|
|
|
|
switch (level)
|
|
|
{
|
|
|
@@ -333,9 +492,18 @@ namespace Plugins.Editor.JetBrains
|
|
|
|
|
|
private static string GetDefaultApp()
|
|
|
{
|
|
|
- var alreadySetPath = GetExternalScriptEditor();
|
|
|
- if (!string.IsNullOrEmpty(alreadySetPath) && RiderPathExist(alreadySetPath))
|
|
|
- return alreadySetPath;
|
|
|
+ var allFoundPaths = GetAllRiderPaths().Select(a=>new FileInfo(a).FullName).ToArray();
|
|
|
+ var alreadySetPath = new FileInfo(GetExternalScriptEditor()).FullName;
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(alreadySetPath) && RiderPathExist(alreadySetPath) && !allFoundPaths.Any() ||
|
|
|
+ !string.IsNullOrEmpty(alreadySetPath) && RiderPathExist(alreadySetPath) && allFoundPaths.Any() &&
|
|
|
+ allFoundPaths.Contains(alreadySetPath))
|
|
|
+ {
|
|
|
+ RiderPath = alreadySetPath;
|
|
|
+ }
|
|
|
+ else if (!string.IsNullOrEmpty(RiderPath) && allFoundPaths.Contains(new FileInfo(RiderPath).FullName)) {}
|
|
|
+ else
|
|
|
+ RiderPath = allFoundPaths.FirstOrDefault();
|
|
|
|
|
|
return RiderPath;
|
|
|
}
|
|
|
@@ -382,34 +550,30 @@ namespace Plugins.Editor.JetBrains
|
|
|
return new string[0];
|
|
|
}
|
|
|
|
|
|
- private static string TargetFrameworkVersionDefault
|
|
|
+ private static string GetTargetFrameworkVersionDefault(string defaultValue)
|
|
|
{
|
|
|
- get
|
|
|
+ if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows)
|
|
|
{
|
|
|
- var defaultValue = "4.5";
|
|
|
- if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows)
|
|
|
+ var dir = new DirectoryInfo(@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework");
|
|
|
+ if (dir.Exists)
|
|
|
{
|
|
|
- var dir = new DirectoryInfo(@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework");
|
|
|
- if (dir.Exists)
|
|
|
+ var availableVersions = dir.GetDirectories("v*").Select(a => a.Name.Substring(1))
|
|
|
+ .Where(v => TryCatch(v, s => { })).ToArray();
|
|
|
+ if (availableVersions.Any() && !availableVersions.Contains(defaultValue))
|
|
|
{
|
|
|
- var availableVersions = dir.GetDirectories("v*").Select(a => a.Name.Substring(1))
|
|
|
- .Where(v => TryCatch(v, s => { })).ToArray();
|
|
|
- if (availableVersions.Any() && !availableVersions.Contains(defaultValue))
|
|
|
- {
|
|
|
- defaultValue = availableVersions.OrderBy(a => new Version(a)).Last();
|
|
|
- }
|
|
|
+ defaultValue = availableVersions.OrderBy(a => new Version(a)).Last();
|
|
|
}
|
|
|
}
|
|
|
- return defaultValue;
|
|
|
}
|
|
|
+ return defaultValue;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public static string TargetFrameworkVersion
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- return EditorPrefs.GetString("Rider_TargetFrameworkVersion",
|
|
|
- EditorPrefs.GetBool("Rider_TargetFrameworkVersion45", true) ? TargetFrameworkVersionDefault : "3.5");
|
|
|
+ return EditorPrefs.GetString("Rider_TargetFrameworkVersion", GetTargetFrameworkVersionDefault("4.6"));
|
|
|
}
|
|
|
set
|
|
|
{
|
|
|
@@ -419,6 +583,21 @@ namespace Plugins.Editor.JetBrains
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static string TargetFrameworkVersionOldMono
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ return EditorPrefs.GetString("Rider_TargetFrameworkVersionOldMono", GetTargetFrameworkVersionDefault("3.5"));
|
|
|
+ }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ TryCatch(value, val =>
|
|
|
+ {
|
|
|
+ EditorPrefs.SetString("Rider_TargetFrameworkVersionOldMono", val);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private static bool TryCatch(string value, Action<string> action)
|
|
|
{
|
|
|
@@ -497,6 +676,8 @@ namespace Plugins.Editor.JetBrains
|
|
|
SlnFile = Path.Combine(projectDirectory, string.Format("{0}.sln", projectName));
|
|
|
|
|
|
InitializeEditorInstanceJson(projectDirectory);
|
|
|
+
|
|
|
+ RiderAssetPostprocessor.OnGeneratedCSProjectFiles();
|
|
|
|
|
|
Log(LoggingLevel.Info, "Rider plugin initialized. You may change the amount of Rider Debug output via Edit -> Preferences -> Rider -> Logging Level");
|
|
|
Initialized = true;
|
|
|
@@ -578,7 +759,6 @@ namespace Plugins.Editor.JetBrains
|
|
|
// make sure the plugin was initialized first.
|
|
|
// this can happen in case "Rider" was set as the default scripting app only after this plugin was imported.
|
|
|
InitRiderPlugin();
|
|
|
- RiderAssetPostprocessor.OnGeneratedCSProjectFiles();
|
|
|
}
|
|
|
|
|
|
string appPath = Path.GetDirectoryName(Application.dataPath);
|
|
|
@@ -599,13 +779,10 @@ namespace Plugins.Editor.JetBrains
|
|
|
return false;
|
|
|
|
|
|
SyncSolution(); // added to handle opening file, which was just recently created.
|
|
|
- if (!DetectPortAndOpenFile(line, assetFilePath,
|
|
|
- SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows))
|
|
|
- {
|
|
|
- var args = string.Format("{0}{1}{0} --line {2} {0}{3}{0}", "\"", SlnFile, line, assetFilePath);
|
|
|
- return CallRider(args);
|
|
|
- }
|
|
|
- return true;
|
|
|
+ if (DetectPortAndOpenFile(line, assetFilePath, SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows))
|
|
|
+ return true;
|
|
|
+ var args = string.Format("{0}{1}{0} --line {2} {0}{3}{0}", "\"", SlnFile, line, assetFilePath);
|
|
|
+ return CallRider(args);
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
@@ -621,7 +798,7 @@ namespace Plugins.Editor.JetBrains
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- int[] ports = Enumerable.Range(63342, 20).ToArray();
|
|
|
+ var ports = Enumerable.Range(63342, 20);
|
|
|
var res = ports.Any(port =>
|
|
|
{
|
|
|
var aboutUrl = string.Format("http://localhost:{0}/api/about/", port);
|
|
|
@@ -816,20 +993,27 @@ namespace Plugins.Editor.JetBrains
|
|
|
SetExternalScriptEditor(string.Empty);
|
|
|
EditorGUILayout.HelpBox("Checking will set Rider as default external editor", MessageType.None);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- var help = @"TargetFramework >= 4.5 is strongly recommended.
|
|
|
- - Without 4.5:
|
|
|
- - Rider will fail to resolve System.Linq on Mac/Linux
|
|
|
- - Rider will fail to resolve Firebase Analytics.
|
|
|
- - With 4.5 Rider may show ambiguous references in UniRx.
|
|
|
-All those problems will go away after Unity upgrades to mono4.";
|
|
|
-
|
|
|
- TargetFrameworkVersion =
|
|
|
- EditorGUILayout.TextField(
|
|
|
- new GUIContent("TargetFrameworkVersion",
|
|
|
- help), TargetFrameworkVersion);
|
|
|
- EditorGUILayout.HelpBox(help, MessageType.None);
|
|
|
+
|
|
|
+ GUILayout.BeginVertical();
|
|
|
+ string status = "TargetFrameworkVersion for Runtime";
|
|
|
+ EditorGUILayout.TextArea(status, EditorStyles.boldLabel);
|
|
|
+ var help = @"TargetFramework >= 4.5 is recommended.";
|
|
|
+ TargetFrameworkVersion =
|
|
|
+ EditorGUILayout.TextField(
|
|
|
+ new GUIContent("NET 4.6",
|
|
|
+ help), TargetFrameworkVersion);
|
|
|
+ EditorGUILayout.HelpBox(help, MessageType.None);
|
|
|
+ var helpOldMono = @"TargetFramework = 3.5 is recommended.
|
|
|
+ - With 4.5 Rider may show ambiguous references in UniRx.";
|
|
|
+
|
|
|
+ TargetFrameworkVersionOldMono =
|
|
|
+ EditorGUILayout.TextField(
|
|
|
+ new GUIContent("NET 3.5",
|
|
|
+ helpOldMono), TargetFrameworkVersionOldMono);
|
|
|
+ EditorGUILayout.HelpBox(helpOldMono, MessageType.None);
|
|
|
+
|
|
|
+ GUILayout.EndVertical();
|
|
|
|
|
|
EditorGUI.EndChangeCheck();
|
|
|
|
|
|
@@ -870,7 +1054,8 @@ All those problems will go away after Unity upgrades to mono4.";
|
|
|
}
|
|
|
|
|
|
#region SystemInfoRiderPlugin
|
|
|
- static class SystemInfoRiderPlugin
|
|
|
+
|
|
|
+ private static class SystemInfoRiderPlugin
|
|
|
{
|
|
|
public static OperatingSystemFamily operatingSystemFamily
|
|
|
{
|