Add migration smoke build command
This commit is contained in:
parent
d0e23e6408
commit
ac09170856
@ -103,7 +103,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Action<Logic.AI.MatchResult>
|
||||
// System.Action<Logic.Multilingual.TranslationEntry>
|
||||
// System.Action<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Action<MemoryPack.Internal.BufferSegment>
|
||||
// System.Action<MomentImagePack>
|
||||
// System.Action<RuntimeData.UnitFullType>
|
||||
// System.Action<SkillViewTypeColor>
|
||||
@ -240,7 +239,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Buffers.ArrayPool<byte>
|
||||
// System.Buffers.ConfigurableArrayPool.Bucket<byte>
|
||||
// System.Buffers.ConfigurableArrayPool<byte>
|
||||
// System.Buffers.IBufferWriter<byte>
|
||||
// System.Buffers.MemoryManager<byte>
|
||||
// System.Buffers.MemoryManager<float>
|
||||
// System.Buffers.TlsOverPerCoreLockedStacksArrayPool.LockedStack<byte>
|
||||
@ -262,7 +260,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ArraySortHelper<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.ArraySortHelper<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.ArraySortHelper<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.ArraySortHelper<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.ArraySortHelper<MomentImagePack>
|
||||
// System.Collections.Generic.ArraySortHelper<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.ArraySortHelper<SkillViewTypeColor>
|
||||
@ -305,7 +302,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Comparer<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.Comparer<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.Comparer<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.Comparer<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.Comparer<MomentImagePack>
|
||||
// System.Collections.Generic.Comparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.Comparer<SkillViewTypeColor>
|
||||
@ -349,7 +345,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ComparisonComparer<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.ComparisonComparer<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.ComparisonComparer<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.ComparisonComparer<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.ComparisonComparer<MomentImagePack>
|
||||
// System.Collections.Generic.ComparisonComparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.ComparisonComparer<SkillViewTypeColor>
|
||||
@ -408,7 +403,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary.Enumerator<object,object>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<object,uint>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<object,ushort>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<uint,float>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<uint,int>
|
||||
// System.Collections.Generic.Dictionary.Enumerator<uint,object>
|
||||
@ -437,7 +431,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<object,object>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<object,uint>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<object,ushort>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<uint,float>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<uint,int>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection.Enumerator<uint,object>
|
||||
@ -466,7 +459,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<object,object>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<object,uint>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<object,ushort>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<uint,float>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<uint,int>
|
||||
// System.Collections.Generic.Dictionary.KeyCollection<uint,object>
|
||||
@ -495,7 +487,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<object,object>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<object,uint>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<object,ushort>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<uint,float>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<uint,int>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection.Enumerator<uint,object>
|
||||
@ -524,7 +515,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<object,object>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<object,uint>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<object,ushort>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<uint,float>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<uint,int>
|
||||
// System.Collections.Generic.Dictionary.ValueCollection<uint,object>
|
||||
@ -553,7 +543,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary<object,object>
|
||||
// System.Collections.Generic.Dictionary<object,uint>
|
||||
// System.Collections.Generic.Dictionary<object,ushort>
|
||||
// System.Collections.Generic.Dictionary<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.Dictionary<uint,float>
|
||||
// System.Collections.Generic.Dictionary<uint,int>
|
||||
// System.Collections.Generic.Dictionary<uint,object>
|
||||
@ -563,7 +552,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.Dictionary<ulong,uint>
|
||||
// System.Collections.Generic.EqualityComparer<ChessInfo>
|
||||
// System.Collections.Generic.EqualityComparer<Logic.AI.AICalculatorData.TechGridResourceTemplate>
|
||||
// System.Collections.Generic.EqualityComparer<Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.EqualityComparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.EqualityComparer<Steamworks.CSteamID>
|
||||
// System.Collections.Generic.EqualityComparer<Steamworks.HSteamNetConnection>
|
||||
@ -611,7 +599,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ICollection<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.ICollection<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.ICollection<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.ICollection<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.ICollection<MomentImagePack>
|
||||
// System.Collections.Generic.ICollection<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.ICollection<SkillViewTypeColor>
|
||||
@ -638,7 +625,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<object,object>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<object,uint>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<object,ushort>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<uint,Logic.Multilingual.OriginalLangFields>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<uint,float>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<uint,int>>
|
||||
// System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<uint,object>>
|
||||
@ -682,7 +668,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IComparer<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.IComparer<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.IComparer<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.IComparer<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.IComparer<MomentImagePack>
|
||||
// System.Collections.Generic.IComparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.IComparer<SkillViewTypeColor>
|
||||
@ -727,7 +712,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IEnumerable<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.IEnumerable<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.IEnumerable<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.IEnumerable<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.IEnumerable<MomentImagePack>
|
||||
// System.Collections.Generic.IEnumerable<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.IEnumerable<SkillViewTypeColor>
|
||||
@ -754,7 +738,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<object,object>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<object,uint>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<object,ushort>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<uint,Logic.Multilingual.OriginalLangFields>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<uint,float>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<uint,int>>
|
||||
// System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<uint,object>>
|
||||
@ -798,7 +781,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IEnumerator<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.IEnumerator<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.IEnumerator<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.IEnumerator<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.IEnumerator<MomentImagePack>
|
||||
// System.Collections.Generic.IEnumerator<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.IEnumerator<SkillViewTypeColor>
|
||||
@ -825,7 +807,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<object,object>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<object,uint>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<object,ushort>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<uint,Logic.Multilingual.OriginalLangFields>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<uint,float>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<uint,int>>
|
||||
// System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<uint,object>>
|
||||
@ -882,7 +863,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.IList<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.IList<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.IList<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.IList<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.IList<MomentImagePack>
|
||||
// System.Collections.Generic.IList<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.IList<SkillViewTypeColor>
|
||||
@ -952,7 +932,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.KeyValuePair<object,object>
|
||||
// System.Collections.Generic.KeyValuePair<object,uint>
|
||||
// System.Collections.Generic.KeyValuePair<object,ushort>
|
||||
// System.Collections.Generic.KeyValuePair<uint,Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.KeyValuePair<uint,float>
|
||||
// System.Collections.Generic.KeyValuePair<uint,int>
|
||||
// System.Collections.Generic.KeyValuePair<uint,object>
|
||||
@ -969,7 +948,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.List.Enumerator<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.List.Enumerator<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.List.Enumerator<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.List.Enumerator<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.List.Enumerator<MomentImagePack>
|
||||
// System.Collections.Generic.List.Enumerator<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.List.Enumerator<SkillViewTypeColor>
|
||||
@ -1012,7 +990,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.List<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.List<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.List<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.List<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.List<MomentImagePack>
|
||||
// System.Collections.Generic.List<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.List<SkillViewTypeColor>
|
||||
@ -1055,7 +1032,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ObjectComparer<Logic.AI.MatchResult>
|
||||
// System.Collections.Generic.ObjectComparer<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.Generic.ObjectComparer<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.Generic.ObjectComparer<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.Generic.ObjectComparer<MomentImagePack>
|
||||
// System.Collections.Generic.ObjectComparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.ObjectComparer<SkillViewTypeColor>
|
||||
@ -1095,7 +1071,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.Generic.ObjectComparer<ushort>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<ChessInfo>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<Logic.AI.AICalculatorData.TechGridResourceTemplate>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<Logic.Multilingual.OriginalLangFields>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<RuntimeData.UnitFullType>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<Steamworks.CSteamID>
|
||||
// System.Collections.Generic.ObjectEqualityComparer<Steamworks.HSteamNetConnection>
|
||||
@ -1154,7 +1129,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<Logic.AI.MatchResult>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<Logic.Multilingual.TranslationEntry>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<MemoryPack.Internal.BufferSegment>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<MomentImagePack>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<RuntimeData.UnitFullType>
|
||||
// System.Collections.ObjectModel.ReadOnlyCollection<SkillViewTypeColor>
|
||||
@ -1197,7 +1171,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Comparison<Logic.AI.MatchResult>
|
||||
// System.Comparison<Logic.Multilingual.TranslationEntry>
|
||||
// System.Comparison<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Comparison<MemoryPack.Internal.BufferSegment>
|
||||
// System.Comparison<MomentImagePack>
|
||||
// System.Comparison<RuntimeData.UnitFullType>
|
||||
// System.Comparison<SkillViewTypeColor>
|
||||
@ -1313,7 +1286,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Predicate<Logic.AI.MatchResult>
|
||||
// System.Predicate<Logic.Multilingual.TranslationEntry>
|
||||
// System.Predicate<Logic.Multilingual.WorkshopModLoader.SubscribedModEntry>
|
||||
// System.Predicate<MemoryPack.Internal.BufferSegment>
|
||||
// System.Predicate<MomentImagePack>
|
||||
// System.Predicate<RuntimeData.UnitFullType>
|
||||
// System.Predicate<SkillViewTypeColor>
|
||||
@ -1458,9 +1430,7 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// byte& MemoryPack.Internal.MemoryMarshalEx.GetArrayDataReference<byte>(byte[])
|
||||
// int& MemoryPack.Internal.MemoryMarshalEx.GetArrayDataReference<int>(int[])
|
||||
// object& MemoryPack.Internal.MemoryMarshalEx.GetArrayDataReference<object>(object[])
|
||||
// MemoryPack.MemoryPackFormatter<int> MemoryPack.MemoryPackFormatterProvider.GetFormatter<int>()
|
||||
// MemoryPack.MemoryPackFormatter<object> MemoryPack.MemoryPackFormatterProvider.GetFormatter<object>()
|
||||
// MemoryPack.MemoryPackFormatter<uint> MemoryPack.MemoryPackFormatterProvider.GetFormatter<uint>()
|
||||
// bool MemoryPack.MemoryPackFormatterProvider.IsRegistered<byte>()
|
||||
// bool MemoryPack.MemoryPackFormatterProvider.IsRegistered<int>()
|
||||
// bool MemoryPack.MemoryPackFormatterProvider.IsRegistered<object>()
|
||||
@ -1559,19 +1529,10 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// object MemoryPack.MemoryPackReader.ReadValue<object>()
|
||||
// int MemoryPack.MemoryPackSerializer.Deserialize<object>(System.ReadOnlySpan<byte>,object&,MemoryPack.MemoryPackSerializerOptions)
|
||||
// object MemoryPack.MemoryPackSerializer.Deserialize<object>(System.ReadOnlySpan<byte>,MemoryPack.MemoryPackSerializerOptions)
|
||||
// System.Void MemoryPack.MemoryPackSerializer.Serialize<int>(MemoryPack.MemoryPackWriter&,int&)
|
||||
// System.Void MemoryPack.MemoryPackSerializer.Serialize<object>(MemoryPack.MemoryPackWriter&,object&)
|
||||
// System.Void MemoryPack.MemoryPackSerializer.Serialize<object>(System.Buffers.IBufferWriter<byte>&,object&,MemoryPack.MemoryPackSerializerOptions)
|
||||
// System.Void MemoryPack.MemoryPackSerializer.Serialize<uint>(MemoryPack.MemoryPackWriter&,uint&)
|
||||
// byte[] MemoryPack.MemoryPackSerializer.Serialize<int>(int&,MemoryPack.MemoryPackSerializerOptions)
|
||||
// byte[] MemoryPack.MemoryPackSerializer.Serialize<object>(object&,MemoryPack.MemoryPackSerializerOptions)
|
||||
// byte[] MemoryPack.MemoryPackSerializer.Serialize<uint>(uint&,MemoryPack.MemoryPackSerializerOptions)
|
||||
// System.Void MemoryPack.MemoryPackWriter.DangerousWriteUnmanagedArray<byte>(byte[])
|
||||
// System.Void MemoryPack.MemoryPackWriter.DangerousWriteUnmanagedArray<int>(int[])
|
||||
// System.Void MemoryPack.MemoryPackWriter.DangerousWriteUnmanagedArray<object>(object[])
|
||||
// MemoryPack.IMemoryPackFormatter<int> MemoryPack.MemoryPackWriter.GetFormatter<int>()
|
||||
// MemoryPack.IMemoryPackFormatter<object> MemoryPack.MemoryPackWriter.GetFormatter<object>()
|
||||
// MemoryPack.IMemoryPackFormatter<uint> MemoryPack.MemoryPackWriter.GetFormatter<uint>()
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteArray<object>(object[])
|
||||
// System.Void MemoryPack.MemoryPackWriter.WritePackable<object>(object&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteUnmanaged<byte,RuntimeData.UnitFullType,int,int,uint,int,int,int,RuntimeData.UnitFullType,RuntimeData.UnitFullType,int,int,uint,float,RuntimeData.UnitFullType>(byte&,RuntimeData.UnitFullType&,int&,int&,uint&,int&,int&,int&,RuntimeData.UnitFullType&,RuntimeData.UnitFullType&,int&,int&,uint&,float&,RuntimeData.UnitFullType&)
|
||||
@ -1653,9 +1614,7 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteUnmanagedWithObjectHeader<ulong,uint,uint,uint,byte,int,int,byte,byte,byte>(byte,ulong&,uint&,uint&,uint&,byte&,int&,int&,byte&,byte&,byte&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteUnmanagedWithObjectHeader<ulong,ulong>(byte,ulong&,ulong&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteUnmanagedWithObjectHeader<ulong>(byte,ulong&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteValue<int>(int&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteValue<object>(object&)
|
||||
// System.Void MemoryPack.MemoryPackWriter.WriteValue<uint>(uint&)
|
||||
// Microsoft.ML.OnnxRuntime.Tensors.Tensor<float> Microsoft.ML.OnnxRuntime.NamedOnnxValue.AsTensor<float>()
|
||||
// Microsoft.ML.OnnxRuntime.NamedOnnxValue Microsoft.ML.OnnxRuntime.NamedOnnxValue.CreateFromTensor<float>(string,Microsoft.ML.OnnxRuntime.Tensors.Tensor<float>)
|
||||
// NodeCanvas.Framework.Variable<object> NodeCanvas.Framework.IBlackboardExtensions.GetVariable<object>(NodeCanvas.Framework.IBlackboard,string)
|
||||
@ -1740,9 +1699,7 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.ValueTuple<byte,object>>.Start<object>(object&)
|
||||
// System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<byte>.Start<object>(object&)
|
||||
// System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<object>.Start<object>(object&)
|
||||
// bool System.Runtime.CompilerServices.RuntimeHelpers.IsReferenceOrContainsReferences<int>()
|
||||
// bool System.Runtime.CompilerServices.RuntimeHelpers.IsReferenceOrContainsReferences<object>()
|
||||
// bool System.Runtime.CompilerServices.RuntimeHelpers.IsReferenceOrContainsReferences<uint>()
|
||||
// byte& System.Runtime.CompilerServices.Unsafe.Add<byte>(byte&,int)
|
||||
// byte& System.Runtime.CompilerServices.Unsafe.As<byte,byte>(byte&)
|
||||
// byte& System.Runtime.CompilerServices.Unsafe.As<int,byte>(int&)
|
||||
@ -1750,9 +1707,7 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// object& System.Runtime.CompilerServices.Unsafe.As<object,object>(object&)
|
||||
// object& System.Runtime.CompilerServices.Unsafe.As<object,object>(object&)
|
||||
// System.Void* System.Runtime.CompilerServices.Unsafe.AsPointer<object>(object&)
|
||||
// int& System.Runtime.CompilerServices.Unsafe.AsRef<int>(int&)
|
||||
// object& System.Runtime.CompilerServices.Unsafe.AsRef<object>(object&)
|
||||
// uint& System.Runtime.CompilerServices.Unsafe.AsRef<uint>(uint&)
|
||||
// Empire System.Runtime.CompilerServices.Unsafe.ReadUnaligned<Empire>(byte&)
|
||||
// RuntimeData.UnitFullType System.Runtime.CompilerServices.Unsafe.ReadUnaligned<RuntimeData.UnitFullType>(byte&)
|
||||
// byte System.Runtime.CompilerServices.Unsafe.ReadUnaligned<byte>(byte&)
|
||||
@ -1777,7 +1732,6 @@ public class AOTGenericReferences : UnityEngine.MonoBehaviour
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<float>(byte&,float)
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<int>(byte&,int)
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<long>(byte&,long)
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<object>(byte&,object)
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<uint>(byte&,uint)
|
||||
// System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned<ulong>(byte&,ulong)
|
||||
// Steamworks.SteamNetworkingMessage_t System.Runtime.InteropServices.Marshal.PtrToStructure<Steamworks.SteamNetworkingMessage_t>(System.IntPtr)
|
||||
|
||||
377
Unity/Assets/Scripts/TH1_Logic/Editor/TH1MigrationCommandLine.cs
Normal file
377
Unity/Assets/Scripts/TH1_Logic/Editor/TH1MigrationCommandLine.cs
Normal file
@ -0,0 +1,377 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using TH1_Logic.Editor.HybridCLR;
|
||||
using TH1_Logic.Editor.YooAssetTools;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Build;
|
||||
using UnityEditor.Build.Reporting;
|
||||
using UnityEngine;
|
||||
using DiagnosticsProcess = System.Diagnostics.Process;
|
||||
using DiagnosticsProcessStartInfo = System.Diagnostics.ProcessStartInfo;
|
||||
|
||||
namespace TH1_Logic.Editor
|
||||
{
|
||||
public static class TH1MigrationCommandLine
|
||||
{
|
||||
private const string BuildDirArg = "-th1SmokeBuildDir";
|
||||
private const string DefaultBuildSubDirectory = "TH1/CodexSmoke";
|
||||
private const string ExeName = "TOHOTOPIA.exe";
|
||||
|
||||
[MenuItem("Tools/TH1/iOS Migration/Command Line/Prepare And Build Windows Smoke")]
|
||||
public static void PrepareAndBuildWindowsSmoke()
|
||||
{
|
||||
RunBatchAction(() =>
|
||||
{
|
||||
ConfigureWindowsIl2CppSmokeSettings();
|
||||
PrepareCurrentPlatform(true);
|
||||
|
||||
var exePath = BuildWindowsSmokePlayer();
|
||||
Debug.Log($"[TH1.Migration.CLI] Windows smoke build OK: {exePath}");
|
||||
});
|
||||
}
|
||||
|
||||
[MenuItem("Tools/TH1/iOS Migration/Command Line/Prepare Current Platform")]
|
||||
public static void PrepareCurrentPlatformMenu()
|
||||
{
|
||||
RunBatchAction(() => PrepareCurrentPlatform(true));
|
||||
}
|
||||
|
||||
public static void PrepareCurrentPlatform(bool developmentBuild)
|
||||
{
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
TH1HybridCLRBuildTools.ConfigureHotfixSettings();
|
||||
TH1YooAssetBuildTools.ConfigureDefaultPackageCollector();
|
||||
TH1HybridCLRBuildTools.GenerateAll();
|
||||
|
||||
if (!TH1HybridCLRBuildTools.BuildAndCopyHotfixArtifacts(developmentBuild))
|
||||
{
|
||||
throw new BuildFailedException("[TH1.Migration.CLI] Build hotfix dll failed.");
|
||||
}
|
||||
|
||||
TH1YooAssetBuildTools.BuildBuiltinDefaultPackage();
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
var blockers = TH1MigrationBuildStatus.GetBuildBlockingMessages(EditorUserBuildSettings.activeBuildTarget);
|
||||
if (blockers.Count > 0)
|
||||
{
|
||||
throw new BuildFailedException(
|
||||
"[TH1.Migration.CLI] Build preparation still has blocking errors:\n" +
|
||||
string.Join("\n", blockers));
|
||||
}
|
||||
|
||||
Debug.Log("[TH1.Migration.CLI] Prepare current platform OK.");
|
||||
}
|
||||
|
||||
private static void ConfigureWindowsIl2CppSmokeSettings()
|
||||
{
|
||||
const BuildTargetGroup group = BuildTargetGroup.Standalone;
|
||||
const BuildTarget target = BuildTarget.StandaloneWindows64;
|
||||
|
||||
if (EditorUserBuildSettings.activeBuildTarget != target)
|
||||
{
|
||||
EditorUserBuildSettings.SwitchActiveBuildTarget(group, target);
|
||||
}
|
||||
|
||||
PlayerSettings.SetScriptingBackend(group, ScriptingImplementation.IL2CPP);
|
||||
EditorUserBuildSettings.development = true;
|
||||
EditorUserBuildSettings.allowDebugging = true;
|
||||
PlayerSettings.usePlayerLog = true;
|
||||
PlayerSettings.SetStackTraceLogType(LogType.Log, StackTraceLogType.ScriptOnly);
|
||||
PlayerSettings.SetStackTraceLogType(LogType.Warning, StackTraceLogType.ScriptOnly);
|
||||
PlayerSettings.SetStackTraceLogType(LogType.Error, StackTraceLogType.ScriptOnly);
|
||||
PlayerSettings.SetStackTraceLogType(LogType.Assert, StackTraceLogType.ScriptOnly);
|
||||
PlayerSettings.SetStackTraceLogType(LogType.Exception, StackTraceLogType.ScriptOnly);
|
||||
|
||||
Debug.Log("[TH1.Migration.CLI] Configured Windows IL2CPP smoke build settings.");
|
||||
}
|
||||
|
||||
private static string BuildWindowsSmokePlayer()
|
||||
{
|
||||
var outputRoot = GetSmokeBuildDirectory();
|
||||
CleanSmokeBuildDirectory(outputRoot);
|
||||
|
||||
var outputExe = Path.Combine(outputRoot, ExeName);
|
||||
var scenes = EditorBuildSettings.scenes
|
||||
.Where(scene => scene.enabled)
|
||||
.Select(scene => scene.path)
|
||||
.ToArray();
|
||||
|
||||
if (scenes.Length == 0)
|
||||
{
|
||||
throw new BuildFailedException("[TH1.Migration.CLI] No enabled scenes in EditorBuildSettings.");
|
||||
}
|
||||
|
||||
var options = new BuildPlayerOptions
|
||||
{
|
||||
scenes = scenes,
|
||||
locationPathName = outputExe,
|
||||
target = BuildTarget.StandaloneWindows64,
|
||||
targetGroup = BuildTargetGroup.Standalone,
|
||||
options = BuildOptions.Development | BuildOptions.AllowDebugging
|
||||
};
|
||||
|
||||
var report = BuildPipeline.BuildPlayer(options);
|
||||
var summary = report.summary;
|
||||
if (summary.result != BuildResult.Succeeded)
|
||||
{
|
||||
throw new BuildFailedException(
|
||||
$"[TH1.Migration.CLI] Build failed: {summary.result}, errors={summary.totalErrors}, warnings={summary.totalWarnings}");
|
||||
}
|
||||
|
||||
var playerExe = FindPlayerExecutable(outputRoot, outputExe);
|
||||
if (string.IsNullOrEmpty(playerExe))
|
||||
{
|
||||
BuildExportedVisualStudioSolution(outputRoot);
|
||||
playerExe = FindPlayerExecutable(outputRoot, outputExe);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(playerExe))
|
||||
{
|
||||
throw new BuildFailedException(
|
||||
$"[TH1.Migration.CLI] Build succeeded but no runnable player exe was found under {outputRoot}.");
|
||||
}
|
||||
|
||||
return playerExe;
|
||||
}
|
||||
|
||||
private static string GetSmokeBuildDirectory()
|
||||
{
|
||||
var argValue = GetCommandLineValue(BuildDirArg);
|
||||
if (!string.IsNullOrEmpty(argValue))
|
||||
{
|
||||
return Path.GetFullPath(argValue);
|
||||
}
|
||||
|
||||
return Path.GetFullPath(Path.Combine(GetProjectRoot(), DefaultBuildSubDirectory));
|
||||
}
|
||||
|
||||
private static string FindPlayerExecutable(string outputRoot, string expectedExe)
|
||||
{
|
||||
if (File.Exists(expectedExe)) return expectedExe;
|
||||
if (!Directory.Exists(outputRoot)) return string.Empty;
|
||||
|
||||
var exeFiles = Directory.GetFiles(outputRoot, "*.exe", SearchOption.AllDirectories)
|
||||
.Where(path =>
|
||||
{
|
||||
if (path.IndexOf("Il2CppOutputProject", StringComparison.OrdinalIgnoreCase) >= 0) return false;
|
||||
var fileName = Path.GetFileName(path);
|
||||
if (fileName.IndexOf("CrashHandler", StringComparison.OrdinalIgnoreCase) >= 0) return false;
|
||||
if (fileName.Equals("il2cpp.exe", StringComparison.OrdinalIgnoreCase)) return false;
|
||||
if (fileName.Equals("UnityLinker.exe", StringComparison.OrdinalIgnoreCase)) return false;
|
||||
if (fileName.Equals("bee_backend.exe", StringComparison.OrdinalIgnoreCase)) return false;
|
||||
if (fileName.Equals("Analytics.exe", StringComparison.OrdinalIgnoreCase)) return false;
|
||||
if (fileName.Equals("createdump.exe", StringComparison.OrdinalIgnoreCase)) return false;
|
||||
return true;
|
||||
})
|
||||
.OrderBy(path => path.Length)
|
||||
.ToArray();
|
||||
|
||||
return exeFiles.FirstOrDefault() ?? string.Empty;
|
||||
}
|
||||
|
||||
private static void BuildExportedVisualStudioSolution(string outputRoot)
|
||||
{
|
||||
var solutionPath = Directory.GetFiles(outputRoot, "*.sln", SearchOption.TopDirectoryOnly)
|
||||
.OrderBy(path => path.Length)
|
||||
.FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(solutionPath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var msBuildPath = FindMSBuildPath();
|
||||
if (string.IsNullOrEmpty(msBuildPath))
|
||||
{
|
||||
throw new BuildFailedException(
|
||||
$"[TH1.Migration.CLI] Unity exported a Visual Studio solution but MSBuild was not found: {solutionPath}");
|
||||
}
|
||||
|
||||
Debug.Log($"[TH1.Migration.CLI] Unity exported Visual Studio solution, building it with MSBuild: {solutionPath}");
|
||||
var windowsSdkVersion = FindLatestWindowsSdkVersion();
|
||||
var platformToolset = FindLatestPlatformToolset(msBuildPath);
|
||||
var retargetArgs = string.Empty;
|
||||
if (!string.IsNullOrEmpty(windowsSdkVersion))
|
||||
{
|
||||
retargetArgs += $" /p:WindowsTargetPlatformVersion={windowsSdkVersion}";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(platformToolset))
|
||||
{
|
||||
retargetArgs += $" /p:PlatformToolset={platformToolset}";
|
||||
}
|
||||
|
||||
RunProcess(
|
||||
msBuildPath,
|
||||
$"\"{solutionPath}\" /m /p:Configuration=Debug /p:Platform=x64{retargetArgs} /verbosity:minimal",
|
||||
outputRoot);
|
||||
}
|
||||
|
||||
private static string FindMSBuildPath()
|
||||
{
|
||||
var programFilesX86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
|
||||
var vsWherePath = Path.Combine(programFilesX86, "Microsoft Visual Studio", "Installer", "vswhere.exe");
|
||||
if (File.Exists(vsWherePath))
|
||||
{
|
||||
var output = RunProcess(vsWherePath, "-latest -products * -requires Microsoft.Component.MSBuild -find MSBuild\\**\\Bin\\MSBuild.exe", GetProjectRoot(), false);
|
||||
var path = output
|
||||
.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
.FirstOrDefault(File.Exists);
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
return path;
|
||||
}
|
||||
}
|
||||
|
||||
var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
|
||||
var candidates = new[]
|
||||
{
|
||||
Path.Combine(programFiles, "Microsoft Visual Studio", "2022", "Community", "MSBuild", "Current", "Bin", "MSBuild.exe"),
|
||||
Path.Combine(programFiles, "Microsoft Visual Studio", "2022", "Professional", "MSBuild", "Current", "Bin", "MSBuild.exe"),
|
||||
Path.Combine(programFiles, "Microsoft Visual Studio", "2022", "Enterprise", "MSBuild", "Current", "Bin", "MSBuild.exe"),
|
||||
Path.Combine(programFilesX86, "Microsoft Visual Studio", "2022", "BuildTools", "MSBuild", "Current", "Bin", "MSBuild.exe")
|
||||
};
|
||||
|
||||
return candidates.FirstOrDefault(File.Exists) ?? string.Empty;
|
||||
}
|
||||
|
||||
private static string FindLatestWindowsSdkVersion()
|
||||
{
|
||||
var programFilesX86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
|
||||
var sdkLibRoot = Path.Combine(programFilesX86, "Windows Kits", "10", "Lib");
|
||||
if (!Directory.Exists(sdkLibRoot))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return Directory.GetDirectories(sdkLibRoot)
|
||||
.Select(Path.GetFileName)
|
||||
.Where(name => Version.TryParse(name?.TrimEnd('.'), out _))
|
||||
.OrderByDescending(name => Version.Parse(name.TrimEnd('.')))
|
||||
.FirstOrDefault() ?? string.Empty;
|
||||
}
|
||||
|
||||
private static string FindLatestPlatformToolset(string msBuildPath)
|
||||
{
|
||||
var current = new FileInfo(msBuildPath).Directory;
|
||||
while (current != null)
|
||||
{
|
||||
var toolsetRoot = Path.Combine(current.FullName, "Microsoft", "VC", "v170", "Platforms", "x64", "PlatformToolsets");
|
||||
if (Directory.Exists(toolsetRoot))
|
||||
{
|
||||
return Directory.GetDirectories(toolsetRoot)
|
||||
.Select(Path.GetFileName)
|
||||
.Where(name => name != null && name.StartsWith("v", StringComparison.OrdinalIgnoreCase))
|
||||
.OrderByDescending(name => name)
|
||||
.FirstOrDefault() ?? string.Empty;
|
||||
}
|
||||
|
||||
current = current.Parent;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
private static string RunProcess(string fileName, string arguments, string workingDirectory, bool throwOnError = true)
|
||||
{
|
||||
var process = new DiagnosticsProcess
|
||||
{
|
||||
StartInfo = new DiagnosticsProcessStartInfo
|
||||
{
|
||||
FileName = fileName,
|
||||
Arguments = arguments,
|
||||
WorkingDirectory = workingDirectory,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true
|
||||
}
|
||||
};
|
||||
|
||||
process.Start();
|
||||
var output = process.StandardOutput.ReadToEnd();
|
||||
var error = process.StandardError.ReadToEnd();
|
||||
process.WaitForExit();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(output))
|
||||
{
|
||||
Debug.Log(output);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(error))
|
||||
{
|
||||
Debug.LogWarning(error);
|
||||
}
|
||||
|
||||
if (throwOnError && process.ExitCode != 0)
|
||||
{
|
||||
throw new BuildFailedException(
|
||||
$"[TH1.Migration.CLI] Process failed ({process.ExitCode}): {fileName} {arguments}\n{output}\n{error}");
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
private static string GetCommandLineValue(string name)
|
||||
{
|
||||
var args = Environment.GetCommandLineArgs();
|
||||
for (var i = 0; i < args.Length - 1; i++)
|
||||
{
|
||||
if (string.Equals(args[i], name, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return args[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
private static string GetProjectRoot()
|
||||
{
|
||||
return Directory.GetParent(Application.dataPath)?.FullName ?? Application.dataPath;
|
||||
}
|
||||
|
||||
private static void CleanSmokeBuildDirectory(string outputRoot)
|
||||
{
|
||||
var fullOutputRoot = Path.GetFullPath(outputRoot);
|
||||
var defaultSafeRoot = Path.GetFullPath(Path.Combine(GetProjectRoot(), "TH1"));
|
||||
if (!fullOutputRoot.StartsWith(defaultSafeRoot, StringComparison.OrdinalIgnoreCase) &&
|
||||
string.IsNullOrEmpty(GetCommandLineValue(BuildDirArg)))
|
||||
{
|
||||
throw new BuildFailedException($"[TH1.Migration.CLI] Refuse to clean unexpected smoke build dir: {fullOutputRoot}");
|
||||
}
|
||||
|
||||
if (Directory.Exists(fullOutputRoot))
|
||||
{
|
||||
Directory.Delete(fullOutputRoot, true);
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(fullOutputRoot);
|
||||
}
|
||||
|
||||
private static void RunBatchAction(System.Action action)
|
||||
{
|
||||
try
|
||||
{
|
||||
action();
|
||||
if (Application.isBatchMode)
|
||||
{
|
||||
EditorApplication.Exit(0);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"[TH1.Migration.CLI] Failed:\n{e}");
|
||||
if (Application.isBatchMode)
|
||||
{
|
||||
EditorApplication.Exit(1);
|
||||
return;
|
||||
}
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ef088115a5f4492b90b43c79291c551
|
||||
timeCreated: 1781111040
|
||||
Loading…
x
Reference in New Issue
Block a user