繁体   English   中英

使用MSBuild构建NuGet package时如何使用Project的Assembly信息?

[英]How to use Project's Assembly information when building NuGet package using MSBuild?

使用MSBuild创建NuGet package时如何使用项目中的程序集信息通过NuGet package传递和使用。

装配信息

</Project>
<PropertyGroup>
   <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <PackageId>Test</PackageId>
    <PackageVersion Condition=""></PackageVersion>
    <Title>Testing</Title>
    <Authors>Hugh</Authors>
    <PackageIcon>Hugh.png</PackageIcon>
    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
    <Description>test</Description>
    <PackageTags>test</PackageTags>
    <PackageReleaseNotes>Update.</PackageReleaseNotes>
    <copyright>Copyright © 2021 </copyright>
  </PropertyGroup>
  <ItemGroup>
    <None Include="Resources\test.png" Pack="true" PackagePath="" />
  </ItemGroup>
</Project>

我希望将 NuGet Package ID 设置为程序集标题,将说明设置为程序集说明,将作者设置为公司,将 PackageVersion 设置为程序集版本等。

  <Target Name="RetrieveIdentities">
    <GetAssemblyIdentity
        AssemblyFiles="$(MyAssemblies)">
      <Output
          TaskParameter="Assemblies"
          ItemName="MyAssemblyIdentities"/>
    </GetAssemblyIdentity>

    <Message Text="Files: %(MyAssemblyIdentities.Version)"/>
  </Target>

我曾尝试使用上述目标,但未能成功,并且不确定在 NuGet package 的 PropertyGroup 下的 Package 版本中使用或引用 %(MyAssemblyIdentities.Version)。

请指教?

重用 MSBuild 变量足以将AssemblyTitlePackageId (只要命名限制允许)同步,以及CompanyAuthors等同步。不需要目标。

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <PropertyGroup>
        <AssemblyTitle>Some Title</AssemblyTitle>
        <Company>Some Company</Company>
        <Description>Some Description</Description>

        <PackageId>$(AssemblyTitle.Replace(" ", "_"))</PackageId>
        <Authors>$(Company)</Authors>

        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    </PropertyGroup>
</Project>

构建这个时

dotnet build -p:Version=1.2.3

(或将Version属性添加到 csproj),构建将默认使用给定Version作为 package 版本和程序集版本。

package 看起来像这样,它应该满足您问题中的每个要求: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM