Fix bindings cache to rely on project name and version
This commit is contained in:
@@ -1092,7 +1092,7 @@ namespace Flax.Build.Bindings
|
||||
private static unsafe void GenerateCSharp(BuildData buildData, IGrouping<string, Module> binaryModule)
|
||||
{
|
||||
// Skip generating C# bindings code for native-only modules
|
||||
if (binaryModule.Any(x => !x.BuildCSharp))
|
||||
if (binaryModule.All(x => !x.BuildCSharp))
|
||||
return;
|
||||
|
||||
var contents = new StringBuilder();
|
||||
|
||||
@@ -18,7 +18,8 @@ namespace Flax.Build.Bindings
|
||||
|
||||
partial class BindingsGenerator
|
||||
{
|
||||
private static readonly Dictionary<string, Type> _typeCache = new Dictionary<string, Type>();
|
||||
private static readonly Dictionary<string, Type> TypeCache = new Dictionary<string, Type>();
|
||||
private const int CacheVersion = 7;
|
||||
|
||||
internal static void Write(BinaryWriter writer, string e)
|
||||
{
|
||||
@@ -160,7 +161,7 @@ namespace Flax.Build.Bindings
|
||||
var typename = reader.ReadString();
|
||||
if (string.IsNullOrEmpty(typename))
|
||||
return e;
|
||||
if (!_typeCache.TryGetValue(typename, out var type))
|
||||
if (!TypeCache.TryGetValue(typename, out var type))
|
||||
{
|
||||
type = Builder.BuildTypes.FirstOrDefault(x => x.FullName == typename);
|
||||
if (type == null)
|
||||
@@ -169,7 +170,7 @@ namespace Flax.Build.Bindings
|
||||
Log.Error(msg);
|
||||
throw new Exception(msg);
|
||||
}
|
||||
_typeCache.Add(typename, type);
|
||||
TypeCache.Add(typename, type);
|
||||
}
|
||||
e = (T)Activator.CreateInstance(type);
|
||||
e.Read(reader);
|
||||
@@ -185,7 +186,7 @@ namespace Flax.Build.Bindings
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var typename = reader.ReadString();
|
||||
if (!_typeCache.TryGetValue(typename, out var type))
|
||||
if (!TypeCache.TryGetValue(typename, out var type))
|
||||
{
|
||||
type = Builder.BuildTypes.FirstOrDefault(x => x.FullName == typename);
|
||||
if (type == null)
|
||||
@@ -194,7 +195,7 @@ namespace Flax.Build.Bindings
|
||||
Log.Error(msg);
|
||||
throw new Exception(msg);
|
||||
}
|
||||
_typeCache.Add(typename, type);
|
||||
TypeCache.Add(typename, type);
|
||||
}
|
||||
var e = (T)Activator.CreateInstance(type);
|
||||
e.Read(reader);
|
||||
@@ -218,7 +219,7 @@ namespace Flax.Build.Bindings
|
||||
using (var writer = new BinaryWriter(stream, Encoding.UTF8))
|
||||
{
|
||||
// Version
|
||||
writer.Write(5);
|
||||
writer.Write(CacheVersion);
|
||||
writer.Write(File.GetLastWriteTime(Assembly.GetExecutingAssembly().Location).Ticks);
|
||||
|
||||
// Build options
|
||||
@@ -254,7 +255,7 @@ namespace Flax.Build.Bindings
|
||||
{
|
||||
// Version
|
||||
var version = reader.ReadInt32();
|
||||
if (version != 5)
|
||||
if (version != CacheVersion)
|
||||
return false;
|
||||
if (File.GetLastWriteTime(Assembly.GetExecutingAssembly().Location).Ticks != reader.ReadInt64())
|
||||
return false;
|
||||
|
||||
@@ -34,6 +34,8 @@ namespace Flax.Build.Bindings
|
||||
BindingsGenerator.Write(writer, Module.BinaryModuleName);
|
||||
writer.Write(Module.BuildNativeCode);
|
||||
writer.Write(Module.BuildCSharp);
|
||||
writer.Write(Globals.Project.Name);
|
||||
writer.Write(Globals.Project.Version.ToString());
|
||||
|
||||
base.Write(writer);
|
||||
}
|
||||
@@ -44,7 +46,9 @@ namespace Flax.Build.Bindings
|
||||
reader.ReadString() != Module.FilePath ||
|
||||
BindingsGenerator.Read(reader, Module.BinaryModuleName) != Module.BinaryModuleName ||
|
||||
reader.ReadBoolean() != Module.BuildNativeCode ||
|
||||
reader.ReadBoolean() != Module.BuildCSharp
|
||||
reader.ReadBoolean() != Module.BuildCSharp ||
|
||||
reader.ReadString() != Globals.Project.Name ||
|
||||
reader.ReadString() != Globals.Project.Version.ToString()
|
||||
)
|
||||
throw new Exception();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user