[8.0 preview 3] NuGet package validation fails when UseArtifactsOutput=true
See original GitHub issueDescribe the bug
If UseArtifactsOutput=true and NuGet package validation is enabled, an error occurs when running dotnet pack
.
It appears that the package validation functionality does not understand the new layout of the output, and looks in the wrong folder for the .nupkg
file to validate.
Specifically, there appears to be a dangling _
in the name of the folder, I’m guessing because it’s expecting there to be a TFM there.
MSBuild version 17.6.0-preview-23174-01+e7de13307 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
C:\Program Files\dotnet\sdk\8.0.100-preview.3.23178.7\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(287,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [src\Logging.XUnit\MartinCostello.Logging.XUnit.csproj::TargetFramework=netstandard2.0]
MartinCostello.Logging.XUnit -> .artifacts\bin\MartinCostello.Logging.XUnit\release_netstandard2.0\MartinCostello.Logging.XUnit.dll
Successfully created package '.artifacts\package\release\MartinCostello.Logging.XUnit.0.3.1.nupkg'.
Successfully created package '.artifacts\package\release\MartinCostello.Logging.XUnit.0.3.1.snupkg'.
C:\Program Files\dotnet\sdk\8.0.100-preview.3.23178.7\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ApiCompat.ValidatePackage.targets(58,5): error MSB3371: The file ".artifacts\obj\MartinCostello.Logging.XUnit\release_\Microsoft.NET.ApiCompat.ValidatePackage.semaphore" cannot be created. Could not find a part of the path '.artifacts\obj\MartinCostello.Logging.XUnit\release_\Microsoft.NET.ApiCompat.ValidatePackage.semaphore'. [src\Logging.XUnit\MartinCostello.Logging.XUnit.csproj]
To Reproduce
- Checkout https://github.com/martincostello/xunit-logging/commit/49900994ab90caf92aaab1604a045127dd2c4dc4
- Run
build.ps1
Exceptions (if any)
C:\Program Files\dotnet\sdk\8.0.100-preview.3.23178.7\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ApiCompat.ValidatePackage.targets(58,5): error MSB3371: The file ".artifacts\obj\MartinCostello.Logging.XUnit\release_\Microsoft.NET.ApiCompat.ValidatePackage.semaphore" cannot be created. Could not find a part of the path '.artifacts\obj\MartinCostello.Logging.XUnit\release_\Microsoft.NET.ApiCompat.ValidatePackage.semaphore'. [src\Logging.XUnit\MartinCostello.Logging.XUnit.csproj]
Further technical details
❯ dotnet --info
.NET SDK:
Version: 8.0.100-preview.3.23178.7
Commit: e300b0e1e6
Runtime Environment:
OS Name: Windows
OS Version: 10.0.22621
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\8.0.100-preview.3.23178.7\
.NET workloads installed:
There are no installed workloads to display.
Host:
Version: 8.0.0-preview.3.23174.8
Architecture: x64
Commit: 47bad717bd
.NET SDKs installed:
6.0.116 [C:\Program Files\dotnet\sdk]
6.0.408 [C:\Program Files\dotnet\sdk]
7.0.203 [C:\Program Files\dotnet\sdk]
7.0.300-preview.23179.2 [C:\Program Files\dotnet\sdk]
8.0.100-preview.3.23178.7 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0-preview.3.23177.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0-preview.3.23174.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.0-preview.3.23178.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
Not set
global.json file:
C:\Coding\martincostello\xunit-logging\global.json
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
Issue Analytics
- State:
- Created 5 months ago
- Comments:6 (6 by maintainers)
Top Results From Across the Web
What's new in .NET 8 Preview 3 · Issue #8135 · dotnet/core
This means that if there are multiple errors, the validation process often stops at the first error. As a result, you may have...
Read more >asp.net mvc - NuGet Package restore failed for project ...
Based on your error message looks like you are looking for a version that no longer exists and cannot tell which Package source...
Read more >Package restore intermittently fails with "Unable to find ...
6.15003' of package 'Validation'. Restoring NuGet package xunit.abstractions.2.0.0. WARNING: Unable to find version '1.4.0.88' of package ' ...
Read more >Announcing .NET 8 Preview 3
In preview 4, we'll add the enabling mechanism to the .NET SDK, so that the NuGet package reference isn't required to use the...
Read more >Package Validation - .NET Blog
In this blog post, I'm going to show the new package validation tooling that will become available with .NET 6. It ensures that...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Thanks for reporting this!
@ericstj @ViktorHofer I think several fixes are needed here. I’ve submitted #31919 to fix the intermediate directory to not try to include the
TargetFramework
for outer builds, which results in a path such as.artifacts\ProjectName\release_
.However, with the new output path format, the inner build intermediate and output paths are no longer subfolders of the outer build paths. So there’s nothing that guarantees that the intermediate output path will be created. Normally the
PrepareForBuild
target creates those folders, but that depends on targets likeGetFrameworkPaths
andGetReferenceAssemblyPaths
, which didn’t seem appropriate to run in the outer build. So I think #31906 is the right fix for the package validation failure.@zivkan I think it may be a good idea to update the pack targets as well. Currently the
NuspecOutputPath
is set to$(BaseIntermediateOutputPath)$(Configuration)\
. When using the artifacts output path, this folder may not be used for anything else, as the artifacts output path constructs the path differently and also converts theConfiguration
to lower-case.@martincostello thanks for reporting. I submitted https://github.com/dotnet/sdk/pull/31906 to fix the immediate PackageValidation issue.
That said, there appears to be a bigger issue with UseArtifactsOutput when the TargetFramework couldn’t be determined. cc @dsplaisted @rainersigwald