VSTS Build / AzureDevOps - имя файла nupkg не содержит версию в неуказанном файле - PullRequest
0 голосов
/ 21 апреля 2020

Я использую шаг задачи Nuget Packager, чтобы извлечь файл nupkg из моего csproj, и мой файл .nuspe c содержит номер версии:

<version>1.1.2<version>

Однако полученный файл содержит только мой имя сборки, и к нему прикреплены случайные числа. Например: MyProject.0.0.7416.19926.nupkg .

Automati c Параметр управления версиями пакетов отключен, поскольку я предполагал, что версия будет использоваться из файла .nuspe c. Я также включил определение YAML для упаковщика Nuget.

{
      "enabled": true,
      "continueOnError": false,
      "alwaysRun": false,
      "displayName": "NuGet Packager ",
      "timeoutInMinutes": 0,
      "condition": "succeeded()",
      "task": {
        "id": "333b11bd-d341-40d9-afcf-b32d5ce6f24b",
        "versionSpec": "0.*",
        "definitionType": "task"
      },
      "inputs": {
        "searchPattern": "$/...csproj",
        "outputdir": "$(Build.StagingDirectory)\\packages",
        "includeReferencedProjects": "false",
        "versionByBuild": "false",
        "versionEnvVar": "Version",
        "requestedMajorVersion": "1",
        "requestedMinorVersion": "0",
        "requestedPatchVersion": "0",
        "configurationToPack": "$(BuildConfiguration)",
        "buildProperties": "",
        "nuGetAdditionalArgs": "",
        "nuGetPath": "$(System.DefaultWorkingDirectory)\\build\\nuget.exe"
      }
    }

Я использую новую версию для nugget.exe, поэтому путь в nuGetPath.

1 Ответ

1 голос
/ 22 апреля 2020

Поскольку Nuget Packager task устарела, я бы порекомендовал вам использовать DotNetCoreCLI@2. Вам нужно decalre nuspe c файл в csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <NuspecFile>package.nuspec</NuspecFile>
  </PropertyGroup>

</Project>

вот мой nuspe c файл:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Required elements-->
        <id>UniqeName</id>
        <version>1.1.2</version>
        <description>UniqueName</description>
        <authors>Krzysztof Madej</authors>

        <!-- Optional elements -->
        <!-- ... -->
    </metadata>
    <files>
        <file src="bin\Release\netstandard2.0\*" target="lib" />
    </files>
</package>

И с этим определением сборки YAML:

variables:
  buildConfiguration: 'Release'

steps:

- task: DotNetCoreCLI@2
  displayName: "dotnet pack"
  inputs:
    command: 'pack'
    arguments: '--configuration $(buildConfiguration)'
    packagesToPack: '$(System.DefaultWorkingDirectory)/stackoverflow/08-nuget-packager/SampleApp.csproj'
    versioningScheme: 'off'
    outputDir: '$(Build.ArtifactStagingDirectory)'

- bash: ls $(Build.ArtifactStagingDirectory)

Вы получите в Build.ArtifactStagingDirectory свой пакет nuget с версиями, определенными в файле nuspec.

Поскольку в заголовке вы дали выбор между VSTS Build и Azure DevOps, для которых я представил решение Azure DevOps. Я не уверен, имеет ли это отношение к VSTS.

Azure DevOps log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...