【问题标题】:Set PackageId at package time?在打包时设置 PackageId?
【发布时间】:2019-09-27 16:17:34
【问题描述】:

我试图弄清楚如何在构建时或特别是在打包时指定 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>

【问题讨论】:

    标签: msbuild azure-devops nuget-package


    【解决方案1】:

    在打包时设置 PackageId?

    答案是肯定的。

    根据文档MSBuild pack target inputs,我们可以知道PackageId是支持在构建时设置的。

    注意:

    我看到您将属性GeneratePackageOnBuild 设置为true,所以Visual Studio 会自动生成nuget 包。

    因此,如果您不使用额外的 dotnet pack 任务来打包您的包,您可以在 dotnet 构建任务中添加 msbuild 参数 -p:PackageId=&lt;PackageId&gt;,例如:

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

    如果您有另一个dotnet pack 任务来打包您的包裹,@Martin 的答案是正确的。

    注意2:

    当我们使用选项-p:PackageId 更改包ID,但AssemblyName 没有更改时。所以生成包的Package ID和它的AssemblyName不一致。我们在使用这个nuget包的时候需要多加注意。或者我们也可以通过选项-p:AssemblyName=&lt;AssemblyName&gt; 更改AssemblyName 使其与包ID 匹配

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      你试过打电话吗?:

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

      或 .NET Core CLI 任务中的等效项

      【讨论】:

        【解决方案3】:

        您可以在克隆之后和构建之前使用文件转换任务修改 csproj 的 XML:

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

        【讨论】:

        • 谢谢詹姆斯,我不知道文件转换工具,这将在未来派上用场。
        猜你喜欢
        • 2019-04-18
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 2014-01-15
        • 2021-04-13
        相关资源
        最近更新 更多