From a450cc9533ac8a54d14ec5e0cbf6b379a2014e7a Mon Sep 17 00:00:00 2001 From: Sumit Bhardwaj Date: Wed, 15 Dec 2021 08:10:57 -0800 Subject: VS: Set ResolveNugetPackages to false for ALL_BUILD and ZERO_CHECK When SDK-style targets in a project are restored, ResolveNugetPackageAssets target is not skipped. However, ALL_BUILD and ZERO_CHECK do not have any nuget packages to resolve and the build fails. This commit sets ResolveNugetPackages to false which skips the target and the build succeeds. --- Source/cmVisualStudio10TargetGenerator.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 088369c..6f6b0a6 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -461,6 +461,20 @@ void cmVisualStudio10TargetGenerator::WriteClassicMsBuildProjectFile( e1.Element("PreferredToolArchitecture", hostArch); } + // ALL_BUILD and ZERO_CHECK projects transitively include + // Microsoft.Common.CurrentVersion.targets which triggers Target + // ResolveNugetPackageAssets when SDK-style targets are in the project. + // However, these projects have no nuget packages to reference and the + // build fails. + // Setting ResolveNugetPackages to false skips this target and the build + // succeeds. + std::string_view targetName{ this->GeneratorTarget->Target->GetName() }; + if (targetName == "ALL_BUILD" || + targetName == CMAKE_CHECK_BUILD_SYSTEM_TARGET) { + Elem e1(e0, "PropertyGroup"); + e1.Element("ResolveNugetPackages", "false"); + } + if (this->ProjectType != VsProjectType::csproj) { this->WriteProjectConfigurations(e0); } -- cgit v0.12