Search code examples
.net-corenuget.net-standard.net-standard-2.0

dotnet pack build folders output instead of lib folder when specifying nuspec file


I am attempting to add a step to our CI process that is a powershell script that will automatically pack and push a nuget package for a .NET standard 2.0 project after a previous step builds it. The original command I used was:

dotnet pack $project.csproj -c $configuration -p:PackageVersion=$version

This gave me the exact project output I wanted. As seen here: dotnet pack without nuspec specified.

However, in our previous nuget packages, we have nuspec files that are important and dotnet pack will not pick it up by default even if it is in the same directory as the project file, it will generate a default one. To get around this issue, I found you can specify the nuspec file and updated the command to:

dotnet pack $project.csproj -c $configuration -p:PackageVersion=$version -p:NuspecFile=$project.nuspec

This will correctly now add the nuspec file that is desired, but now the nupkg has undesired contents without the lib folder, it appears to be the output of building the project. As seen here: dotnet pack with nuspec file specified.

  1. Is there a way to get the desired output from the first command and the nuspec file specified in the second command purely through the dotnet pack command? I tried --no-build and verbose detailed logging to acquire more information, but so far no luck.
  2. Is there an alternative to the nuspec file that would achieve the same effect, such as specifying more information in the project file and removing the nuspec file entirely?

Thanks!


Solution

  • I was able to resolve this by simply deprecating the need for a nuspec file. Everything needed can be done in the csproj, which translates to the nuspec file generated by dotnet pack without issue.