通过 Azure Devops 部署 Nuget 包时未添加依赖项

Pரத*_*ீப் 6 c# azure nuget nuget-package azure-devops

我已经创建了 .net 标准库。创建后,我尝试通过选择项目文件中的包选项从我的 Visual Studio 创建 nuget 包。然后尝试在另一个控制台应用程序中使用本地创建的 .nupkg 文件,效果很好。它按预期显示依赖项

在此处输入图片说明

然后我通过创建管道通过 Azure DevOps 部署了相同的库。现在在同一个控制台应用程序中,如果我从 Azure devops 源中选择 nuget,它不会显示任何依赖项。安装后控制台应用程序将无法工作,它要求在控制台应用程序中再次安装依赖项。

在此处输入图片说明

这是我的项目文件。

<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>
Run Code Online (Sandbox Code Playgroud)

我尝试按照此处的建议在项目文件中添加以下内容,但没有帮助。

<PackageReference Include="NuGet.Build.Tasks.Pack" Version="5.4.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

注意:.nuspec我的项目中没有文件

我在这里错过了什么。

ziv*_*kan 14

它可能更清楚(事实上,我刚刚创建了一个 PR来这样做),但隐藏在Azure DevOps NuGet 任务上文档的 YAML 片段的注释末尾,它说:

使用 NuGet.exe 并与 .NET Framework 应用程序配合使用。对于 .NET Core 和 .NET Standard 应用,请使用 .NET Core 任务。

查看nuget'exe packdocs,它说:

对基于 PackageReference 的项目使用 dotnet pack 或 msbuild -t:pack。

所以基本上,nuget.exe pack不支持PackageReference,所有.NET Core 项目都是PackageReference。因此,不应使用 Azure DevOps 中的 NuGet 任务来打包 PackageReference 项目,要么使用 .NET Core 任务(使用 dotnet cli),要么使用带有-t:pack参数的MSBuild 。