我已经创建了.net标准库。创建后,我尝试通过选择项目文件中存在的pack选项从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>
我尝试按照建议的here在项目文件中添加以下内容,但没有帮助。
<PackageReference Include="NuGet.Build.Tasks.Pack" Version="5.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
注意:我的项目中没有.nuspec
文件
我在这里想念什么。
它可能更清楚(实际上是I just created a PR,但是在the docs on the Azure DevOps NuGet Task的YAML代码段中的注释末尾隐藏了,它说:
使用NuGet.exe并与.NET Framework应用程序一起使用。对于.NET Core和.NET Standard应用程序,请使用.NET Core任务。
看着nuget'exe pack
docs,它说:
对于基于PackageReference的项目,请使用dotnet pack或msbuild -t:pack。
因此,基本上nuget'exe pack
不支持PackageReference,并且所有.NET Core项目都是PackageReference。因此,不应使用Azure DevOps中的NuGet任务来打包PackageReference项目,而应使用.NET Core任务(使用dotnet cli)或带有nuget.exe pack
参数的MSBuild。