DrGriff
DrGriff

Reputation: 4916

Creating NuGet package: NU5128 exception - not clear on how to fix

I have a DLL addressing the .NET 4.7.1 library.

Probably irrelevant, but it's written in C# and consumes NuGet packages using the "packages.config" pattern, rather than the newer PackageReference configuration.

I publish this as a NuGet package (have been doing this for several years). But now when I execute the following:

nuget pack -Properties Configuration=Release

I get the following warning:

Error NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below: - Add a dependency group for .NETFramework4.7.1 to the nuspec

I don't have anything in the dependencies group of the nuspec:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
   </metadata> 
</package>

This consumes the following NuGet packages:

When I look under the References, I see the following (used ~ to shorten the path):

So to my mind, everything looks like it's .NET 4.7.1 compatible, so why this warning?

Following the details given in NuGet Warning NU5128, I therefore added a dependency group:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
        <dependencies>
          <group targetFramework=".NETFramework4.7.1" />
        </dependencies>
   </metadata> 
</package>

But this has no effect, I still get the error.

Upvotes: 12

Views: 9523

Answers (4)

Ben Robinson
Ben Robinson

Reputation: 1745

Adding this:

<NoPackageAnalysis>true</NoPackageAnalysis>

to the PropertyGroup in the csproj file worked for me; but I guess you need to know the packing is good before using it!

Upvotes: 0

kartheekp-ms
kartheekp-ms

Reputation: 160

As per NU5128 doc, This warning was added during NuGet 5.3's development, and first was available in .NET Core SDK 3.0 Preview 9. NuGet/Home#8583 tracks an issue where the warning was being raised in too many scenarios. You can use the NoWarn MSBuild property (add $(NoWarn);NU5128 to any PropertyGroup in your project file). If you have multiple projects affected, you can use Directory.Build.targets to automatically add NoWarn to all projects

Add Nowarn to the project

Upvotes: 10

Chad Hedgcock
Chad Hedgcock

Reputation: 11785

If you're getting this as a warning and nothing is working for you over at the reference page,

  • Open the .nupkg as a zip file.

  • Find the .nuspec file and open it.

  • In <dependencies> add your target framework like so

    <group targetFramework=".NETFramework4.7.2" />
    
  • Save the file (WinZip lets you do all this without extracting and then re-zipping)

  • Publish the .nupkg again to your nuget repository.

It's annoying but it's the only thing that worked for me.

Upvotes: 3

Linnau
Linnau

Reputation: 57

As of Nuget 5.7 this is now reported as an error from Nuget CLI (https://github.com/NuGet/Home/issues/7404) - So our pipeline started to fail even though we had this error before.

We ended up with the Nowarn approach in relevant csproj files as described above - But I wanted to add that this may suddenly cause issues in already running pipelines.

Upvotes: 4

Related Questions