具有自定义名称的 Azure Pipeline Pack Nuget 包

Azure Pipeline Pack Nuget Packages with custom name

在我的解决方案中,我有几个项目,它们在构建时打包了自己的 nuget 包。打包包时,我使用 PackageID 参数将自定义前缀添加到包名称(否则将是项目名称)。

dotnet pack  .$(ProjectName).csproj  --include-symbols --no-build -o C:\dev\Packages -p:PackageID=CustomPrefix.$(ProjectName)

它工作正常。

现在,在我的 Azure Devop 管道中,我使用 dotnet 任务来打包我的包,如下所示:

- task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: 'pack'
    packagesToPack: '${{parameters.solutionPath}}'
    nobuild: true
    includesymbols: true
    versioningScheme: 'off'

很明显,这并没有添加前缀,我不知道该怎么做,尤其是因为我在这里指定了实际解决方案的路径,而不是项目的路径。它只是打包解决方案中所有项目的包,没有任何定制方法。关于我该怎么做的任何线索?

请多看看 packagesToPack: '${{parameters.solutionPath}}' 根据我的经验,我们通常只用一个“{}”来编写这些命令 尝试这样做: packagesToPack: '${parameters.solutionPath}' 看看能不能解决。

您可以使用 MSBuildProjectName 变量来引用正在构建的项目的名称,但是当试图通过命令行传递它时它不起作用。

如果您可以修改项目中的 csproj 文件,我建议在 PropertyGroup 下添加以下内容:

<PackageIdPrefix></<PackageIdPrefix>
<PackageId>$(PackageIdPrefix)$(MSBuildProjectName)</PackageId>

然后将您的管道更新为

- task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: 'pack'
    packagesToPack: '${{parameters.solutionPath}}'
    nobuild: true
    includesymbols: true
    versioningScheme: 'off'
    buildProperties: 'PackageIdPrefix=CustomPrefix.' # <-- This is new