如何确保两个 .NET 版本显示在我的 NuGet 页面顶部?

问题描述 投票:0回答:1

我有关于 此 NuGet 页面 的问题。是的,现在 .NET 6 显示在顶部。但是,正如您在 Frameworks 选项卡 中看到的那样,.NET 6 和 .NET 7 都受支持。我应该如何更改我的 csproj (或执行其他操作)以确保两个版本都显示在顶部?

这是我的csproj:

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

  <PropertyGroup>
    <TargetFrameworks>net7.0;net6.0</TargetFrameworks>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <Title>Xunit.TestLogger</Title>
    <Company>Connecting Apps</Company>
    <Description>See the output of your logging in your xUnit integration tests</Description>
    <Copyright>© 2023 Connecting Apps. All rights BLAH BLAH </Copyright> 
    <PackageProjectUrl>https://github.com/ConnectingApps/Xunit.TestLogger</PackageProjectUrl>
    <RepositoryUrl>https://github.com/ConnectingApps/Xunit.TestLogger</RepositoryUrl>
    <RepositoryType>git</RepositoryType>
    <PackageReleaseNotes>Initial version</PackageReleaseNotes>
    <PackageReadmeFile>README.md</PackageReadmeFile>
    <PackageIcon>Icon.png</PackageIcon>
    <Version>1.0.1-preview</Version>
  </PropertyGroup>

    <!-- Package Icon -->
    <ItemGroup>
        <None Include="Icon.png" Pack="True" PackagePath="" />
    </ItemGroup>

     <!-- ScreenForLogging (screenshot for README) -->
    <ItemGroup>
        <None Include="..\ScreenForLogging.png" Pack="True" PackagePath="" />
    </ItemGroup>

    <!-- Readme File -->
    <ItemGroup>
        <None Include="..\README.md">
            <Pack>True</Pack>
            <PackagePath>\</PackagePath>
        </None>
    </ItemGroup>

    <!-- NuGet packages for net6.0 -->
    <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="[6.0.0, 6.0.99]" />
        <PackageReference Include="xunit.abstractions" Version="[2.0.3, 3.2.0]" />
    </ItemGroup>

    <!-- NuGet packages for net7.0 -->
    <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="[7.0.0, 7.0.99]" />
        <PackageReference Include="xunit.abstractions" Version="[2.0.3, 3.2.0]" />
    </ItemGroup>

</Project>


nuget nuget-package nugetgallery
1个回答
0
投票

NuGet 是开源的,包括 nuget.org 网站,所以让我们研究一下。

右键单击 nuget.org 上的包的 .NET 6.0 徽章,然后选择“检查”会显示该页面的 HTML,并直接进入徽章的 HTML。查看父节点,它显示

<div class="framework framework-badges">
framework-badges
听起来很独特,可以在源中搜索。

现在,转到 https://github.com/NuGet,在固定的存储库中,NuGetGallery 的描述显示“powers https://www.nuget.org”,所以我转到 https://github。 com/NuGet/NuGetGallery,然后在搜索中输入

framework-badges
,将我带到 此搜索结果页面。它只找到两个命中,一个在样式表中,另一个在剃刀页面中:https://github.com/NuGet/NuGetGallery/blob/ccb8999176522acb1d06baa3c3cd5757af519b45/src/NuGetGallery/Views/Packages/_SupportedFrameworksBadges.cshtml#L5

查看此页面,我看到 4 个

@if
语句,但没有循环。 4 个 if 语句针对一些通用的“net”,后面是 netcore、netstandard 和 netframework。因此,看起来每个框架标识符只能显示一个徽章。

在页面顶部,它显示

@model PackageFrameworkCompatibilityBadges
,因此我打开定义该类的文件:https://github.com/NuGet/NuGetGallery/blob/main/src/NuGetGallery.Core/Frameworks/PackageFrameworkCompatibilityBadges .cs

它为这 4 个属性中的每一个定义了一个

NuGetFramework
实例,并且搜索 该类被实例化和填充,我们可以看到
.Select(d => d.Framework).FirstOrDefault()

因此,nuget.org 将仅针对每个“框架”(.NET Standard、.NET (Core) 和 .NET Framework)显示一个徽章。由于 net6.0 和 net7.0 都是

.NETCoreApp
,因此 nuget.org 将仅在页面顶部显示其中之一。但是,如果您单击“框架”选项卡,您会看到它显示您的包兼容的所有框架。

© www.soinside.com 2019 - 2024. All rights reserved.