diff --git a/src/Build/Construction/Solution/SolutionProjectGenerator.cs b/src/Build/Construction/Solution/SolutionProjectGenerator.cs index e51789bbb38..fa2fc0da6c2 100644 --- a/src/Build/Construction/Solution/SolutionProjectGenerator.cs +++ b/src/Build/Construction/Solution/SolutionProjectGenerator.cs @@ -416,6 +416,9 @@ private static void AddTasksToCopyAllDependenciesIntoBinDir( string conditionDescribingValidConfigurations) { string copyLocalFilesItemName = referenceItemName + "_CopyLocalFiles"; + string resolvedDependenciesFilesItemName = referenceItemName + "_ResolvedDependencyFiles"; + string allDependentFilesItemName = referenceItemName + "_AllDependentFiles"; + string dependsOnNetstandardParameterName = referenceItemName + "_DependsOnNETStandard"; string targetFrameworkDirectoriesName = GenerateSafePropertyName(project, "_TargetFrameworkDirectories"); string fullFrameworkRefAssyPathName = GenerateSafePropertyName(project, "_FullFrameworkReferenceAssemblyPaths"); string destinationFolder = String.Format(CultureInfo.InvariantCulture, @"$({0})\Bin\", GenerateSafePropertyName(project, "AspNetPhysicalPath")); @@ -452,14 +455,25 @@ private static void AddTasksToCopyAllDependenciesIntoBinDir( rarTask.SetParameter("FindRelatedFiles", "true"); rarTask.SetParameter("TargetFrameworkMoniker", project.TargetFrameworkMoniker); rarTask.AddOutputItem("CopyLocalFiles", copyLocalFilesItemName, null); + rarTask.AddOutputItem("ResolvedDependencyFiles", resolvedDependenciesFilesItemName, null); + rarTask.AddOutputItem("DependsOnNETStandard", dependsOnNetstandardParameterName, null); - // Copy all the copy-local files (reported by RAR) to the web project's "bin" + // Merge copy-local files and resolved dependency files (reported by RAR) together + ProjectTaskInstance mergeCopyLocalToAllDependenciesTask = target.AddTask("CreateItem", null, null); + mergeCopyLocalToAllDependenciesTask.SetParameter("Include", "@(" + copyLocalFilesItemName + ")"); + mergeCopyLocalToAllDependenciesTask.AddOutputItem("Include", allDependentFilesItemName, null); + + ProjectTaskInstance mergeResolvedDependencyFilesToAllDependenciesTask = target.AddTask("CreateItem", "'$("+ dependsOnNetstandardParameterName+")' == 'True'", null); + mergeResolvedDependencyFilesToAllDependenciesTask.SetParameter("Include", "@(" + resolvedDependenciesFilesItemName + ")"); + mergeResolvedDependencyFilesToAllDependenciesTask.AddOutputItem("Include", allDependentFilesItemName, null); + + // Copy dependencies to the web project's "bin" // directory. ProjectTaskInstance copyTask = target.AddTask("Copy", conditionDescribingValidConfigurations, null); - copyTask.SetParameter("SourceFiles", "@(" + copyLocalFilesItemName + ")"); + copyTask.SetParameter("SourceFiles", "@(" + allDependentFilesItemName + ")"); copyTask.SetParameter( "DestinationFiles", - String.Format(CultureInfo.InvariantCulture, @"@({0}->'{1}%(DestinationSubDirectory)%(Filename)%(Extension)')", copyLocalFilesItemName, destinationFolder)); + String.Format(CultureInfo.InvariantCulture, @"@({0}->'{1}%(DestinationSubDirectory)%(Filename)%(Extension)')", allDependentFilesItemName, destinationFolder)); } /// diff --git a/src/Tasks/AssemblyDependency/ReferenceTable.cs b/src/Tasks/AssemblyDependency/ReferenceTable.cs index ea9ccab8e6c..682dc672581 100644 --- a/src/Tasks/AssemblyDependency/ReferenceTable.cs +++ b/src/Tasks/AssemblyDependency/ReferenceTable.cs @@ -341,7 +341,7 @@ internal ReferenceTable( _enableCustomCulture = enableCustomCulture; // Set condition for when to check assembly version against the target framework version - _checkAssemblyVersionAgainstTargetFrameworkVersion = unresolveFrameworkAssembliesFromHigherFrameworks || ((_projectTargetFramework ?? ReferenceTable.s_targetFrameworkVersion_40) <= ReferenceTable.s_targetFrameworkVersion_40); + _checkAssemblyVersionAgainstTargetFrameworkVersion = unresolveFrameworkAssembliesFromHigherFrameworks || (_projectTargetFramework != null && (_projectTargetFramework <= s_targetFrameworkVersion_40)); // Convert the list of installed SDK's to a dictionary for faster lookup _resolvedSDKReferences = new Dictionary(StringComparer.OrdinalIgnoreCase);