我创建了.net 标准库。创建后,我尝试通过选择项目文件中存在的包选项从我的视觉工作室创建 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 https://stackoverflow.com/questions/51822826/nuget-package-shows-no-dependencies,但没有帮助。
<PackageReference Include="NuGet.Build.Tasks.Pack" Version="5.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
注:没有.nuspec
我的项目中的文件
我在这里缺少什么。
这样可能会更清楚(事实上,我刚刚创建了一个 PR https://github.com/MicrosoftDocs/vsts-docs/pull/7557这样做),但隐藏在 YAML 片段中注释的末尾Azure DevOps NuGet 任务的文档 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget?view=azure-devops它说:
使用 NuGet.exe 并与 .NET Framework 应用程序配合使用。对于 .NET Core 和 .NET Standard 应用程序,请使用 .NET Core 任务。
看着nuget'exe pack docs https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-pack, 它说:
对于基于 PackageReference 的项目,请使用 dotnet pack 或 msbuild -t:pack。
所以基本上,nuget.exe pack
不支持PackageReference,所有.NET Core项目都是PackageReference。因此,不应使用 Azure DevOps 中的 NuGet 任务来打包 PackageReference 项目,应使用 .NET Core 任务(使用 dotnet cli),或使用 MSBuild 来打包-t:pack
争论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)