From 9910e2ccca7e2baeefd5b87bf2714c8edc275257 Mon Sep 17 00:00:00 2001 From: Jeff Kluge Date: Thu, 2 Dec 2021 12:08:29 -0800 Subject: [PATCH] Fix issue with CentralPackageVersions logging error when using a custom import pattern. #322 didn't take into account that if Microsoft.Build.CentralPackageVersions is imported in a custom way. This change now makes sure it was imported after Microsoft.Common.targets Fixes #324 --- .../CentralPackageVersionsTests.cs | 39 ++++++++++++++++--- src/CentralPackageVersions/Sdk/Sdk.targets | 2 +- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/CentralPackageVersions.UnitTests/CentralPackageVersionsTests.cs b/src/CentralPackageVersions.UnitTests/CentralPackageVersionsTests.cs index 885d4900..c0d2ffb1 100644 --- a/src/CentralPackageVersions.UnitTests/CentralPackageVersionsTests.cs +++ b/src/CentralPackageVersions.UnitTests/CentralPackageVersionsTests.cs @@ -496,15 +496,44 @@ public void VersionOverridesWithoutCentralVersionsCanBeDisabled(string projectFi buildOutput.Errors.ShouldBe(new[] { $"The package reference \'Orphan\' must have a version defined in \'{packagesProps.FullPath}\'." }); } - private ProjectCreator WritePackagesProps() + [Fact] + public void WorksWithCustomImportPattern() { - ProjectCreator.Create() - .Save(Path.Combine(TestRootPath, "Directory.Build.props")); + WritePackagesProps(writeDirectoryBuildPropsTargets: false); - ProjectCreator.Create() + ProjectCreator customProps = ProjectCreator.Create() + .ImportSdk("Sdk.props", "Microsoft.NET.Sdk") + .Save(Path.Combine(TestRootPath, "Custom.props")); + + ProjectCreator customTargets = ProjectCreator.Create() + .ImportSdk("Sdk.targets", "Microsoft.NET.Sdk") .Import(Path.Combine(ThisAssemblyDirectory, @"Sdk\Sdk.props")) .Import(Path.Combine(ThisAssemblyDirectory, @"Sdk\Sdk.targets")) - .Save(Path.Combine(TestRootPath, "Directory.Build.targets")); + .Save(Path.Combine(TestRootPath, "Custom.targets")); + + ProjectCreator.Create() + .Import(customProps) + .Property("TargetFramework", "net45") + .ItemPackageReference("Foo") + .Import(customTargets) + .Save(GetTempFileWithExtension(".csproj")) + .TryBuild("CheckPackageReferences", out bool result, out BuildOutput buildOutput); + + result.ShouldBeTrue(buildOutput.GetConsoleLog()); + } + + private ProjectCreator WritePackagesProps(bool writeDirectoryBuildPropsTargets = true) + { + if (writeDirectoryBuildPropsTargets) + { + ProjectCreator.Create() + .Save(Path.Combine(TestRootPath, "Directory.Build.props")); + + ProjectCreator.Create() + .Import(Path.Combine(ThisAssemblyDirectory, @"Sdk\Sdk.props")) + .Import(Path.Combine(ThisAssemblyDirectory, @"Sdk\Sdk.targets")) + .Save(Path.Combine(TestRootPath, "Directory.Build.targets")); + } return ProjectCreator.Templates .PackagesProps( diff --git a/src/CentralPackageVersions/Sdk/Sdk.targets b/src/CentralPackageVersions/Sdk/Sdk.targets index 7b5e3133..8616c72d 100644 --- a/src/CentralPackageVersions/Sdk/Sdk.targets +++ b/src/CentralPackageVersions/Sdk/Sdk.targets @@ -16,7 +16,7 @@ - <_WasMicrosoftCentralPackageVersionsSdkImportedInDirectoryBuildTargets Condition="'$(_WasMicrosoftCentralPackageVersionsSdkImportedInDirectoryBuildTargets)' == '' And '$(DirectoryBuildTargetsPath)' == ''">false + <_WasMicrosoftCentralPackageVersionsSdkImportedInDirectoryBuildTargets Condition="'$(_WasMicrosoftCentralPackageVersionsSdkImportedInDirectoryBuildTargets)' == '' And '$(CommonTargetsPath)' == ''">false