Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ Copyright (c) .NET Foundation. All rights reserved.
Add package reference for required targeting pack if necessary
============================================================
-->
<Target Name="IncludeTargetingPackReference" BeforeTargets="_GetRestoreSettingsPerFramework;_CheckForInvalidConfigurationAndPlatform"
<Target Name="IncludeTargetingPackReference" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;CheckForImplicitPackageReferenceOverrides"
Condition="'$(TargetFrameworkMoniker)' != '' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(AutomaticallyUseReferenceAssemblyPackages)' == 'true'">
<GetReferenceAssemblyPaths
TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
Expand All @@ -334,8 +334,12 @@ Copyright (c) .NET Foundation. All rights reserved.
<Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
</GetReferenceAssemblyPaths>


<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)" IsImplicitlyDefined="true" Condition="'$(_FullFrameworkReferenceAssemblyPaths)' == ''"/>
<_ExistingReferenceAssembliesPackageReference Include="@(PackageReference)" Condition="'%(PackageReference.Identity)' == 'Microsoft.NETFramework.ReferenceAssemblies'"/>

<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)" IsImplicitlyDefined="true"
Condition="'$(_FullFrameworkReferenceAssemblyPaths)' == '' and '@(_ExistingReferenceAssembliesPackageReference)' == ''"/>
</ItemGroup>
</Target>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,10 @@ public void It_restores_net_framework_project_successfully(string version)
}
}

[Fact]
public void It_restores_multitargeted_net_framework_project_successfully()
[Theory]
[InlineData(true)]
[InlineData(false)]
public void It_restores_multitargeted_net_framework_project_successfully(bool includeExplicitReference)
{
var testProject = new TestProject()
{
Expand All @@ -72,24 +74,43 @@ public void It_restores_multitargeted_net_framework_project_successfully()
IsSdkProject = true,
};

var testAsset = _testAssetsManager.CreateTestProject(testProject);
TestAsset testAsset = null;
if (includeExplicitReference)
{
// Add explicit reference to assembly packs
testAsset = _testAssetsManager.CreateTestProject(testProject).WithProjectChanges(project =>
{
var ns = project.Root.Name.Namespace;
var itemGroup = project.Root.Elements(ns + "ItemGroup").FirstOrDefault();
itemGroup.Add(new XElement(ns + "PackageReference",
new XAttribute("Include", $"Microsoft.NETFramework.ReferenceAssemblies"),
new XAttribute("Version", $"1.0.0-preview.2")));
});
}
else
{
testAsset = _testAssetsManager.CreateTestProject(testProject);
}

string projectAssetsJsonPath = Path.Combine(
testAsset.Path,
testProject.Name,
"obj",
"project.assets.json");

var restoreCommand =
testAsset.GetRestoreCommand(Log, relativePath: testProject.Name);
restoreCommand.Execute().Should().Pass();
var restoreCommand = testAsset.GetRestoreCommand(Log, relativePath: testProject.Name);
restoreCommand.Execute()
.Should()
.Pass()
.And
.NotHaveStdOutContaining("NETSDK1023");

LockFile lockFile = LockFileUtilities.GetLockFile(
projectAssetsJsonPath,
NullLogger.Instance);

var net471FrameworkLibrary = lockFile.GetTarget(NuGetFramework.Parse(".NETFramework,Version=v4.7.1"), null).Libraries.FirstOrDefault((file) => file.Name.Contains("net471"));
if (TestProject.ReferenceAssembliesAreInstalled(TargetDotNetFrameworkVersion.Version471))
if (TestProject.ReferenceAssembliesAreInstalled(TargetDotNetFrameworkVersion.Version471) && !includeExplicitReference)
{
net471FrameworkLibrary.Should().BeNull();
}
Expand All @@ -101,7 +122,7 @@ public void It_restores_multitargeted_net_framework_project_successfully()

var net472FrameworkLibrary = lockFile.GetTarget(NuGetFramework.Parse(".NETFramework,Version=v4.7.2"), null).Libraries.FirstOrDefault((file) => file.Name.Contains("net472"));

if (TestProject.ReferenceAssembliesAreInstalled(TargetDotNetFrameworkVersion.Version472))
if (TestProject.ReferenceAssembliesAreInstalled(TargetDotNetFrameworkVersion.Version472) && !includeExplicitReference)
{
net472FrameworkLibrary.Should().BeNull();
}
Expand All @@ -128,10 +149,15 @@ public void It_restores_net_framework_project_with_existing_references()
{
var ns = project.Root.Name.Namespace;
var itemGroup = project.Root.Elements(ns + "ItemGroup").FirstOrDefault();
itemGroup.Add(new XElement(ns + "PackageReference",
new XAttribute("Include", $"Newtonsoft.Json"),
new XAttribute("Version", $"11.0.2")));
itemGroup.Add(new XElement(ns + "PackageReference",
new XAttribute("Include", $"sqlite"),
new XAttribute("Version", $"3.13.0")));
itemGroup.Add(new XElement(ns + "PackageReference",
new XAttribute("Include", $"Microsoft.NETFramework.ReferenceAssemblies"),
new XAttribute("Version", $"1.0.0-preview.2")));

new XAttribute("Version", $"1.0.0")));
});

string projectAssetsJsonPath = Path.Combine(
Expand All @@ -142,15 +168,18 @@ public void It_restores_net_framework_project_with_existing_references()

var restoreCommand =
testAsset.GetRestoreCommand(Log, relativePath: testProject.Name);
restoreCommand.Execute().Should().Pass();
restoreCommand.Execute()
.Should()
.Pass()
.And
.NotHaveStdOutContaining("NETSDK1023");

LockFile lockFile = LockFileUtilities.GetLockFile(projectAssetsJsonPath, NullLogger.Instance);
var netFrameworkLibrary = lockFile.GetTarget(NuGetFramework.Parse(".NETFramework,Version=v4.7.1"), null).Libraries.FirstOrDefault((file) => file.Name.Contains(targetFramework));


netFrameworkLibrary.Name.Should().Be("Microsoft.NETFramework.ReferenceAssemblies." + targetFramework);
netFrameworkLibrary.Type.Should().Be("package");
netFrameworkLibrary.Version.ToFullString().Should().Be("1.0.0-preview.2");
netFrameworkLibrary.Version.ToFullString().Should().Be("1.0.0");
}
}
}