10

I have created .net standard library. After creating, I tried to created nuget package from my visual studio by choosing the pack option present in project file. Then tried to use the locally created .nupkg file in another console app, it worked fine. Its shows the dependencies as expected

enter image description here

Then I deployed the same libray through Azure devops by creating pipeline. Now in same console app, if I choose the nuget from my Azure devops source, its not showing any dependency. The console app won't work after installing, it asks to install the dependencies again in console app.

enter image description here

Here is my project file.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Company>MyCompany</Company>
    <Authors>Me</Authors>
    <Version>1.0.0</Version>
    <Description>Library for managing Azure KeyVault</Description>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.5" />
    <PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="5.2.7" />
  </ItemGroup>

</Project>

I tried adding the below in project file as suggested here, but no help.

<PackageReference Include="NuGet.Build.Tasks.Pack" Version="5.4.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>

Note : There is no .nuspec file in my project

What am I missing here.

Pரதீப்
  • 91,748
  • 19
  • 131
  • 172
  • This [link](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget?view=azure-devops) on Azure NuGet task could help. – as-if-i-code Mar 06 '20 at 06:46
  • 2
    My guess is that on Azure DevOps you're using the NuGet task to pack, which uses `nuget.exe`. However `nuget.exe pack` doesn't support PackageReference, so you get what you see. You should use the dotnet task instead, and run pack that way. – zivkan Mar 06 '20 at 10:35
  • @zivkan - Thats the issue. I replaced nuget pack with dotnet pack, problem got resolved. – Pரதீப் Mar 06 '20 at 11:23
  • @zivkan. If you can convert your solution as answer, it would be much great!! – Mengdi Liang Mar 09 '20 at 07:32

1 Answers1

24

It could be clearer (in fact, I just created a PR to do so), but hidden at the end of the comment in the YAML snippet for the docs on the Azure DevOps NuGet Task it says:

Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.

Looking at nuget'exe pack docs, it says:

Use dotnet pack or msbuild -t:pack for PackageReference based projects.

So basically, nuget.exe pack doesn't support PackageReference, and all .NET Core projects are PackageReference. So, you shouldn't use the NuGet task in Azure DevOps to pack PackageReference projects, either use the .NET Core task (which uses the dotnet cli), or MSBuild with the -t:pack argument.

zivkan
  • 12,793
  • 2
  • 34
  • 51