Merge pull request #88076 from paulloz/dotnet/fix-out-of-sync-notice-with-external-editors
Fix C# "out of sync" notice with external editors
This commit is contained in:
commit
312eb20b3e
|
@ -24,6 +24,20 @@ namespace GodotTools.Build
|
|||
public static event Action<string> StdOutputReceived;
|
||||
public static event Action<string> StdErrorReceived;
|
||||
|
||||
public static DateTime LastValidBuildDateTime { get; private set; }
|
||||
|
||||
static BuildManager()
|
||||
{
|
||||
UpdateLastValidBuildDateTime();
|
||||
}
|
||||
|
||||
public static void UpdateLastValidBuildDateTime()
|
||||
{
|
||||
var dllName = $"{GodotSharpDirs.ProjectAssemblyName}.dll";
|
||||
var path = Path.Combine(GodotSharpDirs.ProjectBaseOutputPath, "Debug", dllName);
|
||||
LastValidBuildDateTime = File.GetLastWriteTime(path);
|
||||
}
|
||||
|
||||
private static void RemoveOldIssuesFile(BuildInfo buildInfo)
|
||||
{
|
||||
string issuesFile = GetIssuesFilePath(buildInfo);
|
||||
|
|
|
@ -89,8 +89,11 @@ namespace GodotTools.Build
|
|||
GodotSharpEditor.Instance.GetNode<HotReloadAssemblyWatcher>("HotReloadAssemblyWatcher").RestartTimer();
|
||||
|
||||
if (Internal.IsAssembliesReloadingNeeded())
|
||||
{
|
||||
BuildManager.UpdateLastValidBuildDateTime();
|
||||
Internal.ReloadAssemblies(softReload: false);
|
||||
}
|
||||
}
|
||||
|
||||
private void RebuildProject()
|
||||
{
|
||||
|
@ -107,8 +110,11 @@ namespace GodotTools.Build
|
|||
GodotSharpEditor.Instance.GetNode<HotReloadAssemblyWatcher>("HotReloadAssemblyWatcher").RestartTimer();
|
||||
|
||||
if (Internal.IsAssembliesReloadingNeeded())
|
||||
{
|
||||
BuildManager.UpdateLastValidBuildDateTime();
|
||||
Internal.ReloadAssemblies(softReload: false);
|
||||
}
|
||||
}
|
||||
|
||||
private void CleanProject()
|
||||
{
|
||||
|
|
|
@ -54,8 +54,6 @@ namespace GodotTools
|
|||
|
||||
public bool SkipBuildBeforePlaying { get; set; } = false;
|
||||
|
||||
public DateTime LastValidBuildDateTime { get; private set; }
|
||||
|
||||
[UsedImplicitly]
|
||||
private bool CreateProjectSolutionIfNeeded()
|
||||
{
|
||||
|
@ -441,21 +439,6 @@ namespace GodotTools
|
|||
}
|
||||
}
|
||||
|
||||
private void UpdateLastValidBuildDateTime()
|
||||
{
|
||||
var dllName = $"{GodotSharpDirs.ProjectAssemblyName}.dll";
|
||||
var path = Path.Combine(GodotSharpDirs.ProjectBaseOutputPath, "Debug", dllName);
|
||||
LastValidBuildDateTime = File.GetLastWriteTime(path);
|
||||
}
|
||||
|
||||
private void BuildFinished(BuildResult buildResult)
|
||||
{
|
||||
if (buildResult == BuildResult.Success)
|
||||
{
|
||||
UpdateLastValidBuildDateTime();
|
||||
}
|
||||
}
|
||||
|
||||
private void BuildStateChanged()
|
||||
{
|
||||
if (_bottomPanelBtn != null)
|
||||
|
@ -466,8 +449,6 @@ namespace GodotTools
|
|||
{
|
||||
base._EnablePlugin();
|
||||
|
||||
UpdateLastValidBuildDateTime();
|
||||
|
||||
ProjectSettings.SettingsChanged += GodotSharpDirs.DetermineProjectLocation;
|
||||
|
||||
if (Instance != null)
|
||||
|
@ -640,7 +621,6 @@ namespace GodotTools
|
|||
var inspectorPlugin = new InspectorPlugin();
|
||||
AddInspectorPlugin(inspectorPlugin);
|
||||
_inspectorPluginWeak = WeakRef(inspectorPlugin);
|
||||
BuildManager.BuildFinished += BuildFinished;
|
||||
|
||||
BuildManager.Initialize();
|
||||
RiderPathManager.Initialize();
|
||||
|
@ -657,7 +637,6 @@ namespace GodotTools
|
|||
|
||||
// Custom signals aren't automatically disconnected currently.
|
||||
MSBuildPanel.BuildStateChanged -= BuildStateChanged;
|
||||
BuildManager.BuildFinished -= BuildFinished;
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
using Godot;
|
||||
using GodotTools.Build;
|
||||
using GodotTools.Internals;
|
||||
using JetBrains.Annotations;
|
||||
using static GodotTools.Internals.Globals;
|
||||
|
||||
namespace GodotTools
|
||||
{
|
||||
|
@ -16,15 +16,21 @@ namespace GodotTools
|
|||
RestartTimer();
|
||||
|
||||
if (Internal.IsAssembliesReloadingNeeded())
|
||||
{
|
||||
BuildManager.UpdateLastValidBuildDateTime();
|
||||
Internal.ReloadAssemblies(softReload: false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TimerTimeout()
|
||||
{
|
||||
if (Internal.IsAssembliesReloadingNeeded())
|
||||
{
|
||||
BuildManager.UpdateLastValidBuildDateTime();
|
||||
Internal.ReloadAssemblies(softReload: false);
|
||||
}
|
||||
}
|
||||
|
||||
[UsedImplicitly]
|
||||
public void RestartTimer()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using Godot;
|
||||
using GodotTools.Build;
|
||||
using GodotTools.Utils;
|
||||
|
||||
namespace GodotTools.Inspector
|
||||
|
@ -24,7 +25,7 @@ namespace GodotTools.Inspector
|
|||
{
|
||||
if (script is not CSharpScript) continue;
|
||||
|
||||
if (File.GetLastWriteTime(script.ResourcePath) > GodotSharpEditor.Instance.LastValidBuildDateTime)
|
||||
if (File.GetLastWriteTime(script.ResourcePath) > BuildManager.LastValidBuildDateTime)
|
||||
{
|
||||
AddCustomControl(new InspectorOutOfSyncWarning());
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue