diff --git a/src/System.Memory/src/Configurations.props b/src/System.Memory/src/Configurations.props
index 0e50b7d232cf..dbb4f7264cc1 100644
--- a/src/System.Memory/src/Configurations.props
+++ b/src/System.Memory/src/Configurations.props
@@ -2,9 +2,10 @@
- netstandard1.0-Windows_NT;
- netstandard-Windows_NT;
+ netstandard1.0;
+ netstandard;
netcoreapp-Windows_NT;
+ netcoreapp-Unix;
uap-Windows_NT;
diff --git a/src/System.Memory/src/System.Memory.csproj b/src/System.Memory/src/System.Memory.csproj
index 74c329c4e9c5..4ff412887ec3 100644
--- a/src/System.Memory/src/System.Memory.csproj
+++ b/src/System.Memory/src/System.Memory.csproj
@@ -8,12 +8,14 @@
$(OutputPath)$(MSBuildProjectName).xml
true
+
+
-
-
-
-
+
+
+
+
@@ -31,14 +33,15 @@
-
+
+
-
+
diff --git a/src/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.sln b/src/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.sln
index ecd573ee3597..04f4b6bdcde1 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.sln
+++ b/src/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.sln
@@ -8,11 +8,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.CompilerServ
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.CompilerServices.Unsafe", "src\System.Runtime.CompilerServices.Unsafe.ilproj", "{04BA3E3C-6979-4792-B19E-C797AD607F42}"
+ ProjectSection(ProjectDependencies) = postProject
+ {649A377C-1E07-4105-B01F-7F1044D3356C} = {649A377C-1E07-4105-B01F-7F1044D3356C}
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.CompilerServices.Unsafe", "ref\System.Runtime.CompilerServices.Unsafe.csproj", "{649A377C-1E07-4105-B01F-7F1044D3356C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1A2F9F4A-A032-433E-B914-ADD5992BB178}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E107E9C1-E893-4E87-987E-04EF0DCEAEFD}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{2E666815-2EDB-464B-9DF6-380BF4789AD4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -23,10 +30,14 @@ Global
{8012DD70-A6D7-45C0-BC8E-DFFB48D86E08}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{8012DD70-A6D7-45C0-BC8E-DFFB48D86E08}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{8012DD70-A6D7-45C0-BC8E-DFFB48D86E08}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
- {04BA3E3C-6979-4792-B19E-C797AD607F42}.Debug|Any CPU.ActiveCfg = netstandard1.0-Windows_NT-Debug|Any CPU
- {04BA3E3C-6979-4792-B19E-C797AD607F42}.Debug|Any CPU.Build.0 = netstandard1.0-Windows_NT-Debug|Any CPU
- {04BA3E3C-6979-4792-B19E-C797AD607F42}.Release|Any CPU.ActiveCfg = netstandard1.0-Windows_NT-Release|Any CPU
- {04BA3E3C-6979-4792-B19E-C797AD607F42}.Release|Any CPU.Build.0 = netstandard1.0-Windows_NT-Release|Any CPU
+ {04BA3E3C-6979-4792-B19E-C797AD607F42}.Debug|Any CPU.ActiveCfg = netstandard-Windows_NT-Debug|Any CPU
+ {04BA3E3C-6979-4792-B19E-C797AD607F42}.Debug|Any CPU.Build.0 = netstandard-Windows_NT-Debug|Any CPU
+ {04BA3E3C-6979-4792-B19E-C797AD607F42}.Release|Any CPU.ActiveCfg = netstandard-Windows_NT-Release|Any CPU
+ {04BA3E3C-6979-4792-B19E-C797AD607F42}.Release|Any CPU.Build.0 = netstandard-Windows_NT-Release|Any CPU
+ {649A377C-1E07-4105-B01F-7F1044D3356C}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU
+ {649A377C-1E07-4105-B01F-7F1044D3356C}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU
+ {649A377C-1E07-4105-B01F-7F1044D3356C}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU
+ {649A377C-1E07-4105-B01F-7F1044D3356C}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -34,5 +45,6 @@ Global
GlobalSection(NestedProjects) = preSolution
{8012DD70-A6D7-45C0-BC8E-DFFB48D86E08} = {1A2F9F4A-A032-433E-B914-ADD5992BB178}
{04BA3E3C-6979-4792-B19E-C797AD607F42} = {E107E9C1-E893-4E87-987E-04EF0DCEAEFD}
+ {649A377C-1E07-4105-B01F-7F1044D3356C} = {2E666815-2EDB-464B-9DF6-380BF4789AD4}
EndGlobalSection
EndGlobal
diff --git a/src/System.Runtime.CompilerServices.Unsafe/pkg/System.Runtime.CompilerServices.Unsafe.pkgproj b/src/System.Runtime.CompilerServices.Unsafe/pkg/System.Runtime.CompilerServices.Unsafe.pkgproj
index b6659d64b02c..d73c618a40f4 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/pkg/System.Runtime.CompilerServices.Unsafe.pkgproj
+++ b/src/System.Runtime.CompilerServices.Unsafe/pkg/System.Runtime.CompilerServices.Unsafe.pkgproj
@@ -3,9 +3,10 @@
-
+
net45;netcore45;wp8;wpa81;netcoreapp1.0;$(AllXamarinFrameworks)
+
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/ref/Configurations.props b/src/System.Runtime.CompilerServices.Unsafe/ref/Configurations.props
new file mode 100644
index 000000000000..84da57e60d75
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Unsafe/ref/Configurations.props
@@ -0,0 +1,9 @@
+
+
+
+
+ netstandard1.0;
+ netstandard;
+
+
+
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.cs b/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.cs
new file mode 100644
index 000000000000..f1b70158e21c
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.cs
@@ -0,0 +1,38 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+// ------------------------------------------------------------------------------
+// Changes to this file must follow the http://aka.ms/api-review process.
+// ------------------------------------------------------------------------------
+
+namespace System.Runtime.CompilerServices
+{
+ public static partial class Unsafe
+ {
+ public static ref T AddByteOffset(ref T source, System.IntPtr byteOffset) { throw null; }
+ public static ref T Add(ref T source, int elementOffset) { throw null; }
+ public static ref T Add(ref T source, System.IntPtr elementOffset) { throw null; }
+ public static bool AreSame(ref T left, ref T right) { throw null; }
+ public unsafe static void* AsPointer(ref T value) { throw null; }
+ public unsafe static ref T AsRef(void* source) { throw null; }
+ public static T As(object o) where T : class { throw null; }
+ public static ref TTo As(ref TFrom source) { throw null; }
+ public static System.IntPtr ByteOffset(ref T origin, ref T target) { throw null; }
+ public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) { }
+ public unsafe static void CopyBlock(void* destination, void* source, uint byteCount) { }
+ public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount) { }
+ public unsafe static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) { }
+ public unsafe static void Copy(void* destination, ref T source) { }
+ public unsafe static void Copy(ref T destination, void* source) { }
+ public static void InitBlock(ref byte startAddress, byte value, uint byteCount) { }
+ public unsafe static void InitBlock(void* startAddress, byte value, uint byteCount) { }
+ public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount) { }
+ public unsafe static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) { }
+ public unsafe static T Read(void* source) { throw null; }
+ public static int SizeOf() { throw null; }
+ public static ref T SubtractByteOffset(ref T source, System.IntPtr byteOffset) { throw null; }
+ public static ref T Subtract(ref T source, int elementOffset) { throw null; }
+ public static ref T Subtract(ref T source, System.IntPtr elementOffset) { throw null; }
+ public unsafe static void Write(void* destination, T value) { }
+ }
+}
diff --git a/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.csproj b/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.csproj
new file mode 100644
index 000000000000..d8813306c857
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Unsafe/ref/System.Runtime.CompilerServices.Unsafe.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+ true
+ {649A377C-1E07-4105-B01F-7F1044D3356C}
+ false
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/src/Configurations.props b/src/System.Runtime.CompilerServices.Unsafe/src/Configurations.props
index 89e8bae0b147..b27f27df3468 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/src/Configurations.props
+++ b/src/System.Runtime.CompilerServices.Unsafe/src/Configurations.props
@@ -4,6 +4,7 @@
netstandard1.0-Windows_NT;
+ netstandard-Windows_NT;
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il b/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il
index 0eb1aa409191..4ce6df0047f4 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il
+++ b/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il
@@ -1,43 +1,39 @@
-// Metadata version: v4.0.30319
-.assembly extern System.Runtime
-{
- .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
- .ver 4:0:0:0
-}
+#include "coreassembly.h"
+
.assembly System.Runtime.CompilerServices.Unsafe
{
- .custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
- .custom instance void [System.Runtime]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ .custom instance void [CORE_ASSEMBLY]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [CORE_ASSEMBLY]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
// --- The following custom attribute is added automatically, do not uncomment -------
- // .custom instance void [System.Runtime]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [System.Runtime]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
+ // .custom instance void [CORE_ASSEMBLY]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [CORE_ASSEMBLY]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
- .custom instance void [System.Runtime]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 34 2E 30 2E 30 2E 30 00 00 ) // ...4.0.0.0..
- .custom instance void [System.Runtime]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 07 34 2E 30 2E 30 2E 30 00 00 ) // ...4.0.0.0..
- .custom instance void [System.Runtime]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 26 53 79 73 74 65 6D 2E 52 75 6E 74 69 6D // ..&System.Runtim
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 34 2E 30 2E 30 2E 30 00 00 ) // ...4.0.0.0..
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 07 34 2E 30 2E 30 2E 30 00 00 ) // ...4.0.0.0..
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 26 53 79 73 74 65 6D 2E 52 75 6E 74 69 6D // ..&System.Runtim
65 2E 43 6F 6D 70 69 6C 65 72 53 65 72 76 69 63 // e.CompilerServic
65 73 2E 55 6E 73 61 66 65 00 00 ) // es.Unsafe..
- .custom instance void [System.Runtime]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 26 53 79 73 74 65 6D 2E 52 75 6E 74 69 6D // ..&System.Runtim
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 26 53 79 73 74 65 6D 2E 52 75 6E 74 69 6D // ..&System.Runtim
65 2E 43 6F 6D 70 69 6C 65 72 53 65 72 76 69 63 // e.CompilerServic
65 73 2E 55 6E 73 61 66 65 00 00 ) // es.Unsafe..
- .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string, string) = (
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyMetadataAttribute::.ctor(string, string) = (
01 00 15 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b
41 73 73 65 6d 62 6c 79 00 00 00
) // ".NETFrameworkAssembly", ""
- .custom instance void [System.Runtime]System.Reflection.AssemblyMetadataAttribute::.ctor(string, string) = (
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyMetadataAttribute::.ctor(string, string) = (
01 00 0b 53 65 72 76 69 63 65 61 62 6c 65 04 54
72 75 65 00 00
) // "Serviceable", "True"
- .custom instance void [System.Runtime]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2F C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20 // ../.. Microsoft
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2F C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20 // ../.. Microsoft
43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 20 41 6C // Corporation. Al
6C 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 // l rights reserve
64 2E 00 00 ) // d...
- .custom instance void [System.Runtime]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72 // ...Microsoft Cor
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72 // ...Microsoft Cor
70 6F 72 61 74 69 6F 6E 00 00 ) // poration..
- .custom instance void [System.Runtime]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 1A 4D 69 63 72 6F 73 6F 66 74 C2 AE 20 2E // ...Microsoft.. .
+ .custom instance void [CORE_ASSEMBLY]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 1A 4D 69 63 72 6F 73 6F 66 74 C2 AE 20 2E // ...Microsoft.. .
4E 45 54 20 46 72 61 6D 65 77 6F 72 6B 00 00 ) // NET Framework..
- .custom instance void [System.Runtime]System.CLSCompliantAttribute::.ctor(bool) = (
+ .custom instance void [CORE_ASSEMBLY]System.CLSCompliantAttribute::.ctor(bool) = (
01 00 00 00 00
) // false
.hash algorithm 0x00008004
@@ -56,7 +52,7 @@
// =============== CLASS MEMBERS DECLARATION ===================
.class public abstract auto ansi sealed beforefieldinit System.Runtime.CompilerServices.Unsafe
- extends [System.Runtime]System.Object
+ extends [CORE_ASSEMBLY]System.Object
{
.method public hidebysig static !!T Read(void* source) cil managed aggressiveinlining
{
@@ -332,9 +328,9 @@
} // end of class System.Runtime.CompilerServices.Unsafe
.class private auto ansi sealed beforefieldinit System.Runtime.Versioning.NonVersionableAttribute
- extends [System.Runtime]System.Attribute
+ extends [CORE_ASSEMBLY]System.Attribute
{
- .custom instance void [System.Runtime]System.AttributeUsageAttribute::.ctor(valuetype [System.Runtime]System.AttributeTargets) = ( 01 00 6C 00 00 00 02 00 54 02 0D 41 6C 6C 6F 77 // ..l.....T..Allow
+ .custom instance void [CORE_ASSEMBLY]System.AttributeUsageAttribute::.ctor(valuetype [CORE_ASSEMBLY]System.AttributeTargets) = ( 01 00 6C 00 00 00 02 00 54 02 0D 41 6C 6C 6F 77 // ..l.....T..Allow
4D 75 6C 74 69 70 6C 65 00 54 02 09 49 6E 68 65 // Multiple.T..Inhe
72 69 74 65 64 00 ) // rited.
.method public hidebysig specialname rtspecialname
@@ -342,7 +338,7 @@
{
.maxstack 1
ldarg.0
- call instance void [System.Runtime]System.Attribute::.ctor()
+ call instance void [CORE_ASSEMBLY]System.Attribute::.ctor()
ret
} // end of method NonVersionableAttribute::.ctor
diff --git a/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj b/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj
index f81b53e450fe..39874d049d2c 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj
+++ b/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj
@@ -4,11 +4,20 @@
$(MSBuildThisFileDirectory)System.Runtime.CompilerServices.Unsafe.xml
{04BA3E3C-6979-4792-B19E-C797AD607F42}
+ $(IlasmFlags) /INCLUDE=include\$(TargetGroup)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard/coreassembly.h b/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard/coreassembly.h
new file mode 100644
index 000000000000..efcc029381d1
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard/coreassembly.h
@@ -0,0 +1,20 @@
+#define CORE_ASSEMBLY "System.Runtime"
+
+// Metadata version: v4.0.30319
+.assembly extern CORE_ASSEMBLY
+{
+ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
+ .ver 4:0:0:0
+}
+
+/* ILasm currently complains when seeing a [netstandard]System.Object
+ temporarily reference System.Runtime until we can get a fix in ilasm.
+#define CORE_ASSEMBLY "netstandard"
+
+// Metadata version: v4.0.30319
+.assembly extern CORE_ASSEMBLY
+{
+ .publickeytoken = (CC 7B 13 FF CD 2D DD 51 ) // .{...-.Q
+ .ver 2:0:0:0
+}
+*/
\ No newline at end of file
diff --git a/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard1.0/coreassembly.h b/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard1.0/coreassembly.h
new file mode 100644
index 000000000000..cee9c905b7ef
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Unsafe/src/include/netstandard1.0/coreassembly.h
@@ -0,0 +1,8 @@
+#define CORE_ASSEMBLY "System.Runtime"
+
+// Metadata version: v4.0.30319
+.assembly extern CORE_ASSEMBLY
+{
+ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
+ .ver 4:0:0:0
+}
\ No newline at end of file