#SharePointProblems | Koskila.net

Solutions are worthless unless shared! Antti K. Koskela's Personal Professional Blog
>

Resolving the Version conflicts for a downgraded .NET Core 2.1/2.2 web app project

koskila
Reading Time 3 min
Word Count 394 words
Comments 7 comments
Rating 3.7 (3 votes)
View

I ran into compatibility issues with .NET Core 2.2 on my Azure Functions projects, so I downgraded my whole solution (an Azure Functions project, a helpers library, and a web application project) to 2.1, and got rid of that particular nuisance.

This introduced a few new issues, though - namely, I started getting this error whenever trying to restore nuget packages or build the project:

NU1107	Version conflict detected for Microsoft.AspNetCore.Razor.Language. Install/reference Microsoft.AspNetCore.Razor.Language 2.2.0 directly to project [projectname] to resolve this issue. 
 [projectname] -> Microsoft.VisualStudio.Web.CodeGeneration.Design 2.2.0 -> Microsoft.VisualStudio.Web.CodeGenerators.Mvc 2.2.0 -> Microsoft.VisualStudio.Web.CodeGeneration 2.2.0 -> Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore 2.2.0 -> Microsoft.VisualStudio.Web.CodeGeneration.Core 2.2.0 -> Microsoft.VisualStudio.Web.CodeGeneration.Templating 2.2.0 -> Microsoft.AspNetCore.Razor.Language (>= 2.2.0) 
 [projectname] -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.AspNetCore.Razor.Language (>= 2.1.1 && < 2.2.0).

This is apparently caused by a weirdish hardcoded dependency in .csproj file. You don't normally run into this issue, but I suppose when you create the project with one .NET Core version (like 2.2) and then downgrade (to 2.1, in my case), you could fall into this trap.

Even though this example is for versions 2.2 and 2.1 of .NET Core, I've seen the same issue happen with other versions - so I don't think the issue is exclusive to these versions of the packages.

Solution

So NuGet Package Manager is not the way to go. But you can still modify the project file directly!

The instructions that the error gives, are kind of correct - but at least for me, NuGet Package Manager would not let me install the 2.2.0 version of Microsoft.AspNetcore.Razor.Language because the project is being built on 2.1, it requires a version LOWER THAN 2.2.0 of said package.

In my case, the solution to this particular instance of package version conflicts was this:

Time needed: 50 minutes.

How to resolve .NET package conflicts

  1. Modify the .csproj file of your Visual Studio project directly

    This can be done by unloading the project, and clicking "modify the project file"

  2. Add the following lines into the package references ItemGroup

    <PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="2.2.0" />

    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />

    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />

  3. Reload the project

  4. Rebuild (or clean + debug)

Try running your project. If your issue was the same as mine, you should be good to go now!


Still not good to go? Maybe your issue is a bit different. Let me know in the comments section below and let's see if we can figure it out!

Comments

Interactive comments not implemented yet. Showing legacy comments migrated from WordPress.
2019-07-01 03:34:56)
tank you for this article
2019-07-01 03:42:35
by this your solution display this error : The element beneath element is unrecognized.
2019-09-07 10:33:40)
Hi Antti, I followed your instructions and added those lines into the csproj file but still coming across the same issue. Any other ideas? Thanks for your help.
2019-09-12 03:50:45
Hi Esteban, Which packages are you getting the error for?
Amarjeet
2020-02-20 07:19:49)
Thanks a ton. Microsoft has to work on those areas.
2020-02-22 00:00:34
Happy it helped! It is quite an odd issue - weird something like this made its way into production distribution...