[REEF-1800] Migrate all tang projects to VS2017
Summary of changes:
* Migrates remaining tang projects to VS2017 csproj format
* Migrates all dependency projects (such as common, network and
driver)
JIRA:
[REEF-1800](https://issues.apache.org/jira/browse/REEF-1800)
Pull request
This closes #1308
diff --git a/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.DotNet.csproj b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.DotNet.csproj
new file mode 100644
index 0000000..446544b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.DotNet.csproj
@@ -0,0 +1,44 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Common</AssemblyName>
+ <Description>Reef Common Infrastructure</Description>
+ <PackageTags>Reef Common Infrastructure</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
+ <PackageReference Include="protobuf-net" Version="$(ProtobufVersion)" />
+ <PackageReference Include="Microsoft.Hadoop.Avro" Version="$(AvroVersion)" />
+ <PackageReference Include="System.Reactive.Core" Version="$(RxVersion)" />
+ <PackageReference Include="System.Reactive.Interfaces" Version="$(RxVersion)" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.Reef.Utilities.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Common/Properties/AssemblyInfo.DotNet.cs b/lang/cs/Org.Apache.REEF.Common/Properties/AssemblyInfo.DotNet.cs
new file mode 100644
index 0000000..bf01667
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/Properties/AssemblyInfo.DotNet.cs
@@ -0,0 +1,37 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Runtime.CompilerServices;
+
+
+// Common and Evaluator share APIs that should not be exposed to the user
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Evaluator")]
+
+// Common and Driver share APIs that should not be exposed to the user
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Driver")]
+
+// Common and IO share APIs that should not be exposed to the user
+[assembly: InternalsVisibleTo("Org.Apache.REEF.IO")]
+
+// Allow the tests access to `internal` APIs
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Common.Tests")]
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Tests")]
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Evaluator.Tests")]
+
+// Allow NSubstitute to create proxy implementations
+[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
+
diff --git a/lang/cs/Org.Apache.REEF.DotNet.sln b/lang/cs/Org.Apache.REEF.DotNet.sln
index 87f190f..06ee4ec 100644
--- a/lang/cs/Org.Apache.REEF.DotNet.sln
+++ b/lang/cs/Org.Apache.REEF.DotNet.sln
@@ -11,6 +11,22 @@
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Wake.Tests.DotNet", "Org.Apache.REEF.Wake.Tests\Org.Apache.REEF.Wake.Tests.DotNet.csproj", "{1E2B189D-239E-419F-BA09-2A3B28EF98EB}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Common.DotNet", "Org.Apache.REEF.Common\Org.Apache.REEF.Common.DotNet.csproj", "{F92D4129-C094-458D-8DFE-B1454A62DA0F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Examples.DotNet", "Org.Apache.REEF.Examples\Org.Apache.REEF.Examples.DotNet.csproj", "{4C617764-FD55-4915-BACA-29D88A6B7C55}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Network.DotNet", "Org.Apache.REEF.Network\Org.Apache.REEF.Network.DotNet.csproj", "{E1CB058B-DFAC-48CB-818E-4790D2C1701F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Network.Examples.DotNet", "Org.Apache.REEF.Network.Examples\Org.Apache.REEF.Network.Examples.DotNet.csproj", "{8DF28709-0405-4EF9-A525-19D177032073}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Network.Tests.DotNet", "Org.Apache.REEF.Network.Tests\Org.Apache.REEF.Network.Tests.DotNet.csproj", "{C61EDCD2-36AB-4F46-8886-40E6BDE05FAC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Tang.Examples.DotNet", "Org.Apache.REEF.Tang.Examples\Org.Apache.REEF.Tang.Examples.DotNet.csproj", "{421744DE-5FB7-4694-98A7-00E4248A8B8C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Tang.Tests.DotNet", "Org.Apache.REEF.Tang.Tests\Org.Apache.REEF.Tang.Tests.DotNet.csproj", "{6AB95745-BE93-4BF0-B3D3-C99EAB716F6B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Org.Apache.REEF.Tang.Tools.DotNet", "Org.Apache.REEF.Tang.Tools\Org.Apache.REEF.Tang.Tools.DotNet.csproj", "{558927C3-045B-405D-A978-9E89D50BB51A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -33,6 +49,38 @@
{1E2B189D-239E-419F-BA09-2A3B28EF98EB}.Debug|x64.Build.0 = Debug|x64
{1E2B189D-239E-419F-BA09-2A3B28EF98EB}.Release|x64.ActiveCfg = Release|x64
{1E2B189D-239E-419F-BA09-2A3B28EF98EB}.Release|x64.Build.0 = Release|x64
+ {F92D4129-C094-458D-8DFE-B1454A62DA0F}.Debug|x64.ActiveCfg = Debug|x64
+ {F92D4129-C094-458D-8DFE-B1454A62DA0F}.Debug|x64.Build.0 = Debug|x64
+ {F92D4129-C094-458D-8DFE-B1454A62DA0F}.Release|x64.ActiveCfg = Release|x64
+ {F92D4129-C094-458D-8DFE-B1454A62DA0F}.Release|x64.Build.0 = Release|x64
+ {4C617764-FD55-4915-BACA-29D88A6B7C55}.Debug|x64.ActiveCfg = Debug|x64
+ {4C617764-FD55-4915-BACA-29D88A6B7C55}.Debug|x64.Build.0 = Debug|x64
+ {4C617764-FD55-4915-BACA-29D88A6B7C55}.Release|x64.ActiveCfg = Release|x64
+ {4C617764-FD55-4915-BACA-29D88A6B7C55}.Release|x64.Build.0 = Release|x64
+ {E1CB058B-DFAC-48CB-818E-4790D2C1701F}.Debug|x64.ActiveCfg = Debug|x64
+ {E1CB058B-DFAC-48CB-818E-4790D2C1701F}.Debug|x64.Build.0 = Debug|x64
+ {E1CB058B-DFAC-48CB-818E-4790D2C1701F}.Release|x64.ActiveCfg = Release|x64
+ {E1CB058B-DFAC-48CB-818E-4790D2C1701F}.Release|x64.Build.0 = Release|x64
+ {8DF28709-0405-4EF9-A525-19D177032073}.Debug|x64.ActiveCfg = Debug|x64
+ {8DF28709-0405-4EF9-A525-19D177032073}.Debug|x64.Build.0 = Debug|x64
+ {8DF28709-0405-4EF9-A525-19D177032073}.Release|x64.ActiveCfg = Release|x64
+ {8DF28709-0405-4EF9-A525-19D177032073}.Release|x64.Build.0 = Release|x64
+ {C61EDCD2-36AB-4F46-8886-40E6BDE05FAC}.Debug|x64.ActiveCfg = Debug|x64
+ {C61EDCD2-36AB-4F46-8886-40E6BDE05FAC}.Debug|x64.Build.0 = Debug|x64
+ {C61EDCD2-36AB-4F46-8886-40E6BDE05FAC}.Release|x64.ActiveCfg = Release|x64
+ {C61EDCD2-36AB-4F46-8886-40E6BDE05FAC}.Release|x64.Build.0 = Release|x64
+ {421744DE-5FB7-4694-98A7-00E4248A8B8C}.Debug|x64.ActiveCfg = Debug|x64
+ {421744DE-5FB7-4694-98A7-00E4248A8B8C}.Debug|x64.Build.0 = Debug|x64
+ {421744DE-5FB7-4694-98A7-00E4248A8B8C}.Release|x64.ActiveCfg = Release|x64
+ {421744DE-5FB7-4694-98A7-00E4248A8B8C}.Release|x64.Build.0 = Release|x64
+ {6AB95745-BE93-4BF0-B3D3-C99EAB716F6B}.Debug|x64.ActiveCfg = Debug|x64
+ {6AB95745-BE93-4BF0-B3D3-C99EAB716F6B}.Debug|x64.Build.0 = Debug|x64
+ {6AB95745-BE93-4BF0-B3D3-C99EAB716F6B}.Release|x64.ActiveCfg = Release|x64
+ {6AB95745-BE93-4BF0-B3D3-C99EAB716F6B}.Release|x64.Build.0 = Release|x64
+ {558927C3-045B-405D-A978-9E89D50BB51A}.Debug|x64.ActiveCfg = Debug|x64
+ {558927C3-045B-405D-A978-9E89D50BB51A}.Debug|x64.Build.0 = Debug|x64
+ {558927C3-045B-405D-A978-9E89D50BB51A}.Release|x64.ActiveCfg = Release|x64
+ {558927C3-045B-405D-A978-9E89D50BB51A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.DotNet.csproj b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.DotNet.csproj
new file mode 100644
index 0000000..375c8de
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.DotNet.csproj
@@ -0,0 +1,41 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Driver</AssemblyName>
+ <Description>Driver for REEF.NET</Description>
+ <PackageTags>Reef Driver</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="protobuf-net" Version="$(ProtobufVersion)" />
+ <PackageReference Include="Microsoft.Hadoop.Avro" Version="$(AvroVersion)" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.Reef.Utilities.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Driver/Properties/AssemblyInfo.DotNet.cs b/lang/cs/Org.Apache.REEF.Driver/Properties/AssemblyInfo.DotNet.cs
new file mode 100644
index 0000000..e7b4768
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Properties/AssemblyInfo.DotNet.cs
@@ -0,0 +1,22 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Runtime.CompilerServices;
+
+// Allow the bridge access to `internal` APIs
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Bridge")]
+
diff --git a/lang/cs/Org.Apache.REEF.Examples/Org.Apache.REEF.Examples.DotNet.csproj b/lang/cs/Org.Apache.REEF.Examples/Org.Apache.REEF.Examples.DotNet.csproj
new file mode 100644
index 0000000..de6e8a4
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples/Org.Apache.REEF.Examples.DotNet.csproj
@@ -0,0 +1,43 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Examples</AssemblyName>
+ <Description>Reef Examples</Description>
+ <PackageTags>Reef Examples</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
+ <PackageReference Include="Microsoft.Hadoop.Avro" Version="$(AvroVersion)" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.Reef.Utilities.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Driver\Org.Apache.Reef.Driver.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Network\Org.Apache.Reef.Network.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Network.Examples/Org.Apache.REEF.Network.Examples.DotNet.csproj b/lang/cs/Org.Apache.REEF.Network.Examples/Org.Apache.REEF.Network.Examples.DotNet.csproj
new file mode 100644
index 0000000..b87db4c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Network.Examples/Org.Apache.REEF.Network.Examples.DotNet.csproj
@@ -0,0 +1,45 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Network.Examples</AssemblyName>
+ <Description>Examples for network services for reef</Description>
+ <PackageTags>Reef Network services examples</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Driver\Org.Apache.Reef.Driver.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Network\Org.Apache.Reef.Network.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.Reef.Utilities.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Network.Tests/Org.Apache.REEF.Network.Tests.DotNet.csproj b/lang/cs/Org.Apache.REEF.Network.Tests/Org.Apache.REEF.Network.Tests.DotNet.csproj
new file mode 100644
index 0000000..904957d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Network.Tests/Org.Apache.REEF.Network.Tests.DotNet.csproj
@@ -0,0 +1,37 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Network.Tests</AssemblyName>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="System.Reactive.Core" Version="$(RxVersion)" />
+ <PackageReference Include="System.Reactive.Interfaces" Version="$(RxVersion)" />
+ <Reference Include="System" />
+ </ItemGroup>
+ <Import Project="..\xunit.DotNet.props" />
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Examples\Org.Apache.Reef.Examples.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Network.Examples\Org.Apache.Reef.Network.Examples.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Network\Org.Apache.Reef.Network.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
diff --git a/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.DotNet.csproj b/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.DotNet.csproj
new file mode 100644
index 0000000..a25cf7e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.DotNet.csproj
@@ -0,0 +1,46 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Network</AssemblyName>
+ <Description>Network services for reef</Description>
+ <PackageTags>Reef Network services</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="protobuf-net" Version="$(ProtobufVersion)" />
+ <PackageReference Include="Microsoft.Hadoop.Avro" Version="$(AvroVersion)" />
+ <PackageReference Include="System.Reactive.Core" Version="$(RxVersion)" />
+ <PackageReference Include="System.Reactive.Interfaces" Version="$(RxVersion)" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Caching" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.Reef.Utilities.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Driver\Org.Apache.Reef.Driver.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Network/Properties/AssemblyInfo.DotNet.cs b/lang/cs/Org.Apache.REEF.Network/Properties/AssemblyInfo.DotNet.cs
new file mode 100644
index 0000000..0c60ea4
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Network/Properties/AssemblyInfo.DotNet.cs
@@ -0,0 +1,22 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Runtime.CompilerServices;
+
+// Allow the tests access to `internal` APIs
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Network.Tests")]
+
diff --git a/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.DotNet.csproj b/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.DotNet.csproj
new file mode 100644
index 0000000..f6d653d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.DotNet.csproj
@@ -0,0 +1,35 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Tang.Examples</AssemblyName>
+ <Description>Examples using the Tang framework</Description>
+ <PackageTags> Apache REEF tang dependency injection examples</PackageTags>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/Org.Apache.REEF.Tang.Tests.DotNet.csproj b/lang/cs/Org.Apache.REEF.Tang.Tests/Org.Apache.REEF.Tang.Tests.DotNet.csproj
new file mode 100644
index 0000000..bba9f2d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tang.Tests/Org.Apache.REEF.Tang.Tests.DotNet.csproj
@@ -0,0 +1,43 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Tang.Tests</AssemblyName>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
+ <PackageReference Include="protobuf-net" Version="$(ProtobufVersion)" />
+ <PackageReference Include="Microsoft.Hadoop.Avro" Version="$(AvroVersion)" />
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <Import Project="..\xunit.DotNet.props" />
+ <ItemGroup>
+ <None Include="simpleConstructorJavaProto.bin">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.Reef.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Examples\Org.Apache.Reef.Examples.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Tang.Examples\Org.Apache.Reef.Tang.Examples.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.Reef.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.Reef.Wake.DotNet.csproj" />
+ </ItemGroup>
+</Project>
diff --git a/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.DotNet.csproj b/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.DotNet.csproj
new file mode 100644
index 0000000..1ff452f
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.DotNet.csproj
@@ -0,0 +1,32 @@
+<Project Sdk="Microsoft.NET.Sdk">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+ <PropertyGroup>
+ <AssemblyName>Org.Apache.REEF.Tang.Tools</AssemblyName>
+ <Description>Tools for Tang</Description>
+ <PackageTags>Apache REEF Tang dependency injection</PackageTags>
+ <OutputType>Exe</OutputType>
+ <TargetFrameworks>net46;net451</TargetFrameworks>
+ </PropertyGroup>
+ <Import Project="..\build.DotNet.props" />
+ <ItemGroup>
+ <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.REEF.Common.DotNet.csproj" />
+ <ProjectReference Include="..\Org.Apache.REEF.Examples\Org.Apache.REEF.Examples.DotNet.csproj" />
+ </ItemGroup>
+</Project>
+
diff --git a/lang/cs/Org.Apache.REEF.Utilities/Properties/AssemblyInfo.DotNet.cs b/lang/cs/Org.Apache.REEF.Utilities/Properties/AssemblyInfo.DotNet.cs
new file mode 100644
index 0000000..515f238
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Utilities/Properties/AssemblyInfo.DotNet.cs
@@ -0,0 +1,21 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Common")]
+[assembly: InternalsVisibleTo("Org.Apache.REEF.Evaluator")]
+
diff --git a/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.DotNet.csproj b/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.DotNet.csproj
index 8d8ce5f..02588be 100644
--- a/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.DotNet.csproj
+++ b/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.DotNet.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file