我正在尝试使用 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
不确定您是如何观察的
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>