Joshit
Joshit

Reputation: 1325

How to resolve .net core build error NETDSDK1061 and warning MSB3277

I´ve had the problem, that my AspNetCore.App-metapackage referenced a lower Version of EntityFrameworkCore (2.1.2), than a EfCore provider package (NpgSql, referencing 2.1.3). The result was the warning MSB3277 (here is the question). The quickfix for that was the accepted answer.

Another answer pointed out, that I´ve worked with a lower Microsoft.AspNetCore.App package (2.1.1 at that time) than the last stable version (2.1.4). Changing the package Version was not possible (see picture below).

enter image description here

I´ve had the same issue with Microsoft.NETCore.App in a class library-project

I even didn´t noticed that I used an older metapackage than available. Until today I always checked, if any Updates are available in NuGet Package Manager. I´ve worked with the default project templates and always installed the latest .NetCore SDKs, believing that this is enough. It wasn´t.

After investigating this issue, I´ve found out, that I can force my project to use a specific .NETCore.App or AspNetCore.App metapackage with package manager console (Install-Package Microsoft.NETCore.App -Version 2.1.4 or Install-Package Microsoft.AspNetCore.App -Version 2.1.4).

After that command I´ve had a build error (NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.4, but with current settings, version 2.1.0 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish.).

Upvotes: 5

Views: 5580

Answers (3)

Joshit
Joshit

Reputation: 1325

I've tried to find any help on that issue, finding some GitHub issues (e.g. this one) looking pretty similar, but were actually different. I've found a descriptive doc, but that didn't really helped me.

I found a pretty helpful blog post from Rick Strahl, explaining what packages are available and what the purpose of each package is. That was a good thing to start.

This is my solution:

Step 1: Execute Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice] and/or execute Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice] in package manager console.

Step 2: Edit .csproj as shown below:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion>  <- add this line
    <!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>

One more takeaway: If you work with Win10, do yourself a favor and check the installed .NET Core SDK/Runtimes etc. Uninstall every SDK/Runtimes you do not need (again: Check Rick's blog post for that). You only need those you are currently targeting in one of your projects.

For example: If you're working on one .NET Core project, and you just did those 2 steps with Versions 2.1.4 - as time of writing you only need Microsoft .NET Core SDK 2.1.402. To clean up a little, I uninstalled every .NET Core SDK/Runtimes/Packages and just took the latest from here.

Note: I followed this blog post from Jeff Atwood to answer a question, which took me too long to resolve. I hope that helps.

EDIT: Good news for .NET Core 2.2: You just have to edit the .csproj as follows:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>

EDIT: The metapackages should not be updated manually anymore. This is the recommendation for updating AspNetCore. The version of the metapackage depends on the installed SDK.

Upvotes: 12

Jess
Jess

Reputation: 25129

Ug. This issue was very sticky for me. I did the steps in Joshit's answer and the error persisted. Then I did:

  • Build > Clean Solution
  • Build > Build Solution

Now it is working.

It helps to know your SDK version, which can be found here: C:\Program Files\dotnet\sdk

You can get this problem doing a publish as well. It can be helpful to add these lines to the publish_profile.pubxml file:

<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>

Replace 2.1.0 with 2.1.4 or whatever you are using.

Upvotes: 1

nbergqui
nbergqui

Reputation: 51

After adding this line to the .csproj file I was still seeing this issue.

<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>

Adding the Version attribute to the Microsoft.AspNetCore.App package reference resolved the issue for me. I changed this:

<PackageReference Include="Microsoft.AspNetCore.App" />

to this:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />

Step 1 in Joshit's answer probably does this automatically, but I already had the latest version of Microsoft.AspNetCore.App.

Upvotes: 3

Related Questions