Установить PackageId во время пакета? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь выяснить, как указать packageId при сборке или конкретно во время пакета.У меня есть следующее в моем csproj, который хорошо работает для создания пакетов локально для целей тестирования.Мы используем конвейеры сборки Azure DevOps для сборки и упаковки наших пакетов nuget, и я хотел бы иметь возможность установить packageId в качестве параметра задачи или msbuild в конвейере сборки.

У кого-нибудь есть предложения о том, как я могудостигните этого?

Спасибо,

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
        <TargetFramework>net461</TargetFramework>
        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
        <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);Dependencies</TargetsForTfmSpecificBuildOutput>
        <Version>0.1.0.5</Version>
        <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
        <AssemblyName>MyAssembly</AssemblyName>
        <RootNamespace>MyAssembly</RootNamespace>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <PackageId>MyAssembly.Test</PackageId>          <----- set at package time
        <FileVersion>1.0.0.0</FileVersion>
        <PackageLicenseUrl>https://my.domain.xyz/license.pdf</PackageLicenseUrl>
        <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
        <Description>A useful description.</Description>
        <Company>XYZ</Company>
        <Authors>UiPath</Authors>
        <PackageIconUrl>http://my.domain.xyz/favicon.ico</PackageIconUrl>

Ответы [ 3 ]

0 голосов
/ 28 сентября 2019

Вы пытались позвонить?:

dotnet pack -c Release -p:PackageId=The.Other.Packge.id

Или эквивалент в задаче .NET Core CLI

0 голосов
/ 30 сентября 2019

Установить PackageId во время пакета?

Ответ - да.

Согласно документу Целевые входы пакета MSBuild , мы могли бызнаю, что PackageId поддерживается для установки во время сборки.

Примечание:

Я видел, что для свойства GeneratePackageOnBuild установлено значение true, поэтомуVisual Studio автоматически сгенерирует пакет nuget.

Итак, если вы не используете дополнительную задачу dotnet pack для упаковки вашего пакета, вы добавляете аргумент msbuild -p:PackageId=<PackageId> в свою задачу сборки dotnet, например:

dotnet build -c Release -p:PackageId=<PackageId>

Если у вас естьеще одно dotnet pack задание для упаковки вашего пакета, @ Martin ответ правильный.

Note2:

Когда мы используем опцию -p:PackageId для изменения пакетаID, но AssemblyName не изменяется.Таким образом, Package ID сгенерированного пакета не соответствует его AssemblyName.Нам нужно уделять больше внимания, когда мы используем этот пакет nuget.Или мы могли бы также изменить AssemblyName, чтобы он соответствовал идентификатору пакета, с помощью опции -p:AssemblyName=<AssemblyName>

Надеюсь, это поможет.

0 голосов
/ 27 сентября 2019

Вы можете изменить XML-код csproj после клонирования и перед сборкой, используя задачу преобразования файлов:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/file-transform?view=azure-devops

...