Skip to content

Commit

Permalink
fix: in Unity 2020.2 or later, some fields in CscSettingsAsset will b…
Browse files Browse the repository at this point in the history
…e not deserialized on first compilation
  • Loading branch information
mob-sakai committed Dec 16, 2020
1 parent acfa0e6 commit 1858247
Showing 1 changed file with 25 additions and 3 deletions.
28 changes: 25 additions & 3 deletions Plugins/CSharpCompilerSettings/CscSettingsAsset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
using LVersion = Coffee.CSharpCompilerSettings.CSharpLanguageVersion;
Expand Down Expand Up @@ -119,9 +120,9 @@ internal class CscSettingsAsset : ScriptableObject, ISerializationCallbackReceiv

private static CscSettingsAsset CreateFromProjectSettings()
{
s_Instance = CreateInstance<CscSettingsAsset>();
if (File.Exists(k_SettingsPath))
JsonUtility.FromJsonOverwrite(File.ReadAllText(k_SettingsPath), s_Instance);
s_Instance = File.Exists(k_SettingsPath)
? CreateFromJson(File.ReadAllText(k_SettingsPath))
: CreateInstance<CscSettingsAsset>();
s_Instance.IsProjectSetting = true;
return s_Instance;
}
Expand Down Expand Up @@ -225,6 +226,27 @@ public static CscSettingsAsset CreateFromJson(string json = "")
{
var setting = CreateInstance<CscSettingsAsset>();
JsonUtility.FromJsonOverwrite(json, setting);

// In Unity 2020.2 or later, some fields will be not deserialized on first compilation.
var serializedJson = JsonUtility.ToJson(setting);
if (!serializedJson.Contains("\"m_CompilerPackage\":"))
{
var m = Regex.Match(json, "\"m_CompilerPackage\":\\s*({[^}]+})");
if (m.Success)
{
setting.m_CompilerPackage = JsonUtility.FromJson<NugetPackage>(m.Groups[1].Value);
}
}

if (!serializedJson.Contains("\"m_CompilerFilter\":"))
{
var m = Regex.Match(json, "\"m_CompilerFilter\":\\s*({[^}]+})");
if (m.Success)
{
setting.m_CompilerFilter = JsonUtility.FromJson<AssemblyFilter>(m.Groups[1].Value);
}
}

return setting;
}

Expand Down

0 comments on commit 1858247

Please sign in to comment.