Dotnet pack - 生成的包没有依赖项

问题描述 投票:0回答:1

我正在尝试使用 Azure-Devops 管道来创建和更新依赖于 Newtonsoft.Json nuget 包的 nuget 包。

如果我使用 Nuget Package Explorer 手动创建包,则可以添加该依赖项,但是当我设置 Azure 管道作业来打包和发布 nuget 包时,创建的包没有列出任何依赖项,因此不会自动安装包含在用户项目中时必需的包。

我查看了 dotnet pack 命令文档,似乎这应该是自动的,与此问题相关的所有其他问题都是关于项目引用,而不是包引用。

我为此使用的 YAML 非常简单

    steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: pack
    packagesToPack: GPIO/ProjectThatNeedsJSON.csproj
.net azure-pipelines nuget
1个回答
0
投票

不确定您是如何观察的

no dependencies listed
。这是我打包和推送演示项目的管道供您参考,其中我们可以看到
Newtonsoft.Json
dotnet pack
步骤中恢复,并且在推送到 Azure Artifacts feed 后列出了依赖项。

azure-pipelines.yml

pool:
  vmImage: windows-latest

steps:
- task: DotNetCoreCLI@2
  displayName: DotNet Pack
  inputs:
    command: 'pack'
    packagesToPack: '**/*.csproj'
    versioningScheme: 'byPrereleaseNumber'
    majorVersion: '1'
    minorVersion: '0'
    patchVersion: '0'
- task: DotNetCoreCLI@2
  displayName: DotNet NuGet Push
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '$(TheProjectName)/$(ProjectScopeFeed)'
- script: tree /F /A
- publish: $(Pipeline.Workspace)
  artifact: drop-$(Build.BuildId)

程序.cs

using Newtonsoft.Json;
namespace DotNetConsoleAppDemo
{
    //After running the console will close so please add a breakpoint or sleep to see output.
    public class Program
    {
        static void Main(string[] args)
        {
            // Example of serializing an object to JSON
            var myObject = new { Name = "John", Age = 30 };
            string json = JsonConvert.SerializeObject(myObject);
            Console.WriteLine(json); // Output: {"Name":"John","Age":30}
            // Example of deserializing JSON to an object
            string jsonToDeserialize = "{\"Name\":\"Alice\",\"Age\":25}";
            var deserializedObject = JsonConvert.DeserializeObject<MyClass>(jsonToDeserialize);
            Console.WriteLine($"Name: {deserializedObject.Name}, Age: {deserializedObject.Age}"); // Output: Name: Alice, Age: 25
        }
    }
    public class MyClass
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

DotNetConsoleAppDemo.csproj


<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
</Project>
© www.soinside.com 2019 - 2024. All rights reserved.