NuGet 包管理器将目标平台标记为不受支持

NuGet package manager marks target platform as unsupported

我已经从 .Net Standard 1.3 库创建了 NuGet 包。 csproj 文件中的包定义:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <Summary>My package</Summary>
        <Description>My package description</Description>   
        <VersionPrefix>1.0.0</VersionPrefix>
        <Authors>Opensoft Inc.</Authors>
        <TargetFrameworks>netstandard1.3;</TargetFrameworks>
        <NetStandardImplicitPackageVersion>1.3</NetStandardImplicitPackageVersion>
        <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
        <TargetFrameworkVersion>v1.3</TargetFrameworkVersion>
        <NoWarn>$(NoWarn);1591</NoWarn>
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
        <AssemblyName>TestAssembly</AssemblyName>
        <PackageIconUrl></PackageIconUrl>
        <PackageProjectUrl></PackageProjectUrl>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <FileVersion>1.0.0.0</FileVersion>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
        <PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
    </ItemGroup>

</Project>

但是在发布包之后,我无法从 .Net Framework 4.6.1 web 应用程序项目中正确引用它。它说目标平台不受支持。

我做错了什么?

您的 csproj 文件中似乎有一些乱七八糟的 属性 定义。

删除属性 TargetFrameworkIdentifierTargetFrameworkVersion 以及 NetStandardImplicitPackageVersion.

只保留 TargetFrameworks(并在末尾删除杂散的 ;),并让工具完成其工作以找出所有其他属性的正确值,以便能够发布一个正确的 nuget 包。

请注意,如果您发布 "corrected" 包,您将需要更改版本号或清除已下载损坏包的所有计算机上的本地包缓存 (=> dotnet nuget locals all --clear ).