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).
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.).
IÂ´ve tried to find any help on that issue, finding some github-issues (e.g. this one) looking pretty similar, but where actually different. IÂ´ve found a descriptive doc, but that didnÂ´t really helped me.
I found a pretty helpful blogpost 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:
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 Ricks blogpost for that). You only need those you are currently targeting in one of your projects.
For example: If youÂ´re working on one .NETCore 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 blogpost 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.
After adding this line to the .csproj file I was still seeing this issue.
Adding the Version attribute to the Microsoft.AspNetCore.App package reference resolved the issue for me. I changed this:
<PackageReference Include="Microsoft.AspNetCore.App" />
<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.