如何创建 nuget 包并包含 Azure DevOps Pipelines 的项目依赖项?

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

我已经阅读了有关将项目依赖项实际捆绑到 Nuget 包中所必须经历的不同解决方法,而不是让每个项目都被引用为自己的 nuget 依赖项。 约瑟夫·奥托森 (Josef Ottoson) 的这篇文章是迄今为止最清晰、最简洁的。

我喜欢他编辑 .nuspec 文件而不是 .csproj 文件的方法。我正在尝试弄清楚这是否可以在 Azure Pipelines 中实现。

我像这样设置了一个新的管道:

dotnet build
中,我设置了路径以包含我想要构建的所有项目文件
CompanyName.Library.@(Core|Dep1|Dep2|Dep3)/*.csproj
。生成的 .dll 应该全部位于类似
$(build.artifactstagingdirectory)
.

的位置

我尝试将以下内容添加到我的基础项目中的 .nuspec 文件中:

  <files>
    <file src=".\CompanyName.Library.*.dll" target="lib\net6.0" />
  </files>

dotnet pack
任务中,我设置了“请勿构建”标志(因为我在上一步中构建了)并将 nuspec 文件的路径设置为
CompanyName.Library.Core/*.nuspec

除了设置用于发布包的目标 Azure Artifact 之外,我几乎在

NuGet push
任务中保留了默认值。

这不起作用——我生成的 .nupkg 不包含任何 dll。

以前有人做过这个并让它工作吗?或者有人知道我能做些什么来让它工作吗?

azure-devops azure-pipelines nuget-package
1个回答
0
投票

下面是我这边的一个例子,可能对你有帮助。在此示例中,我不使用

nuspec
文件来打包 NuGet 包。 您可以参考此示例来设置或更新您的管道。

variables:
  VerMajor: 2
  VerMinor: $[counter(variables['VerMajor'], 0)]
  VerPatch: $[counter('VP', 1)]
  Package_Version: $(VerMajor).$(VerMinor).$(VerPatch)

jobs:
- job: buildAndPublish
  displayName: 'Build and Publish NuGet Package'
  steps:
# Build and pack the NuGet package with the auto-generated version number.
  - task: DotNetCoreCLI@2
    displayName: 'dotnet pack'
    inputs:
      command: pack
      packagesToPack: MathCalc/MathCalc.csproj
      packDirectory: '$(Build.ArtifactStagingDirectory)/MathCalc'
      versioningScheme: byEnvVar
      versionEnvVar: 'PACKAGE_VERSION'

# Publish the packed NuGet package (.nupkg) to Azure Artifacts feed.
  - task: DotNetCoreCLI@2
    displayName: 'dotnet push'
    inputs:
      command: push
      packagesToPush: '$(Build.ArtifactStagingDirectory)/MathCalc/*.nupkg'
      publishVstsFeed: 'MyFeed'
© www.soinside.com 2019 - 2024. All rights reserved.