Kaynağa Gözat

统一mono层跟hotfix层的抛出事件机制,订阅事件方式完全一样,使用Game.Scene.GetComponent<EventComponent>(),mono层跟hotfix层都可以抛出事件并且同时订阅相同的事件。

tanghai 8 yıl önce
ebeveyn
işleme
c7afdbda06

+ 0 - 9
Unity/Assets/Scripts/Base/Event/CrossIdType.cs

@@ -1,9 +0,0 @@
-namespace Model
-{
-    public enum CrossIdType
-    {
-        MessageDeserializeFinish,
-        SceneChange,
-	    FrameUpdate,
-    }
-}

+ 0 - 12
Unity/Assets/Scripts/Base/Event/CrossIdType.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: b6a5e8fbd467c674d9728bc5f1543d7f
-timeCreated: 1501467234
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 4 - 0
Unity/Assets/Scripts/Base/Event/EventIdType.cs

@@ -17,5 +17,9 @@
 
 		SessionRecvMessage,
 		NumbericChange,
+
+		MessageDeserializeFinish,
+		SceneChange,
+		FrameUpdate,
 	}
 }

+ 1 - 1
Unity/Assets/Scripts/Base/Message/ClientDispatcher.cs

@@ -20,7 +20,7 @@ namespace Model
 				MessageInfo messageInfo = new MessageInfo(opcode, message);
 				if (opcode < 2000)
 				{
-					Game.Scene.GetComponent<CrossComponent>().Run(CrossIdType.MessageDeserializeFinish, messageInfo);
+					Game.Scene.GetComponent<EventComponent>().Run(EventIdType.MessageDeserializeFinish, messageInfo);
 				}
 				else
 				{

+ 0 - 136
Unity/Assets/Scripts/Component/CrossComponent.cs

@@ -1,136 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Model
-{
-	[ObjectEvent]
-	public class CrossComponentEvent : ObjectEvent<CrossComponent>, IAwake
-	{
-		public void Awake()
-		{
-			this.Get().Awake();
-		}
-	}
-
-	/// <summary>
-	/// 事件分发,可以将事件分发到IL层
-	/// </summary>
-	public class CrossComponent : Component
-	{
-		private Dictionary<int, List<IInstanceMethod>> allEvents;
-
-		public void Awake()
-		{
-			Load();
-		}
-
-		private void Load()
-		{
-			allEvents = new Dictionary<int, List<IInstanceMethod>>();
-
-			Type[] types = DllHelper.GetHotfixTypes();
-			foreach (Type type in types)
-			{
-				object[] attrs = type.GetCustomAttributes(typeof(CrossEventAttribute), false);
-				foreach (object attr in attrs)
-				{
-					CrossEventAttribute aEventAttribute = (CrossEventAttribute)attr;
-#if ILRuntime
-					IInstanceMethod method = new ILInstanceMethod(type, "Run");
-#else
-					IInstanceMethod method = new MonoInstanceMethod(type, "Run");
-#endif
-					if (!allEvents.ContainsKey(aEventAttribute.Type))
-					{
-						allEvents.Add(aEventAttribute.Type, new List<IInstanceMethod>());
-					}
-					allEvents[aEventAttribute.Type].Add(method);
-				}
-			}
-		}
-
-		public void Run(CrossIdType type)
-		{
-			List<IInstanceMethod> iEvents = null;
-			if (!allEvents.TryGetValue((int)type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (IInstanceMethod obj in iEvents)
-			{
-				try
-				{
-					obj.Run();
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-
-		public void Run<A>(CrossIdType type, A a)
-		{
-			List<IInstanceMethod> iEvents = null;
-			if (!this.allEvents.TryGetValue((int)type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (IInstanceMethod obj in iEvents)
-			{
-				try
-				{
-					obj.Run(a);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-
-		public void Run<A, B>(CrossIdType type, A a, B b)
-		{
-			List<IInstanceMethod> iEvents = null;
-			if (!this.allEvents.TryGetValue((int)type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (IInstanceMethod obj in iEvents)
-			{
-				try
-				{
-					obj.Run(a, b);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-
-		public void Run<A, B, C>(CrossIdType type, A a, B b, C c)
-		{
-			List<IInstanceMethod> iEvents = null;
-			if (!this.allEvents.TryGetValue((int)type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (IInstanceMethod obj in iEvents)
-			{
-				try
-				{
-					obj.Run(a, b, c);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-	}
-}

+ 0 - 12
Unity/Assets/Scripts/Component/CrossComponent.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 23f378b7b8f09564ea89e562ef13d0a9
-timeCreated: 1498875151
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 142 - 26
Unity/Assets/Scripts/Component/EventComponent.cs

@@ -1,8 +1,106 @@
 using System;
 using System.Collections.Generic;
+using ILRuntime.CLR.Method;
+using ILRuntime.Runtime.Intepreter;
 
 namespace Model
 {
+	public interface IEventMethod
+	{
+		void Run();
+		void Run<A>(A a);
+		void Run<A, B>(A a, B b);
+		void Run<A, B, C>(A a, B b, C c);
+		void Run<A, B, C, D>(A a, B b, C c, D d);
+	}
+
+	public class IEventMonoMethod : IEventMethod
+	{
+		private readonly object obj;
+
+		public IEventMonoMethod(object obj)
+		{
+			this.obj = obj;
+		}
+
+		public void Run()
+		{
+			((IEvent)obj).Run();
+		}
+
+		public void Run<A>(A a)
+		{
+			((IEvent<A>)obj).Run(a);
+		}
+
+		public void Run<A, B>(A a, B b)
+		{
+			((IEvent<A, B>)obj).Run(a, b);
+		}
+
+		public void Run<A, B, C>(A a, B b, C c)
+		{
+			((IEvent<A, B, C>)obj).Run(a, b, c);
+		}
+
+		public void Run<A, B, C, D>(A a, B b, C c, D d)
+		{
+			((IEvent<A, B, C, D>)obj).Run(a, b, c, d);
+		}
+	}
+
+	public class IEventILMethod : IEventMethod
+	{
+		private readonly ILRuntime.Runtime.Enviorment.AppDomain appDomain;
+		private readonly ILTypeInstance instance;
+		private readonly IMethod method;
+		private readonly object[] param;
+
+		public IEventILMethod(Type type, string methodName)
+		{
+			appDomain = Init.Instance.AppDomain;
+			this.instance = this.appDomain.Instantiate(type.FullName);
+			this.method = this.instance.Type.GetMethod(methodName);
+			int n = this.method.ParameterCount;
+			this.param = new object[n];
+		}
+
+		public void Run()
+		{
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public void Run<A>(A a)
+		{
+			this.param[0] = a;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public void Run<A, B>(A a, B b)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public void Run<A, B, C>(A a, B b, C c)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public void Run<A, B, C, D>(A a, B b, C c, D d)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.param[3] = d;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+	}
+
 	[ObjectEvent]
 	public class EventComponentEvent : ObjectEvent<EventComponent>, IAwake, ILoad
 	{
@@ -16,19 +114,22 @@ namespace Model
 			this.Get().Load();
 		}
 	}
-	
+
 	public class EventComponent : Component
 	{
-		private Dictionary<EventIdType, List<object>> allEvents;
+		public static EventComponent Instance;
+
+		private Dictionary<EventIdType, List<IEventMethod>> allEvents;
 
 		public void Awake()
 		{
+			Instance = this;
 			this.Load();
 		}
 
 		public void Load()
 		{
-			this.allEvents = new Dictionary<EventIdType, List<object>>();
+			this.allEvents = new Dictionary<EventIdType, List<IEventMethod>>();
 
 			Type[] types = DllHelper.GetMonoTypes();
 			foreach (Type type in types)
@@ -41,25 +142,46 @@ namespace Model
 					object obj = Activator.CreateInstance(type);
 					if (!this.allEvents.ContainsKey((EventIdType)aEventAttribute.Type))
 					{
-						this.allEvents.Add((EventIdType)aEventAttribute.Type, new List<object>());
+						this.allEvents.Add((EventIdType)aEventAttribute.Type, new List<IEventMethod>());
 					}
-					this.allEvents[(EventIdType)aEventAttribute.Type].Add(obj);
+					this.allEvents[(EventIdType)aEventAttribute.Type].Add(new IEventMonoMethod(obj));
+				}
+			}
+
+			// hotfix dll
+			Type[] hotfixTypes = DllHelper.GetHotfixTypes();
+			foreach (Type type in hotfixTypes)
+			{
+				object[] attrs = type.GetCustomAttributes(typeof(EventAttribute), false);
+				foreach (object attr in attrs)
+				{
+					EventAttribute aEventAttribute = (EventAttribute)attr;
+#if ILRuntime
+					IEventMethod method = new IEventILMethod(type, "Run");
+#else
+					object obj = Activator.CreateInstance(type);
+					IEventMethod method = new IEventMonoMethod(obj);
+#endif
+					if (!allEvents.ContainsKey((EventIdType)aEventAttribute.Type))
+					{
+						allEvents.Add((EventIdType)aEventAttribute.Type, new List<IEventMethod>());
+					}
+					allEvents[(EventIdType)aEventAttribute.Type].Add(method);
 				}
 			}
 		}
 
 		public void Run(EventIdType type)
 		{
-			List<object> iEvents;
+			List<IEventMethod> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
-			foreach (object obj in iEvents)
+			foreach (IEventMethod iEvent in iEvents)
 			{
 				try
 				{
-					IEvent iEvent = (IEvent)obj;
 					iEvent.Run();
 				}
 				catch (Exception e)
@@ -71,66 +193,60 @@ namespace Model
 
 		public void Run<A>(EventIdType type, A a)
 		{
-			List<object> iEvents;
+			List<IEventMethod> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
-
-			foreach (object obj in iEvents)
+			foreach (IEventMethod iEvent in iEvents)
 			{
 				try
 				{
-					IEvent<A> iEvent = (IEvent<A>)obj;
 					iEvent.Run(a);
 				}
-				catch (Exception err)
+				catch (Exception e)
 				{
-					Log.Error(err.ToString());
+					Log.Error(e.ToString());
 				}
 			}
 		}
 
 		public void Run<A, B>(EventIdType type, A a, B b)
 		{
-			List<object> iEvents;
+			List<IEventMethod> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
-
-			foreach (object obj in iEvents)
+			foreach (IEventMethod iEvent in iEvents)
 			{
 				try
 				{
-					IEvent<A, B> iEvent = (IEvent<A, B>)obj;
 					iEvent.Run(a, b);
 				}
-				catch (Exception err)
+				catch (Exception e)
 				{
-					Log.Error(err.ToString());
+					Log.Error(e.ToString());
 				}
 			}
 		}
 
 		public void Run<A, B, C>(EventIdType type, A a, B b, C c)
 		{
-			List<object> iEvents;
+			List<IEventMethod> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
-
-			foreach (object obj in iEvents)
+			foreach (IEventMethod iEvent in iEvents)
 			{
 				try
 				{
-					IEvent<A, B, C> iEvent = (IEvent<A, B, C>)obj;
 					iEvent.Run(a, b, c);
 				}
-				catch (Exception err)
+				catch (Exception e)
 				{
-					Log.Error(err.ToString());
+					Log.Error(e.ToString());
 				}
 			}
 		}

+ 0 - 1
Unity/Assets/Scripts/Init.cs

@@ -67,7 +67,6 @@ namespace Model
 				Game.Scene.AddComponent<PlayerComponent>();
 				Game.Scene.AddComponent<UnitComponent>();
 				Game.Scene.AddComponent<ClientFrameComponent>();
-				Game.Scene.AddComponent<CrossComponent>();
 
 				// 进入热更新层
 				this.start.Run();

+ 30 - 0
Unity/Hotfix/Base/Event/IEvent.cs

@@ -1,5 +1,6 @@
 namespace Hotfix
 {
+#if ILRuntime
 	public interface IEvent
 	{
 		void Run();
@@ -34,4 +35,33 @@
 	{
 		void Run(A a, B b, C c, D d, E e, F f);
 	}
+#else
+	public interface IEvent : Model.IEvent
+	{
+	}
+
+	public interface IEvent<in A> : Model.IEvent<A>
+	{
+	}
+
+	public interface IEvent<in A, in B> : Model.IEvent<A, B>
+	{
+	}
+
+	public interface IEvent<in A, in B, in C> : Model.IEvent<A, B, C>
+	{
+	}
+
+	public interface IEvent<in A, in B, in C, in D> : Model.IEvent<A, B, C, D>
+	{
+	}
+
+	public interface IEvent<in A, in B, in C, in D, in E> : Model.IEvent<A, B, C, D, E>
+	{
+	}
+
+	public interface IEvent<in A, in B, in C, in D, in E, in F> : Model.IEvent<A, B, C, D, E, F>
+	{
+	}
+#endif
 }

+ 0 - 138
Unity/Hotfix/Component/EventComponent.cs

@@ -1,138 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Model;
-
-namespace Hotfix
-{
-	[ObjectEvent]
-	public class EventComponentEvent : ObjectEvent<EventComponent>, IAwake, ILoad
-	{
-		public void Awake()
-		{
-			this.Get().Awake();
-		}
-
-		public void Load()
-		{
-			this.Get().Load();
-		}
-	}
-	
-	public class EventComponent : Component
-	{
-		private Dictionary<EventIdType, List<object>> allEvents;
-
-		public void Awake()
-		{
-			this.Load();
-		}
-
-		public void Load()
-		{
-			this.allEvents = new Dictionary<EventIdType, List<object>>();
-			
-			Type[] types = DllHelper.GetHotfixTypes();
-			foreach (Type type in types)
-			{
-				object[] attrs = type.GetCustomAttributes(typeof(EventAttribute), false);
-				foreach (object attr in attrs)
-                {
-                    EventAttribute aEventAttribute = (EventAttribute)attr;
-					object obj = Activator.CreateInstance(type);
-					if (!this.allEvents.ContainsKey((EventIdType)aEventAttribute.Type))
-					{
-						this.allEvents.Add((EventIdType)aEventAttribute.Type, new List<object>());
-					}
-					this.allEvents[(EventIdType)aEventAttribute.Type].Add(obj);
-				}
-			}
-		}
-
-		public void Run(EventIdType type)
-		{
-			List<object> iEvents;
-			if (!this.allEvents.TryGetValue(type, out iEvents))
-			{
-				return;
-			}
-			foreach (object obj in iEvents)
-			{
-				try
-				{
-					IEvent iEvent = (IEvent)obj;
-					iEvent.Run();
-				}
-				catch (Exception e)
-				{
-					Log.Error(e.ToStr());
-				}
-			}
-		}
-
-		public void Run<A>(EventIdType type, A a)
-		{
-			List<object> iEvents;
-			if (!this.allEvents.TryGetValue(type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (object obj in iEvents)
-			{
-				try
-				{
-					IEvent<A> iEvent = (IEvent<A>)obj;
-					iEvent.Run(a);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-
-		public void Run<A, B>(EventIdType type, A a, B b)
-		{
-			List<object> iEvents;
-			if (!this.allEvents.TryGetValue(type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (object obj in iEvents)
-			{
-				try
-				{
-					IEvent<A, B> iEvent = (IEvent<A, B>)obj;
-					iEvent.Run(a, b);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-
-		public void Run<A, B, C>(EventIdType type, A a, B b, C c)
-		{
-			List<object> iEvents;
-			if (!this.allEvents.TryGetValue(type, out iEvents))
-			{
-				return;
-			}
-
-			foreach (object obj in iEvents)
-			{
-				try
-				{
-					IEvent<A, B, C> iEvent = (IEvent<A, B, C>)obj;
-					iEvent.Run(a, b, c);
-				}
-				catch (Exception err)
-				{
-					Log.Error(err.ToString());
-				}
-			}
-		}
-	}
-}

+ 0 - 1
Unity/Hotfix/Entity/Hotfix.cs

@@ -13,7 +13,6 @@
 					return scene;
 				}
 				scene = new Scene();
-				scene.AddComponent<EventComponent>();
 				scene.AddComponent<TimerComponent>();
 				return scene;
 			}

+ 2 - 2
Unity/Hotfix/Event/SessionRecvMessage_Dispatch.cs

@@ -3,8 +3,8 @@
 namespace Hotfix
 {
 	// 订阅mono层的Session发出的事件
-	[CrossEvent((int)CrossIdType.MessageDeserializeFinish)]
-	public class MessageDeserializeFinish_Dispatch
+	[Event((int)EventIdType.MessageDeserializeFinish)]
+	public class MessageDeserializeFinish_Dispatch: IEvent<MessageInfo>
 	{
 		public void Run(MessageInfo messageInfo)
 		{

+ 1 - 1
Unity/Hotfix/Init.cs

@@ -11,7 +11,7 @@ namespace Hotfix
 			{
 				Hotfix.Scene.ModelScene = Game.Scene;
 				Hotfix.Scene.AddComponent<UIComponent>();
-				Hotfix.Scene.GetComponent<EventComponent>().Run(EventIdType.InitSceneStart);
+				Game.Scene.GetComponent<EventComponent>().Run(EventIdType.InitSceneStart);
 			}
 			catch (Exception e)
 			{

+ 1 - 2
Unity/Hotfix/Unity.Hotfix.csproj

@@ -19,7 +19,7 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>..\Temp\UnityVS_bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
@@ -78,7 +78,6 @@
     <Compile Include="Base\Object\ObjectEvents.cs" />
     <Compile Include="Base\Object\ObjectPool.cs" />
     <Compile Include="Base\Other\IUIFactory.cs" />
-    <Compile Include="Component\EventComponent.cs" />
     <Compile Include="Component\GameObjectComponent.cs" />
     <Compile Include="Component\KVComponent.cs" />
     <Compile Include="Component\MessageDispatherComponent.cs" />

+ 1 - 1
Unity/ProjectSettings/ProjectSettings.asset

@@ -569,7 +569,7 @@ PlayerSettings:
   webGLUseWasm: 0
   webGLCompressionFormat: 1
   scriptingDefineSymbols:
-    1: NET45
+    1: NET45;ILRuntime
   platformArchitecture:
     iOS: 2
   scriptingBackend:

+ 55 - 39
Unity/Unity.Editor.Plugins.csproj

@@ -7,7 +7,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{81A6E58E-BFF2-F1C8-1C4E-6316985F642C}</ProjectGuid>
     <OutputType>Library</OutputType>
-    <AssemblyName>Assembly-CSharp-Editor-firstpass</AssemblyName>
+    <AssemblyName>Assembly-CSharp-Editor-firstpass.dll</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
@@ -20,6 +20,11 @@
     <RootNamespace></RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>false</Optimize>
@@ -41,95 +46,110 @@
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.XML" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Xml.Linq" />
+    <Reference Include="mscorlib">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="System">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.dll</HintPath>
+    </Reference>
+    <Reference Include="System.XML">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.XML.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Core">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\Microsoft.CSharp.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Runtime.Serialization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Xml.Linq.dll</HintPath>
+    </Reference>
     <Reference Include="UnityEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Advertisements">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Advertisements.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.UI">
-      <HintPath>Library\UnityAssemblies\UnityEditor.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEditor.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEngine.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework">
-      <HintPath>Library\UnityAssemblies\nunit.framework.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.TreeEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.TreeEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/Editor/UnityEditor.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEditor.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/Editor/UnityEditor.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEngine.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Purchasing">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Purchasing.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityPurchasing/Editor/UnityEditor.Purchasing.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.VR">
-      <HintPath>Library\UnityAssemblies\UnityEditor.VR.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Graphs">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Graphs.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Android.Extensions">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Android.Extensions.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.WindowsStandalone.Extensions">
-      <HintPath>Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="SyntaxTree.VisualStudio.Unity.Bridge">
-      <HintPath>Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>
+      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/15.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
-      <HintPath>Assets\Plugins\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>Assets/Plugins/ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="NPOI">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OOXML">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OOXML.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OOXML.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OpenXml4Net">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OpenXml4Net.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OpenXml4Net.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OpenXmlFormats">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OpenXmlFormats.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OpenXmlFormats.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -137,10 +157,6 @@
       <Project>{D1FDB199-0FB7-099D-3771-C6A942E4E326}</Project>
       <Name>Unity.Plugins</Name>
     </ProjectReference>
-    <ProjectReference Include="Unity.csproj">
-      <Project>{CF118143-7E37-744F-BE45-3F55345FEC40}</Project>
-      <Name>Unity</Name>
-    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Assets\Plugins\Editor\JetBrains\Unity3DRider.cs" />

+ 55 - 35
Unity/Unity.Editor.csproj

@@ -7,7 +7,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{C17F48D3-964E-E97C-3D2E-966F7A6C6D93}</ProjectGuid>
     <OutputType>Library</OutputType>
-    <AssemblyName>Assembly-CSharp-Editor</AssemblyName>
+    <AssemblyName>Assembly-CSharp-Editor.dll</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
@@ -20,6 +20,11 @@
     <RootNamespace></RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>false</Optimize>
@@ -41,95 +46,110 @@
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.XML" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Xml.Linq" />
+    <Reference Include="mscorlib">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="System">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.dll</HintPath>
+    </Reference>
+    <Reference Include="System.XML">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.XML.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Core">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\Microsoft.CSharp.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Runtime.Serialization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Xml.Linq.dll</HintPath>
+    </Reference>
     <Reference Include="UnityEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Advertisements">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Advertisements.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.UI">
-      <HintPath>Library\UnityAssemblies\UnityEditor.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEditor.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEngine.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework">
-      <HintPath>Library\UnityAssemblies\nunit.framework.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.TreeEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.TreeEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/Editor/UnityEditor.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEditor.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/Editor/UnityEditor.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEngine.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Purchasing">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Purchasing.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityPurchasing/Editor/UnityEditor.Purchasing.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.VR">
-      <HintPath>Library\UnityAssemblies\UnityEditor.VR.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Graphs">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Graphs.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Android.Extensions">
-      <HintPath>Library\UnityAssemblies\UnityEditor.Android.Extensions.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.WindowsStandalone.Extensions">
-      <HintPath>Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="SyntaxTree.VisualStudio.Unity.Bridge">
-      <HintPath>Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>
+      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/15.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
-      <HintPath>Assets\Plugins\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>Assets/Plugins/ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="NPOI">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OOXML">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OOXML.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OOXML.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OpenXml4Net">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OpenXml4Net.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OpenXml4Net.dll</HintPath>
     </Reference>
     <Reference Include="NPOI.OpenXmlFormats">
-      <HintPath>Assets\Plugins\Editor\npoi\NPOI.OpenXmlFormats.dll</HintPath>
+      <HintPath>Assets/Plugins/Editor/npoi/NPOI.OpenXmlFormats.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>

+ 37 - 17
Unity/Unity.Plugins.csproj

@@ -7,7 +7,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{D1FDB199-0FB7-099D-3771-C6A942E4E326}</ProjectGuid>
     <OutputType>Library</OutputType>
-    <AssemblyName>Assembly-CSharp-firstpass</AssemblyName>
+    <AssemblyName>Assembly-CSharp-firstpass.dll</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
@@ -20,6 +20,11 @@
     <RootNamespace></RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>false</Optimize>
@@ -41,41 +46,56 @@
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.XML" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Xml.Linq" />
+    <Reference Include="mscorlib">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="System">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.dll</HintPath>
+    </Reference>
+    <Reference Include="System.XML">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.XML.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Core">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\Microsoft.CSharp.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Runtime.Serialization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Xml.Linq.dll</HintPath>
+    </Reference>
     <Reference Include="UnityEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEngine.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework">
-      <HintPath>Library\UnityAssemblies\nunit.framework.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEngine.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
-      <HintPath>Assets\Plugins\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>Assets/Plugins/ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>

+ 37 - 19
Unity/Unity.csproj

@@ -7,7 +7,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{CF118143-7E37-744F-BE45-3F55345FEC40}</ProjectGuid>
     <OutputType>Library</OutputType>
-    <AssemblyName>Assembly-CSharp</AssemblyName>
+    <AssemblyName>Assembly-CSharp.dll</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
@@ -20,6 +20,11 @@
     <RootNamespace></RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>false</Optimize>
@@ -41,41 +46,56 @@
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.XML" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Xml.Linq" />
+    <Reference Include="mscorlib">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="System">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.dll</HintPath>
+    </Reference>
+    <Reference Include="System.XML">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.XML.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Core">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\Microsoft.CSharp.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Runtime.Serialization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <HintPath>C:\Apps\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5\System.Xml.Linq.dll</HintPath>
+    </Reference>
     <Reference Include="UnityEditor">
-      <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Networking">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.TestRunner">
-      <HintPath>Library\UnityAssemblies\UnityEngine.TestRunner.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework">
-      <HintPath>Library\UnityAssemblies\nunit.framework.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Timeline">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Timeline.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.Analytics">
-      <HintPath>Library\UnityAssemblies\UnityEngine.Analytics.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.HoloLens">
-      <HintPath>Library\UnityAssemblies\UnityEngine.HoloLens.dll</HintPath>
+      <HintPath>C:/Apps/Unity/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib">
-      <HintPath>Assets\Plugins\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>Assets/Plugins/ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -144,7 +164,6 @@
     <Compile Include="Assets\Scripts\Base\EQueue.cs" />
     <Compile Include="Assets\Scripts\Base\Event\AEventAttribute.cs" />
     <Compile Include="Assets\Scripts\Base\Event\CrossEventAttribute.cs" />
-    <Compile Include="Assets\Scripts\Base\Event\CrossIdType.cs" />
     <Compile Include="Assets\Scripts\Base\Event\Env.cs" />
     <Compile Include="Assets\Scripts\Base\Event\EnvKey.cs" />
     <Compile Include="Assets\Scripts\Base\Event\EventAttribute.cs" />
@@ -257,7 +276,6 @@
     <Compile Include="Assets\Scripts\Component\Config\StartConfig.cs" />
     <Compile Include="Assets\Scripts\Component\Config\VersionConfig.cs" />
     <Compile Include="Assets\Scripts\Component\ConfigComponent.cs" />
-    <Compile Include="Assets\Scripts\Component\CrossComponent.cs" />
     <Compile Include="Assets\Scripts\Component\EventComponent.cs" />
     <Compile Include="Assets\Scripts\Component\MessageDispatherComponent.cs" />
     <Compile Include="Assets\Scripts\Component\MoveComponent.cs" />