Просмотр исходного кода

简化了MessageDispatcher,MessageDispatcher只做分发,消息反序列化全部可以放到Session中进行,代码大大精简

tanghai 7 лет назад
Родитель
Сommit
08003826c1

+ 2 - 18
Server/Hotfix/Module/Message/InnerMessageDispatcher.cs

@@ -5,24 +5,8 @@ namespace ETHotfix
 {
 	public class InnerMessageDispatcher: IMessageDispatcher
 	{
-		public void Dispatch(Session session, Packet packet)
+		public void Dispatch(Session session, ushort opcode, object message)
 		{
-			IMessage message;
-			try
-			{
-				Type messageType = Game.Scene.GetComponent<OpcodeTypeComponent>().GetType(packet.Opcode);
-				message = (IMessage)session.Network.MessagePacker.DeserializeFrom(messageType, packet.Stream);
-			}
-			catch (Exception e)
-			{
-				// 出现任何解析消息异常都要断开Session,防止客户端伪造消息
-				Log.Error(e);
-				session.Error = ErrorCode.ERR_PacketParserError;
-				session.Network.Remove(session.Id);
-				return;
-			}
-			
-			
 			// 收到actor消息,放入actor队列
 			if (message is IActorMessage iActorMessage)
 			{
@@ -56,7 +40,7 @@ namespace ETHotfix
 				return;
 			}
 			
-			Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, new MessageInfo(packet.Opcode, message));
+			Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, new MessageInfo(opcode, message));
 		}
 	}
 }

+ 3 - 21
Server/Hotfix/Module/Message/OuterMessageDispatcher.cs

@@ -6,26 +6,8 @@ namespace ETHotfix
 {
 	public class OuterMessageDispatcher: IMessageDispatcher
 	{
-		public async void Dispatch(Session session, Packet packet)
+		public async void Dispatch(Session session, ushort opcode, object message)
 		{
-			object message;
-			try
-			{
-				OpcodeTypeComponent opcodeTypeComponent = session.Network.Entity.GetComponent<OpcodeTypeComponent>();
-				object instance = opcodeTypeComponent.GetInstance(packet.Opcode);
-				message = session.Network.MessagePacker.DeserializeFrom(instance, packet.Stream);
-			}
-			catch (Exception e)
-			{
-				// 出现任何异常都要断开Session,防止客户端伪造消息
-				Log.Error(e);
-				session.Error = ErrorCode.ERR_PacketParserError;
-				session.Network.Remove(session.Id);
-				return;
-			}
-			
-			//Log.Debug($"recv: {JsonHelper.ToJson(message)}");
-	
 			switch (message)
 			{
 				case IFrameMessage iFrameMessage: // 如果是帧消息,构造成OneFrameMessage发给对应的unit
@@ -38,7 +20,7 @@ namespace ETHotfix
 
 					OneFrameMessage oneFrameMessage = new OneFrameMessage
 					{
-						Op = packet.Opcode,
+						Op = opcode,
 						AMessage = ByteString.CopyFrom(session.Network.MessagePacker.SerializeTo(iFrameMessage))
 					};
 					actorMessageSender.Send(oneFrameMessage);
@@ -65,7 +47,7 @@ namespace ETHotfix
 				}
 			}
 	
-			Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, new MessageInfo(packet.Opcode, message));
+			Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, new MessageInfo(opcode, message));
 		}
 	}
 }

+ 1 - 1
Unity/Assets/Scripts/Helper/ILHelper.cs

@@ -22,7 +22,7 @@ namespace ETModel
 			appdomain.DelegateManager.RegisterMethodDelegate<byte[], int, int>();
 			appdomain.DelegateManager.RegisterMethodDelegate<IResponse>();
 			appdomain.DelegateManager.RegisterMethodDelegate<Session, object>();
-			appdomain.DelegateManager.RegisterMethodDelegate<Session, Packet>();
+			appdomain.DelegateManager.RegisterMethodDelegate<Session, byte, ushort, Packet>();
 			appdomain.DelegateManager.RegisterMethodDelegate<Session>();
 			appdomain.DelegateManager.RegisterMethodDelegate<ILTypeInstance>();
 			appdomain.DelegateManager.RegisterFunctionDelegate<Google.Protobuf.Adapt_IMessage.Adaptor>();

+ 3 - 27
Unity/Assets/Scripts/Module/Message/ClientDispatcher.cs

@@ -1,33 +1,9 @@
-using System;
-
-namespace ETModel
+namespace ETModel
 {
 	public class ClientDispatcher: IMessageDispatcher
 	{
-		public void Dispatch(Session session, Packet packet)
+		public void Dispatch(Session session, ushort opcode, object message)
 		{
-			object message;
-			try
-			{
-				if (OpcodeHelper.IsClientHotfixMessage(packet.Opcode))
-				{
-					session.GetComponent<SessionCallbackComponent>().MessageCallback.Invoke(session, packet);
-					return;
-				}
-
-				OpcodeTypeComponent opcodeTypeComponent = session.Network.Entity.GetComponent<OpcodeTypeComponent>();
-				object instance = opcodeTypeComponent.GetInstance(packet.Opcode);
-				message = session.Network.MessagePacker.DeserializeFrom(instance, packet.Stream);
-			}
-			catch (Exception e)
-			{
-				// 出现任何解析消息异常都要断开Session,防止客户端伪造消息
-				Log.Error(e);
-				session.Error = ErrorCode.ERR_PacketParserError;
-				session.Network.Remove(session.Id);
-				return;
-			}
-				
 			// 如果是帧同步消息,交给ClientFrameComponent处理
 			FrameMessage frameMessage = message as FrameMessage;
 			if (frameMessage != null)
@@ -37,7 +13,7 @@ namespace ETModel
 			}
 
 			// 普通消息或者是Rpc请求消息
-			MessageInfo messageInfo = new MessageInfo(packet.Opcode, message);
+			MessageInfo messageInfo = new MessageInfo(opcode, message);
 			Game.Scene.GetComponent<MessageDispatherComponent>().Handle(session, messageInfo);
 		}
 	}

+ 1 - 1
Unity/Assets/Scripts/Module/Message/IMessageDispatcher.cs

@@ -2,6 +2,6 @@
 {
 	public interface IMessageDispatcher
 	{
-		void Dispatch(Session session, Packet packet);
+		void Dispatch(Session session, ushort opcode, object message);
 	}
 }

+ 0 - 2
Unity/Assets/Scripts/Module/Message/Network/TCP/PacketParser.cs

@@ -29,8 +29,6 @@ namespace ETModel
 			}
 		}
 		
-		public byte Flag { get; set; }
-		public ushort Opcode { get; set; }
 		public MemoryStream Stream { get; }
 
 		public Packet(int length)

+ 11 - 14
Unity/Assets/Scripts/Module/Message/Session.cs

@@ -124,28 +124,18 @@ namespace ETModel
 
 		private void Run(Packet packet)
 		{
-			packet.Flag = packet.Bytes[Packet.FlagIndex];
-			packet.Opcode = BitConverter.ToUInt16(packet.Bytes, Packet.OpcodeIndex);
 			packet.Stream.Seek(Packet.MessageIndex, SeekOrigin.Begin);
-			
-			byte flag = packet.Flag;
-			ushort opcode = packet.Opcode;
+			byte flag = packet.Bytes[Packet.FlagIndex];
+			ushort opcode = BitConverter.ToUInt16(packet.Bytes, Packet.OpcodeIndex);
 			
 #if !SERVER
 			if (OpcodeHelper.IsClientHotfixMessage(opcode))
 			{
-				this.Network.MessageDispatcher.Dispatch(this, packet);
+				this.GetComponent<SessionCallbackComponent>().MessageCallback.Invoke(this, flag, opcode, packet);
 				return;
 			}
 #endif
-
-			// flag第一位为1表示这是rpc返回消息,否则交由MessageDispatcher分发
-			if ((flag & 0x01) == 0)
-			{
-				this.Network.MessageDispatcher.Dispatch(this, packet);
-				return;
-			}
-
+			
 			object message;
 			try
 			{
@@ -162,6 +152,13 @@ namespace ETModel
 				this.Network.Remove(this.Id);
 				return;
 			}
+
+			// flag第一位为1表示这是rpc返回消息,否则交由MessageDispatcher分发
+			if ((flag & 0x01) == 0)
+			{
+				this.Network.MessageDispatcher.Dispatch(this, opcode, message);
+				return;
+			}
 				
 			IResponse response = message as IResponse;
 			if (response == null)

+ 1 - 1
Unity/Assets/Scripts/Module/Message/SessionCallbackComponent.cs

@@ -4,7 +4,7 @@ namespace ETModel
 {
 	public class SessionCallbackComponent: Component
 	{
-		public Action<Session, Packet> MessageCallback;
+		public Action<Session, byte, ushort, Packet> MessageCallback;
 		public Action<Session> DisposeCallback;
 
 		public override void Dispose()

+ 0 - 2
Unity/Assets/ThirdParty/ILRuntime/Generated/CLRBindings.cs

@@ -76,10 +76,8 @@ namespace ILRuntime.Runtime.Generated
             ETModel_EventSystem_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_Type_Queue_1_ILTypeInstance_Binding.Register(app);
             System_Collections_Generic_Queue_1_ILTypeInstance_Binding.Register(app);
-            ETModel_SessionCallbackComponent_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_Int32_Action_1_Google_Protobuf_Adapt_IMessage_Binding_Adaptor_Binding.Register(app);
             ETModel_Component_Binding.Register(app);
-            ETModel_Packet_Binding.Register(app);
             ETModel_NetworkComponent_Binding.Register(app);
             ETModel_IMessagePacker_Binding.Register(app);
             ETModel_MessageInfo_Binding.Register(app);

+ 0 - 75
Unity/Assets/ThirdParty/ILRuntime/Generated/ETModel_Packet_Binding.cs

@@ -15,81 +15,6 @@ namespace ILRuntime.Runtime.Generated
 {
     unsafe class ETModel_Packet_Binding
     {
-        public static void Register(ILRuntime.Runtime.Enviorment.AppDomain app)
-        {
-            BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;
-            MethodBase method;
-            Type[] args;
-            Type type = typeof(ETModel.Packet);
-            args = new Type[]{};
-            method = type.GetMethod("get_Opcode", flag, null, args, null);
-            app.RegisterCLRMethodRedirection(method, get_Opcode_0);
-            args = new Type[]{};
-            method = type.GetMethod("get_Flag", flag, null, args, null);
-            app.RegisterCLRMethodRedirection(method, get_Flag_1);
-            args = new Type[]{};
-            method = type.GetMethod("get_Stream", flag, null, args, null);
-            app.RegisterCLRMethodRedirection(method, get_Stream_2);
-
-
-        }
-
-
-        static StackObject* get_Opcode_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
-        {
-            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
-            StackObject* ptr_of_this_method;
-            StackObject* __ret = ILIntepreter.Minus(__esp, 1);
-
-            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
-            __intp.Free(ptr_of_this_method);
-
-            var result_of_this_method = instance_of_this_method.Opcode;
-
-            __ret->ObjectType = ObjectTypes.Integer;
-            __ret->Value = result_of_this_method;
-            return __ret + 1;
-        }
-
-        static StackObject* get_Flag_1(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
-        {
-            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
-            StackObject* ptr_of_this_method;
-            StackObject* __ret = ILIntepreter.Minus(__esp, 1);
-
-            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
-            __intp.Free(ptr_of_this_method);
-
-            var result_of_this_method = instance_of_this_method.Flag;
-
-            __ret->ObjectType = ObjectTypes.Integer;
-            __ret->Value = result_of_this_method;
-            return __ret + 1;
-        }
-
-        static StackObject* get_Stream_2(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
-        {
-            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
-            StackObject* ptr_of_this_method;
-            StackObject* __ret = ILIntepreter.Minus(__esp, 1);
-
-            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
-            __intp.Free(ptr_of_this_method);
-
-            var result_of_this_method = instance_of_this_method.Stream;
-
-            object obj_result_of_this_method = result_of_this_method;
-            if(obj_result_of_this_method is CrossBindingAdaptorType)
-            {    
-                return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance);
-            }
-            return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
-        }
-
-
 
     }
 }

+ 0 - 37
Unity/Assets/ThirdParty/ILRuntime/Generated/ETModel_SessionCallbackComponent_Binding.cs

@@ -15,42 +15,5 @@ namespace ILRuntime.Runtime.Generated
 {
     unsafe class ETModel_SessionCallbackComponent_Binding
     {
-        public static void Register(ILRuntime.Runtime.Enviorment.AppDomain app)
-        {
-            BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;
-            FieldInfo field;
-            Type[] args;
-            Type type = typeof(ETModel.SessionCallbackComponent);
-
-            field = type.GetField("MessageCallback", flag);
-            app.RegisterCLRFieldGetter(field, get_MessageCallback_0);
-            app.RegisterCLRFieldSetter(field, set_MessageCallback_0);
-            field = type.GetField("DisposeCallback", flag);
-            app.RegisterCLRFieldGetter(field, get_DisposeCallback_1);
-            app.RegisterCLRFieldSetter(field, set_DisposeCallback_1);
-
-
-        }
-
-
-
-        static object get_MessageCallback_0(ref object o)
-        {
-            return ((ETModel.SessionCallbackComponent)o).MessageCallback;
-        }
-        static void set_MessageCallback_0(ref object o, object v)
-        {
-            ((ETModel.SessionCallbackComponent)o).MessageCallback = (System.Action<ETModel.Session, ETModel.Packet>)v;
-        }
-        static object get_DisposeCallback_1(ref object o)
-        {
-            return ((ETModel.SessionCallbackComponent)o).DisposeCallback;
-        }
-        static void set_DisposeCallback_1(ref object o, object v)
-        {
-            ((ETModel.SessionCallbackComponent)o).DisposeCallback = (System.Action<ETModel.Session>)v;
-        }
-
-
     }
 }

+ 2 - 5
Unity/Hotfix/Module/Message/Session.cs

@@ -14,7 +14,7 @@ namespace ETHotfix
 		{
 			self.session = session;
 			SessionCallbackComponent sessionComponent = self.session.AddComponent<SessionCallbackComponent>();
-			sessionComponent.MessageCallback = (s, p) => { self.Run(s, p); };
+			sessionComponent.MessageCallback = (s, flag, opcode, p) => { self.Run(s, flag, opcode, p); };
 			sessionComponent.DisposeCallback = s => { self.Dispose(); };
 		}
 	}
@@ -48,11 +48,8 @@ namespace ETHotfix
 			this.session.Dispose();
 		}
 
-		public void Run(ETModel.Session s, Packet packet)
+		public void Run(ETModel.Session s, byte flag, ushort opcode, Packet packet)
 		{
-			ushort opcode = packet.Opcode;
-			byte flag = packet.Flag;
-
 			OpcodeTypeComponent opcodeTypeComponent = Game.Scene.GetComponent<OpcodeTypeComponent>();
 			object instance = opcodeTypeComponent.GetInstance(opcode);
 			object message = this.session.Network.MessagePacker.DeserializeFrom(instance, packet.Stream);

+ 112 - 238
Unity/Unity.csproj

@@ -12,13 +12,16 @@
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
     <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
-    <CompilerResponseFile></CompilerResponseFile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <CompilerResponseFile>
+    </CompilerResponseFile>
     <UnityProjectGenerator>VSTU</UnityProjectGenerator>
     <UnityProjectType>Game:1</UnityProjectType>
-    <UnityBuildTarget>StandaloneWindows:5</UnityBuildTarget>
-    <UnityVersion>2017.4.3f1</UnityVersion>
-    <RootNamespace></RootNamespace>
+    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>
+    <UnityVersion>2017.4.7f1</UnityVersion>
+    <RootNamespace>
+    </RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
   <PropertyGroup>
@@ -33,7 +36,7 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Debug\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2017_4_3;UNITY_2017_4;UNITY_2017;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;NET45;ILRuntime1</DefineConstants>
+    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2017_4_7;UNITY_2017_4;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;NET45;ILRuntime</DefineConstants>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -43,208 +46,205 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Release\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2017_4_3;UNITY_2017_4;UNITY_2017;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;NET45;ILRuntime1</DefineConstants>
+    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2017_4_7;UNITY_2017_4;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;NET45;ILRuntime</DefineConstants>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="mscorlib">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\mscorlib.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\mscorlib.dll</HintPath>
     </Reference>
     <Reference Include="System">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.dll</HintPath>
     </Reference>
     <Reference Include="System.XML">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.XML.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.XML.dll</HintPath>
     </Reference>
     <Reference Include="System.Core">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Core.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Core.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.CSharp">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\Microsoft.CSharp.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\Microsoft.CSharp.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.Serialization">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Runtime.Serialization.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Runtime.Serialization.dll</HintPath>
     </Reference>
     <Reference Include="System.Xml.Linq">
-      <HintPath>C:\Apps\Unity2017.4.3\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Xml.Linq.dll</HintPath>
+      <HintPath>C:\Apps\Unity2017.4.7\Editor\Data\MonoBleedingEdge\lib\mono\4.6-api\System.Xml.Linq.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.CoreModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.AccessibilityModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ParticleSystemModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.PhysicsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.VehiclesModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ClothModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.AIModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.AnimationModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TextRenderingModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UIModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TerrainPhysicsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.IMGUIModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ClusterInputModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ClusterRendererModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UNETModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.DirectorModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityAnalyticsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.PerformanceReportingModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityConnectModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.WebModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.WebModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.WebModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ARModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.VRModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UIElementsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.StyleSheetsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.AssetBundleModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.AudioModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.CrashReportingModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.GameCenterModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.GridModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ImageConversionModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.InputModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.JSONSerializeModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ParticlesLegacyModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ParticlesLegacyModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ParticlesLegacyModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Physics2DModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.ScreenCaptureModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.SharedInternalsModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.SpriteMaskModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.SpriteShapeModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TerrainModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TilemapModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityWebRequestModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityWebRequestAudioModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityWebRequestTextureModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UnityWebRequestWWWModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.VideoModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.WindModule">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
-    </Reference>
-    <Reference Include="UnityEngine.Networking">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TestRunner">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Timeline">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UIAutomation">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/UIAutomation/UnityEngine.UIAutomation.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/UIAutomation/UnityEngine.UIAutomation.dll</HintPath>
+    </Reference>
+    <Reference Include="UnityEngine.Networking">
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.GoogleAudioSpatializer">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.HoloLens">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.SpatialTracking">
-      <HintPath>C:/Apps/Unity2017.4.3/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll</HintPath>
+      <HintPath>C:/Apps/Unity2017.4.7/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
       <HintPath>Assets/Plugins/ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
-    <Reference Include="Newtonsoft.Json">
-      <HintPath>Assets/Plugins/Newtonsoft.Json.dll</HintPath>
-    </Reference>
     <Reference Include="UnityEngine.Analytics">
       <HintPath>C:/Users/USER-PC/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.analytics@2.0.13/UnityEngine.Analytics.dll</HintPath>
     </Reference>
@@ -277,11 +277,11 @@
     <Compile Include="Assets\Scripts\Base\Helper\MethodInfoHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\NetHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\ObjectHelper.cs" />
-    <Compile Include="Assets\Scripts\Base\Helper\ProtobufHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\RandomHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\StringHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\TimeHelper.cs" />
     <Compile Include="Assets\Scripts\Base\Helper\ZipHelper.cs" />
+    <Compile Include="Assets\Scripts\Base\IL\Adapt_IMessage.cs" />
     <Compile Include="Assets\Scripts\Base\IL\IAsyncStateMachineAdaptor.cs" />
     <Compile Include="Assets\Scripts\Base\IL\IDisposableAdaptor.cs" />
     <Compile Include="Assets\Scripts\Base\IL\ILAdapterAttribute.cs" />
@@ -299,6 +299,7 @@
     <Compile Include="Assets\Scripts\Base\Math\VLine.cs" />
     <Compile Include="Assets\Scripts\Base\Math\VRect.cs" />
     <Compile Include="Assets\Scripts\Base\MultiMap.cs" />
+    <Compile Include="Assets\Scripts\Base\Object\BaseAttribute.cs" />
     <Compile Include="Assets\Scripts\Base\Object\Component.cs" />
     <Compile Include="Assets\Scripts\Base\Object\ComponentFactory.cs" />
     <Compile Include="Assets\Scripts\Base\Object\ComponentWithId.cs" />
@@ -325,13 +326,6 @@
     <Compile Include="Assets\Scripts\Base\RecyclableMemoryStream\RecyclableMemoryStreamManager.cs" />
     <Compile Include="Assets\Scripts\Base\TryLocker.cs" />
     <Compile Include="Assets\Scripts\Base\UnOrderMultiMap.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\CreateUIEffect.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\Root\Root.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\Root\UICreateRoot.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\Selector.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\Sequence.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\True.cs" />
-    <Compile Include="Assets\Scripts\BehaviorTreeNode\UIScale.cs" />
     <Compile Include="Assets\Scripts\Component\Config\ClientConfig.cs" />
     <Compile Include="Assets\Scripts\Component\Config\DBConfig.cs" />
     <Compile Include="Assets\Scripts\Component\Config\GlobalProto.cs" />
@@ -349,7 +343,6 @@
     <Compile Include="Assets\Scripts\Entity\Scene.cs" />
     <Compile Include="Assets\Scripts\Entity\UnityWebRequestAsync.cs" />
     <Compile Include="Assets\Scripts\Entity\WWWAsync.cs" />
-    <Compile Include="Assets\Scripts\G2C_TestHandler.cs" />
     <Compile Include="Assets\Scripts\Helper\ActionHelper.cs" />
     <Compile Include="Assets\Scripts\Helper\BundleHelper.cs" />
     <Compile Include="Assets\Scripts\Helper\GameObjectHelper.cs" />
@@ -363,56 +356,6 @@
     <Compile Include="Assets\Scripts\Module\AssetsBundle\BundleDownloaderComponent.cs" />
     <Compile Include="Assets\Scripts\Module\AssetsBundle\ResourcesComponent.cs" />
     <Compile Include="Assets\Scripts\Module\AssetsBundle\VersionConfig.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorNodeConfig.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTree.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeArgsDict.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeConfig.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTArrayDoubleComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTArrayFloatComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTArrayInt64Component.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTArrayIntComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTArrayStringComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTBoolComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTDoubleComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTEnumComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTFloatComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTInt64Component.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTIntComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BaseType\BTStringComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BTTypeBaseComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\BTTypeManager.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayAudioClipComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayGameObjectComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayMaterialComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayShaderComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArraySpriteComponent..cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayTexture2DComponent..cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayTexture3DComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTArrayTextureComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTAudioClipComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTGameObjectComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTMaterialComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTShaderComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTSpriteComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTTexture2DComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTTexture3DComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BehaviorTreeType\UnityType\BTTextureComponent.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BTEnv.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\BTEnvKey.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\Node.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeClassifyType.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeDeprecatedAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeDesignerProto.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeEngineObjectAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeFieldBaseAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeFieldConstraintAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeInputAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeOutputAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodePropAttribute.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\NodeProto.cs" />
-    <Compile Include="Assets\Scripts\Module\BehaviorTree\TypeHelper.cs" />
     <Compile Include="Assets\Scripts\Module\Config\ACategory.cs" />
     <Compile Include="Assets\Scripts\Module\Config\AConfigComponent.cs" />
     <Compile Include="Assets\Scripts\Module\Config\ConfigAttribute.cs" />
@@ -423,6 +366,7 @@
     <Compile Include="Assets\Scripts\Module\FrameSync\CameraComponent.cs" />
     <Compile Include="Assets\Scripts\Module\FrameSync\ClientFrameComponent.cs" />
     <Compile Include="Assets\Scripts\Module\FrameSync\FrameMessage.cs" />
+    <Compile Include="Assets\Scripts\Module\FrameSync\FrameOpcode.cs" />
     <Compile Include="Assets\Scripts\Module\FrameSync\MoveComponent.cs" />
     <Compile Include="Assets\Scripts\Module\FrameSync\Player.cs" />
     <Compile Include="Assets\Scripts\Module\FrameSync\PlayerComponent.cs" />
@@ -461,6 +405,7 @@
     <Compile Include="Assets\Scripts\Module\Message\OpcodeTypeComponent.cs" />
     <Compile Include="Assets\Scripts\Module\Message\OuterMessage.cs" />
     <Compile Include="Assets\Scripts\Module\Message\OuterOpcode.cs" />
+    <Compile Include="Assets\Scripts\Module\Message\ProtobufHelper.cs" />
     <Compile Include="Assets\Scripts\Module\Message\ProtobufPacker.cs" />
     <Compile Include="Assets\Scripts\Module\Message\RpcException.cs" />
     <Compile Include="Assets\Scripts\Module\Message\Session.cs" />
@@ -490,6 +435,24 @@
     <Compile Include="Assets\Scripts\UI\UILoading\Event\LoadingBeginEvent_CreateLoadingUI.cs" />
     <Compile Include="Assets\Scripts\UI\UILoading\Event\LoadingFinishEvent_RemoveLoadingUI.cs" />
     <Compile Include="Assets\Scripts\UI\UILoading\Factory\UILoadingFactory.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\AdaptHelper.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\ByteArray.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\ByteString.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\CodedInputStream.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\CodedOutputStream.ComputeSize.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\CodedOutputStream.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\Collections\RepeatedField.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\Compatibility\PropertyInfoExtensions.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\Compatibility\StreamExtensions.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\FieldCodec.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\ICustomDiagnosticMessage.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\IMessage.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\InvalidProtocolBufferException.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\LimitedInputStream.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\MessageExtensions.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\MessageParser.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\ProtoPreconditions.cs" />
+    <Compile Include="Assets\ThirdParty\Google.Protobuf\WireFormat.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\CLRBindings.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_ActionHelper_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Actor_CreateUnits_Binding.cs" />
@@ -504,6 +467,7 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_ComponentWithId_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_DoubleMap_2_UInt16_Type_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Entity_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_ErrorCode_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_EventAttribute_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_EventProxy_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_EventSystem_Binding.cs" />
@@ -514,6 +478,7 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_GlobalProto_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Hotfix_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_IdGenerater_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_IMessagePacker_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Log_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_MessageAttribute_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_MessageDispatherComponent_Binding.cs" />
@@ -526,7 +491,6 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Packet_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Player_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_PlayerComponent_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_ProtobufHelper_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_ResourcesComponent_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_RpcException_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_Scene_Binding.cs" />
@@ -539,11 +503,14 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_UnitFactory_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_UnitInfo_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ETModel_UnOrderMultiMap_2_Type_ILTypeInstance_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\Google_Protobuf_CodedInputStream_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\Google_Protobuf_CodedOutputStream_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\Google_Protobuf_Collections_RepeatedField_1_UnitInfo_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\Google_Protobuf_ProtoPreconditions_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\LitJson_JsonMapper_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ProtoBuf_PType_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\ReferenceCollector_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Activator_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_Int32_Action_1_ILTypeI_t.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_Int32_Action_1_Google__t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_Int64_ILTypeInstance_B_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_String_ILTypeInstance__t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_String_ILTypeInstance__t_t.cs" />
@@ -552,19 +519,20 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_Type_ILTypeInstance_Bi_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_Type_Queue_1_ILTypeIns_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_UInt16_List_1_ILTypeIn_t.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Dictionary_2_UInt16_Object_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_HashSet_1_ILTypeInstance_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_HashSet_1_ILTypeInstance_Binding_En_t.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_IEnumerator_1_UnitInfo_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_ILTypeInstance_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_ILTypeInstance_Binding_Enume_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_Object_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_String_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_Type_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_Type_Binding_Enumerator_Bind_t.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_UnitInfo_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_List_1_UnitInfo_Binding_Enumerator__t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Queue_1_ILTypeInstance_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_Generic_Queue_1_Int64_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_IDictionary_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Collections_IEnumerator_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Exception_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_IDisposable_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Linq_Enumerable_Binding.cs" />
@@ -572,13 +540,13 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Object_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Reflection_MemberInfo_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Runtime_CompilerServices_AsyncVoidMethodBuilder_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Runtime_CompilerServices_TaskAwaiter_1_ILTypeInstance_B_t.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Runtime_CompilerServices_TaskAwaiter_1_Google_Protobuf__t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Runtime_CompilerServices_TaskAwaiter_1_IResponse_Bindin_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_String_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_CancellationToken_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_Tasks_Task_1_ILTypeInstance_Binding.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_Tasks_Task_1_Google_Protobuf_Adapt_IMessage_B_t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_Tasks_Task_1_IResponse_Binding.cs" />
-    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_Tasks_TaskCompletionSource_1_ILTypeInstance_B_t.cs" />
+    <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Threading_Tasks_TaskCompletionSource_1_Google_Protobuf__t.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\System_Type_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\UnityEngine_Camera_Binding.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Generated\UnityEngine_Component_Binding.cs" />
@@ -830,100 +798,6 @@
     <Compile Include="Assets\ThirdParty\ILRuntime\Mono.Cecil.Pdb\pdb\Mono.Cecil.Pdb\PdbWriter.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Mono.Cecil.Pdb\pdb\Mono.Cecil.Pdb\SymDocumentWriter.cs" />
     <Compile Include="Assets\ThirdParty\ILRuntime\Mono.Cecil.Pdb\pdb\Mono.Cecil.Pdb\SymWriter.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\IExtensibleAdapter.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\BclHelpers.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\BufferExtension.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\BufferPool.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\CallbackAttributes.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Compiler\CompilerContext.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Compiler\CompilerDelegates.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Compiler\Local.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\DataFormat.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\DiscriminatedUnion.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Extensible.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ExtensibleUtil.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\GlobalSuppressions.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Helpers.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\IExtensible.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\IExtension.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ImplicitFields.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\KeyValuePairProxy.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\AttributeMap.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\BasicList.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\CallbackSet.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\MetaType.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\ProtoSyntax.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\RuntimeTypeModel.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\SubType.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\TypeFormatEventArgs.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\TypeModel.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Meta\ValueMember.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\NetObjectCache.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\PrefixStyle.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtobufPropertyHelper.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoContractAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoConverterAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoEnumAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoException.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoIgnoreAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoIncludeAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoMapAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoMemberAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoReader.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ProtoWriter.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\PType.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\SerializationContext.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ArrayDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\BlobSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\BooleanSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ByteSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\CharSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\CompiledSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\DateTimeSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\DecimalSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\DefaultValueDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\DoubleSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\EnumSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\FieldDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\GuidSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ImmutableCollectionDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\Int16Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\Int32Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\Int64Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\IProtoSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\IProtoTypeSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ISerializerProxy.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ListDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\MapDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\MemberSpecifiedDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\NetObjectSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\NullDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ParseableSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\PropertyDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ProtoDecoratorBase.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\ReflectedUriDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\SByteSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\SingleSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\StringSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\SubItemSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\SurrogateSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\SystemTypeSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\TagDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\TimeSpanSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\TupleSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\TypeSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\UInt16Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\UInt32Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\UInt64Serializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\Serializers\UriDecorator.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ServiceModel\ProtoBehaviorAttribute.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ServiceModel\ProtoBehaviorExtensionElement.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ServiceModel\ProtoEndpointBehavior.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ServiceModel\ProtoOperationBehavior.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\ServiceModel\XmlProtoSerializer.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\SubItemToken.cs" />
-    <Compile Include="Assets\ThirdParty\Protobuf\protobuf-net\WireType.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Assets\Res\Config\BuffConfig.txt" />
@@ -934,4 +808,4 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Target Name="GenerateTargetFrameworkMonikerAttribute" />
-</Project>
+</Project>