From 2217e527e10c6851c4919049884a23bfc642832b Mon Sep 17 00:00:00 2001
From: spacehamster <mail.spacehamster@gmail.com>
Date: Wed, 29 Jul 2020 13:02:32 +1000
Subject: [PATCH] Patch Unity files (unity-2018.4.10-mbe)

---
 dnSpy-Unity-mono-v2018.x-V40.sln              | 57 +++++++++++++++++++
 .../bdwgc/include/private/gc_atomic_ops.h     |  2 +-
 unity-2018.4.10-mbe/mono/metadata/icall.c     |  4 ++
 .../mono/mini/debugger-agent.c                | 14 ++++-
 unity-2018.4.10-mbe/mono/mini/dnSpy.c         |  9 +++
 unity-2018.4.10-mbe/mono/mini/mini-runtime.c  |  2 +
 unity-2018.4.10-mbe/msvc/build-init.vcxproj   | 14 ++---
 unity-2018.4.10-mbe/msvc/eglib.vcxproj        | 16 +++---
 unity-2018.4.10-mbe/msvc/genmdesc.vcxproj     | 16 +++---
 unity-2018.4.10-mbe/msvc/libgcbdwgc.vcxproj   | 14 ++---
 .../msvc/libmini-common.targets               |  1 +
 .../msvc/libmono-dynamic.vcxproj              | 40 +++++++------
 12 files changed, 138 insertions(+), 51 deletions(-)
 create mode 100644 unity-2018.4.10-mbe/mono/mini/dnSpy.c

diff --git a/dnSpy-Unity-mono-v2018.x-V40.sln b/dnSpy-Unity-mono-v2018.x-V40.sln
index 5b191fe5e..48a272a19 100644
--- a/dnSpy-Unity-mono-v2018.x-V40.sln
+++ b/dnSpy-Unity-mono-v2018.x-V40.sln
@@ -656,6 +656,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgcbdwgc", "unity-2018.4.
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono-dynamic", "unity-2018.4.15-mbe\msvc\libmono-dynamic.vcxproj", "{8AE21279-882C-4D10-B791-51405E984627}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unity-2018.4.10-mbe", "unity-2018.4.10-mbe", "{0487A77E-F915-4145-BE5D-41FDFAF68A1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build-init", "unity-2018.4.10-mbe\msvc\build-init.vcxproj", "{9B97985A-1FBC-4735-9245-D3D1F1428D67}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "unity-2018.4.10-mbe\msvc\eglib.vcxproj", "{3631A046-BF52-4E70-8669-23BBBE08EA13}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "unity-2018.4.10-mbe\msvc\genmdesc.vcxproj", "{02E9B64E-A89C-4918-885C-9A9EFC131733}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgcbdwgc", "unity-2018.4.10-mbe\msvc\libgcbdwgc.vcxproj", "{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono-dynamic", "unity-2018.4.10-mbe\msvc\libmono-dynamic.vcxproj", "{115C296C-EAB2-4304-A6C2-9D85611E1254}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x64 = Debug|x64
@@ -2824,6 +2836,46 @@ Global
 		{8AE21279-882C-4D10-B791-51405E984627}.Release|x64.Build.0 = Release|x64
 		{8AE21279-882C-4D10-B791-51405E984627}.Release|x86.ActiveCfg = Release|Win32
 		{8AE21279-882C-4D10-B791-51405E984627}.Release|x86.Build.0 = Release|Win32
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Debug|x64.ActiveCfg = Debug|x64
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Debug|x64.Build.0 = Debug|x64
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Debug|x86.ActiveCfg = Debug|Win32
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Debug|x86.Build.0 = Debug|Win32
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Release|x64.ActiveCfg = Release|x64
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Release|x64.Build.0 = Release|x64
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Release|x86.ActiveCfg = Release|Win32
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67}.Release|x86.Build.0 = Release|Win32
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Debug|x64.ActiveCfg = Debug|x64
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Debug|x64.Build.0 = Debug|x64
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Debug|x86.ActiveCfg = Debug|Win32
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Debug|x86.Build.0 = Debug|Win32
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Release|x64.ActiveCfg = Release|x64
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Release|x64.Build.0 = Release|x64
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Release|x86.ActiveCfg = Release|Win32
+		{3631A046-BF52-4E70-8669-23BBBE08EA13}.Release|x86.Build.0 = Release|Win32
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Debug|x64.ActiveCfg = Debug|x64
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Debug|x64.Build.0 = Debug|x64
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Debug|x86.ActiveCfg = Debug|Win32
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Debug|x86.Build.0 = Debug|Win32
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Release|x64.ActiveCfg = Release|x64
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Release|x64.Build.0 = Release|x64
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Release|x86.ActiveCfg = Release|Win32
+		{02E9B64E-A89C-4918-885C-9A9EFC131733}.Release|x86.Build.0 = Release|Win32
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Debug|x64.ActiveCfg = Debug|x64
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Debug|x64.Build.0 = Debug|x64
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Debug|x86.ActiveCfg = Debug|Win32
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Debug|x86.Build.0 = Debug|Win32
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Release|x64.ActiveCfg = Release|x64
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Release|x64.Build.0 = Release|x64
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Release|x86.ActiveCfg = Release|Win32
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}.Release|x86.Build.0 = Release|Win32
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Debug|x64.ActiveCfg = Debug|x64
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Debug|x64.Build.0 = Debug|x64
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Debug|x86.ActiveCfg = Debug|Win32
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Debug|x86.Build.0 = Debug|Win32
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Release|x64.ActiveCfg = Release|x64
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Release|x64.Build.0 = Release|x64
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Release|x86.ActiveCfg = Release|Win32
+		{115C296C-EAB2-4304-A6C2-9D85611E1254}.Release|x86.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -3099,6 +3151,11 @@ Global
 		{1E3DDA1B-24F4-45E9-BD51-1616CDD914AC} = {E0F6A2C8-A6DD-4229-8105-A5272F14572B}
 		{A77AB87A-C2DD-47D1-9F6B-FE4A8664CE21} = {E0F6A2C8-A6DD-4229-8105-A5272F14572B}
 		{8AE21279-882C-4D10-B791-51405E984627} = {E0F6A2C8-A6DD-4229-8105-A5272F14572B}
+		{9B97985A-1FBC-4735-9245-D3D1F1428D67} = {0487A77E-F915-4145-BE5D-41FDFAF68A1E}
+		{3631A046-BF52-4E70-8669-23BBBE08EA13} = {0487A77E-F915-4145-BE5D-41FDFAF68A1E}
+		{02E9B64E-A89C-4918-885C-9A9EFC131733} = {0487A77E-F915-4145-BE5D-41FDFAF68A1E}
+		{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62} = {0487A77E-F915-4145-BE5D-41FDFAF68A1E}
+		{115C296C-EAB2-4304-A6C2-9D85611E1254} = {0487A77E-F915-4145-BE5D-41FDFAF68A1E}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {8FF3AFA1-AF3B-4A69-8F7D-B6E6EADAD5CE}
diff --git a/unity-2018.4.10-mbe/external/bdwgc/include/private/gc_atomic_ops.h b/unity-2018.4.10-mbe/external/bdwgc/include/private/gc_atomic_ops.h
index 060b8f5bc..4eb4e1a8c 100644
--- a/unity-2018.4.10-mbe/external/bdwgc/include/private/gc_atomic_ops.h
+++ b/unity-2018.4.10-mbe/external/bdwgc/include/private/gc_atomic_ops.h
@@ -100,7 +100,7 @@
     } /* extern "C" */
 # endif
 
-#elif !defined(NN_PLATFORM_CTR)
+#elif false
   /* Fallback to libatomic_ops. */
 # include "atomic_ops.h"
 
diff --git a/unity-2018.4.10-mbe/mono/metadata/icall.c b/unity-2018.4.10-mbe/mono/metadata/icall.c
index 15353ba40..816c0c9d5 100644
--- a/unity-2018.4.10-mbe/mono/metadata/icall.c
+++ b/unity-2018.4.10-mbe/mono/metadata/icall.c
@@ -7283,9 +7283,13 @@ ves_icall_get_resources_ptr (MonoReflectionAssemblyHandle assembly, gpointer *re
 	return TRUE;
 }
 
+extern gboolean dnSpy_hideDebugger;
+
 ICALL_EXPORT MonoBoolean
 ves_icall_System_Diagnostics_Debugger_IsAttached_internal (void)
 {
+	if (dnSpy_hideDebugger)
+		return 0;
 	return mono_is_debugger_attached ();
 }
 
diff --git a/unity-2018.4.10-mbe/mono/mini/debugger-agent.c b/unity-2018.4.10-mbe/mono/mini/debugger-agent.c
index bf3357de9..9ffd8b3b4 100644
--- a/unity-2018.4.10-mbe/mono/mini/debugger-agent.c
+++ b/unity-2018.4.10-mbe/mono/mini/debugger-agent.c
@@ -1009,6 +1009,7 @@ mono_debugger_agent_parse_options (char *options)
 			agent_config.keepalive = atoi (arg + 10);
 		} else if (strncmp (arg, "setpgid=", 8) == 0) {
 			agent_config.setpgid = parse_flag ("setpgid", arg + 8);
+		} else if (dnSpy_debugger_agent_parse_options (arg)) {
 		} else {
 			print_usage ();
 			exit (1);
@@ -1077,6 +1078,8 @@ mono_debugger_agent_init (void)
 	mono_profiler_set_jit_done_callback (prof, jit_done);
 	mono_profiler_set_jit_failed_callback (prof, jit_failed);
 
+	dnSpy_debugger_init_after_agent ();
+
 	mono_native_tls_alloc (&debugger_tls_id, NULL);
 
 	/* Needed by the hash_table_new_type () call below */
@@ -4518,6 +4521,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 	BreakpointInstance *inst;
 	SeqPointIterator it;
 	gboolean it_has_sp = FALSE;
+	SeqPoint found_sp;
 
 	if (error)
 		error_init (error);
@@ -4526,9 +4530,14 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 	while (mono_seq_point_iterator_next (&it)) {
 		if (it.seq_point.il_offset == bp->il_offset) {
 			it_has_sp = TRUE;
-			break;
+			if (!(it.seq_point.flags & MONO_SEQ_POINT_FLAG_NONEMPTY_STACK)) {
+				found_sp = it.seq_point;
+				break;
+			}
+			found_sp = it.seq_point;
 		}
 	}
+	it.seq_point = found_sp;
 
 	if (!it_has_sp) {
 		/*
@@ -10915,7 +10924,8 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 		mono_loader_lock ();
 		tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
 		mono_loader_unlock ();
-		g_assert (tls);
+		if (!tls)
+			return ERR_INVALID_ARGUMENT;
 
 		compute_frame_info (thread, tls);
 
diff --git a/unity-2018.4.10-mbe/mono/mini/dnSpy.c b/unity-2018.4.10-mbe/mono/mini/dnSpy.c
new file mode 100644
index 000000000..c6f5a2b8d
--- /dev/null
+++ b/unity-2018.4.10-mbe/mono/mini/dnSpy.c
@@ -0,0 +1,9 @@
+#include <mono/metadata/profiler.h>
+#include <mono/metadata/mono-debug.h>
+#include "debugger-agent.h"
+#define DNUNITYRT 1
+typedef void *MonoLegacyProfiler;
+typedef void (*MonoLegacyProfileFunc) (MonoLegacyProfiler *prof);
+MONO_API void mono_profiler_install (MonoLegacyProfiler *prof, MonoLegacyProfileFunc callback);
+#define DEFINED_LEGACY_PROFILER
+#include "../dnSpyFiles/dnSpy.c"
diff --git a/unity-2018.4.10-mbe/mono/mini/mini-runtime.c b/unity-2018.4.10-mbe/mono/mini/mini-runtime.c
index 472787db6..23166d6e9 100644
--- a/unity-2018.4.10-mbe/mono/mini/mini-runtime.c
+++ b/unity-2018.4.10-mbe/mono/mini/mini-runtime.c
@@ -3812,6 +3812,8 @@ mini_init (const char *filename, const char *runtime_version)
 
 	CHECKED_MONO_INIT ();
 
+	dnSpy_debugger_init ();
+
 #if defined(__linux__)
 	if (access ("/proc/self/maps", F_OK) != 0) {
 		g_print ("Mono requires /proc to be mounted.\n");
diff --git a/unity-2018.4.10-mbe/msvc/build-init.vcxproj b/unity-2018.4.10-mbe/msvc/build-init.vcxproj
index e9a8ccb60..accbf27de 100644
--- a/unity-2018.4.10-mbe/msvc/build-init.vcxproj
+++ b/unity-2018.4.10-mbe/msvc/build-init.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -23,34 +23,34 @@
     <ClInclude Include="..\eglib\config.h" />
   </ItemGroup>
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{92AE7622-5F58-4234-9A26-9EC71876B3F4}</ProjectGuid>
+    <ProjectGuid>{9B97985A-1FBC-4735-9245-D3D1F1428D67}</ProjectGuid>
     <RootNamespace>buildinit</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Utility</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Utility</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Utility</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Utility</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
diff --git a/unity-2018.4.10-mbe/msvc/eglib.vcxproj b/unity-2018.4.10-mbe/msvc/eglib.vcxproj
index d630d59af..55f24b633 100644
--- a/unity-2018.4.10-mbe/msvc/eglib.vcxproj
+++ b/unity-2018.4.10-mbe/msvc/eglib.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -19,31 +19,31 @@
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{158073ED-99AE-4196-9EDC-DDB2344F8466}</ProjectGuid>
+    <ProjectGuid>{3631A046-BF52-4E70-8669-23BBBE08EA13}</ProjectGuid>
     <RootNamespace>eglib</RootNamespace>
     <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -149,7 +149,7 @@
   <Import Project="eglib.targets" />
   <ItemGroup>
     <ProjectReference Include="build-init.vcxproj">
-      <Project>{92ae7622-5f58-4234-9a26-9ec71876b3f4}</Project>
+      <Project>{9b97985a-1fbc-4735-9245-d3d1f1428d67}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/unity-2018.4.10-mbe/msvc/genmdesc.vcxproj b/unity-2018.4.10-mbe/msvc/genmdesc.vcxproj
index 1f969a70d..7035aff76 100644
--- a/unity-2018.4.10-mbe/msvc/genmdesc.vcxproj
+++ b/unity-2018.4.10-mbe/msvc/genmdesc.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -19,34 +19,34 @@
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{B7098DFA-31E6-4006-8A15-1C9A4E925149}</ProjectGuid>
+    <ProjectGuid>{02E9B64E-A89C-4918-885C-9A9EFC131733}</ProjectGuid>
     <RootNamespace>genmdesc</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -342,7 +342,7 @@
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Project>{3631a046-bf52-4e70-8669-23bbbe08ea13}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/unity-2018.4.10-mbe/msvc/libgcbdwgc.vcxproj b/unity-2018.4.10-mbe/msvc/libgcbdwgc.vcxproj
index 3d23d95c2..ffd010e0f 100644
--- a/unity-2018.4.10-mbe/msvc/libgcbdwgc.vcxproj
+++ b/unity-2018.4.10-mbe/msvc/libgcbdwgc.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -19,32 +19,32 @@
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{CF169633-14AF-4DB8-BEF9-26A6C8FE4C90}</ProjectGuid>
+    <ProjectGuid>{EF4D1DCD-02C4-40F2-BB47-90E6F34D3F62}</ProjectGuid>
     <RootNamespace>libgcbdwgc</RootNamespace>
     <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
     <ProjectName>libgcbdwgc</ProjectName>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/unity-2018.4.10-mbe/msvc/libmini-common.targets b/unity-2018.4.10-mbe/msvc/libmini-common.targets
index 624b41f0c..a63a8a9f3 100644
--- a/unity-2018.4.10-mbe/msvc/libmini-common.targets
+++ b/unity-2018.4.10-mbe/msvc/libmini-common.targets
@@ -57,6 +57,7 @@
     <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-gc.c" />
     <ClInclude Include="$(MonoSourceLocation)\mono\mini\debugger-agent.h" />
     <ClCompile Include="$(MonoSourceLocation)\mono\mini\debugger-agent.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\dnSpy.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\mini\xdebug.c" />
     <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm.h" />
     <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm-cpp.h" />
diff --git a/unity-2018.4.10-mbe/msvc/libmono-dynamic.vcxproj b/unity-2018.4.10-mbe/msvc/libmono-dynamic.vcxproj
index 6117e05a4..07d3a3511 100644
--- a/unity-2018.4.10-mbe/msvc/libmono-dynamic.vcxproj
+++ b/unity-2018.4.10-mbe/msvc/libmono-dynamic.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -19,34 +19,34 @@
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{675F4175-FFB1-480D-AD36-F397578844D4}</ProjectGuid>
+    <ProjectGuid>{115C296C-EAB2-4304-A6C2-9D85611E1254}</ProjectGuid>
     <RootNamespace>libmono-dynamic</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -74,10 +74,10 @@
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\builds\$(Configuration)\unity-2018.4.10\win$(PlatformArchitecture)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\builds\$(Configuration)\unity-2018.4.10\win$(PlatformArchitecture)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\builds\$(Configuration)\unity-2018.4.10\win$(PlatformArchitecture)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\builds\$(Configuration)\unity-2018.4.10\win$(PlatformArchitecture)\</OutDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>
@@ -129,7 +129,7 @@
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
     <PostBuildEvent>
-      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(MSBuildProjectDirectory)\include\mono" -q</Command>
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -167,7 +167,7 @@
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
     </Link>
     <PostBuildEvent>
-      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(MSBuildProjectDirectory)\include\mono" -q</Command>
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -185,6 +185,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <TreatSpecificWarningsAsErrors>4716</TreatSpecificWarningsAsErrors>
+      <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -199,9 +200,10 @@
       <DataExecutionPrevention>
       </DataExecutionPrevention>
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
     </Link>
     <PostBuildEvent>
-      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(MSBuildProjectDirectory)\include\mono" -q</Command>
     </PostBuildEvent>
     <ProjectReference>
       <LinkLibraryDependencies>false</LinkLibraryDependencies>
@@ -225,6 +227,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <TreatSpecificWarningsAsErrors>4716</TreatSpecificWarningsAsErrors>
+      <DebugInformationFormat>None</DebugInformationFormat>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -237,9 +240,10 @@
       <ModuleDefinitionFile>
       </ModuleDefinitionFile>
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
     </Link>
     <PostBuildEvent>
-      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(MSBuildProjectDirectory)\include\mono" -q</Command>
     </PostBuildEvent>
     <ProjectReference>
       <LinkLibraryDependencies>false</LinkLibraryDependencies>
@@ -247,10 +251,10 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ProjectReference Include="genmdesc.vcxproj">
-      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>
+      <Project>{02e9b64e-a89c-4918-885c-9a9efc131733}</Project>
     </ProjectReference>
-    <ProjectReference Include="libgc.vcxproj">
-      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
+    <ProjectReference Include="libgcbdwgc.vcxproj">
+      <Project>{ef4d1dcd-02c4-40f2-bb47-90e6f34d3f62}</Project>
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>