Exclude target framework from NuGet package

Viewed 495

How can i exclude specific target framework from nuspec (NuGet package) generation?

This is my csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;net5.0;net5.0-windows</TargetFrameworks>
        <IsPackable>true</IsPackable>
    </PropertyGroup>

    <PropertyGroup Condition="'$(TargetFramework)' == 'net5.0-windows'">
        <IsPackable>false</IsPackable>
    </PropertyGroup>
</Project>

dotnet pack command generates NuGet package that contains all target frameworks not only netstandard2.0 and net5.0

Generated nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>ExampleLibrary</id>
    <version>1.0.0</version>
    <authors>ExampleLibrary</authors>
    <description>Package Description</description>
    <dependencies>
      <group targetFramework="net5.0" />
      <group targetFramework="net5.0-windows7.0" />
      <group targetFramework=".NETStandard2.0" />
    </dependencies>
  </metadata>
</package>
1 Answers
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;net5.0;net5.0-windows7.0</TargetFrameworks>
        <IsPackable>true</IsPackable>
        <GenerateNuspecDependsOn>$(GenerateNuspecDependsOn);_ExcludeTargetFramework;_ExcludeTargetFrameworkDependency</GenerateNuspecDependsOn>
    </PropertyGroup>

    <Target Name="_ExcludeTargetFramework" AfterTargets="_GetTargetFrameworksOutput" BeforeTargets="_WalkEachTargetPerFramework">
        <ItemGroup>
            <_TargetFrameworks Remove="net5.0-windows7.0" />
        </ItemGroup>
    </Target>

    <Target Name="_ExcludeTargetFrameworkDependency" AfterTargets="_WalkEachTargetPerFramework" BeforeTargets="GenerateNuspec">
        <ItemGroup>
            <_FrameworksWithSuppressedDependencies Include="net5.0-windows7.0" />
        </ItemGroup>
    </Target>
</Project>

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>ExampleLibrary</id>
    <version>1.0.0</version>
    <authors>ExampleLibrary</authors>
    <description>Package Description</description>
    <dependencies>
      <group targetFramework="net5.0" />
      <group targetFramework=".NETStandard2.0" />
    </dependencies>
  </metadata>
</package>
Related