diff --git a/TestAssets/TestProjects/TestMicrosoftCSharpReference/Program.cs b/TestAssets/TestProjects/TestMicrosoftCSharpReference/Program.cs
new file mode 100644
index 000000000..9e98f0216
--- /dev/null
+++ b/TestAssets/TestProjects/TestMicrosoftCSharpReference/Program.cs
@@ -0,0 +1,10 @@
+namespace TestMicrosoftCSharpReference
+{
+    public class Program
+    {
+        public static int Main(string[] args)
+        {
+            return 0;
+        }
+    }
+}
\ No newline at end of file
diff --git a/TestAssets/TestProjects/TestMicrosoftCSharpReference/project.json b/TestAssets/TestProjects/TestMicrosoftCSharpReference/project.json
new file mode 100644
index 000000000..c84c8945e
--- /dev/null
+++ b/TestAssets/TestProjects/TestMicrosoftCSharpReference/project.json
@@ -0,0 +1,16 @@
+{
+    "version": "1.0.0",
+    "dependencies": { },
+    "frameworks": {
+        "dnxcore50": {
+            "dependencies": {
+                "NETStandard.Library": "1.0.0-rc2-23811"
+            }
+        },
+        "dnx451": {
+            "dependencies": {
+                "Microsoft.CSharp": "4.0.1-*"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs
index d809b8343..9ac490033 100644
--- a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs
+++ b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs
@@ -44,7 +44,10 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
         {
             // This never returns null
             var targetFrameworkInfo = project.GetTargetFramework(targetFramework);
-            var dependencies = new List<LibraryRange>(targetFrameworkInfo.Dependencies);
+            var dependencies = new List<LibraryRange>(targetFrameworkInfo.Dependencies);            
+
+            // Add all of the project's dependencies
+            dependencies.AddRange(project.Dependencies);
 
             if (targetFramework != null && targetFramework.IsDesktop())
             {
@@ -58,13 +61,13 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
 
                     if (targetFramework.Version >= new Version(4, 0))
                     {
-                        dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
+                        if (!dependencies.Any(dep => string.Equals(dep.Name, "Microsoft.CSharp", StringComparison.OrdinalIgnoreCase)))
+                        {
+                            dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
+                        }
                     }
                 }
             }
-
-            // Add all of the project's dependencies
-            dependencies.AddRange(project.Dependencies);
             
             if (targetLibrary != null)
             {
diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs
index 26e005dcf..5f43f0beb 100644
--- a/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs
+++ b/test/Microsoft.DotNet.ProjectModel.Tests/PackageDependencyProviderTests.cs
@@ -1,14 +1,15 @@
-using System;
-using System.IO;
+using System.Linq;
 using Microsoft.DotNet.ProjectModel.Graph;
 using Microsoft.DotNet.ProjectModel.Resolution;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
 using NuGet.Frameworks;
 using NuGet.Versioning;
 using Xunit;
 
 namespace Microsoft.DotNet.ProjectModel.Tests
 {
-    public class PackageDependencyProviderTests
+    public class PackageDependencyProviderTests : TestBase
     {
         [Fact]
         public void GetDescriptionShouldNotModifyTarget()
@@ -36,9 +37,23 @@ namespace Microsoft.DotNet.ProjectModel.Tests
 
             Assert.Empty(p1.CompileTimeAssemblies);
             Assert.Empty(p1.RuntimeAssemblies);
-            
+
             Assert.Empty(p2.CompileTimeAssemblies);
             Assert.Empty(p2.RuntimeAssemblies);
         }
+
+        [Fact]
+        public void SingleMicrosoftCSharpReference()
+        {
+            // https://github.com/dotnet/cli/issues/1602
+            var instance = TestAssetsManager.CreateTestInstance("TestMicrosoftCSharpReference")
+                                            .WithLockFiles();
+
+            var context = new ProjectContextBuilder().WithProjectDirectory(instance.TestRoot)
+                                                     .WithTargetFramework("dnx451")
+                                                     .Build();
+
+            Assert.Equal(4, context.RootProject.Dependencies.Count());
+        }
     }
 }