Skip to content

.NET Dependency compatibility tool #9694

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Ruud-cb opened this issue Nov 26, 2018 · 1 comment
Closed

.NET Dependency compatibility tool #9694

Ruud-cb opened this issue Nov 26, 2018 · 1 comment

Comments

@Ruud-cb
Copy link

Ruud-cb commented Nov 26, 2018

Help us make content visible

Describe the new topic

  • Explain why this topic is needed.
    A lot of time is consumed in upgrading to the right version across a large amount of projects within one solution.
  • Suggest a location in the Table of Contents.
    Tools
  • Write an abstract. In one short paragraph, describe what this topic will cover.
    This topic should help users installing the correct dependency versions when having a lot of different projects, technologies and configurations.
  • Create an outline for the new topic. We'll help review the outline and approve it before anyone writes a topic.

Full description / problem statement

Hi,

To get a sense of what I am working with, which is certainly not that big, compared to other projects.
My solution contains:

  • 4 web projects
    2 ASP.NET Framework (v4.5), 2 ASP.NET Core (v2.0 and v2.1)
  • 2 Azure functions
  • 1 desktop project
  • 6 .net standard projects
    Containing services, Entity Framework Core, Language resx files, etc.
  • 2 .net framework projects
    In progress of migrating everything to .net standard, but that of course takes time.

The problems encountered so far:

  1. Migrating from entity framework to entity framework Core, and using that within a ASP.NET Framework project (not Core).
    This is always a hassle due the lack of documentation of correctly configuring everything, it took a great amount of time to use the same back-end code base for all 4 web apps. Installing the correct dependencies so that everything matches up took a long time.

  2. Using Azure Functions, together with EF core.
    In a period of time there was no clear answer to how to configure this correctly. Eventually some package versions were hard-coded, and thus enforcing me to downgrade EF Core. A few months later another developer ran into the same issue on our time (he tried to use the latest versions again).
    Here it was a big hassle to get to know the correct versions that need to be used, that consolidate everything.

  3. Version mismatching within new Asp.NET Core 2.1.
    I will just paste the error here that is produced by the CI (in Azure Dev Ops), error does not appear locally!

The nuget command failed with exit code(1) and error(NU1107: Version conflict detected for Microsoft.AspNetCore.Authentication. Reference the package directly from the project to resolve this issue. 
 Project.Web.Shop -> Project.Web.Controllers -> Microsoft.AspNetCore.Authentication.Cookies 2.1.2 -> Microsoft.AspNetCore.Authentication (>= 2.1.2) 
 Project.Web.Shop -> Microsoft.AspNetCore.App 2.1.0 -> Microsoft.AspNetCore.Authentication (= 2.1.0).
Errors in D:\a\1\s\Project.Web.Shop\Babywatcher.Web.Shop.csproj
    NU1107: Version conflict detected for Microsoft.AspNetCore.Authentication. Reference the package directly from the project to resolve this issue.
     Project.Web.Shop -> Project.Web.Controllers -> Microsoft.AspNetCore.Authentication.Cookies 2.1.2 -> Microsoft.AspNetCore.Authentication (>= 2.1.2)
     Project.Web.Shop -> Microsoft.AspNetCore.App 2.1.0 -> Microsoft.AspNetCore.Authentication (= 2.1.0).)

Packages failed to restore

Installing that package in the project produces the next error for the dependency for Microsoft.AspNetCore.App, so I basically have to do it for all of them? Or downgrade again?

image

Oh look! I cannot change this, not clear what SDK I should change then...

This is so frustrating because before I began on some new features with a new Asp.Net core web project I upgraded everything to, what seems to me the best version, 2.1.1. Now I need to re-do EVERYTHING.

This just points me to an overall big problem within big projects: If you don't have a huge team where 2-5 developers are constantly keeping track of versions for all technologies used, you basically are getting kind of scared to upgrade, because "now it works, an update might break things". But on the other hand you want to upgrade to benefit from performance, security, improvements and avoid an un-upgradable project.

###Solution:

I would propose a tool that would scan my entire solution, check all the newest compatibility dependencies (focused on microoft dependencies and some populair dependencies like Newtonsoft.Json) that can tell me what version it is best to upgrade to. Instead of running into a trial-and-error, upgrading till errors disappear or like me: running into issues on CI after doing everything.

I understand that this is not really a 'documentation' thing, but I do think this is missing for a lot of developers. Of course business goals always go infront, and every developer wants to focus on producing a solution instead of wasting time on dependency miss-match issues and what not.

Look for example at this post: aspnet/Universe#1180 it took someone a considerable amount of time to produce a table to correctly explain what scenarios produce what outcome. It's just crazy and something should be done about this.

@Ruud-cb Ruud-cb changed the title .NET Dependency tool .NET Dependency compatibility tool Nov 26, 2018
@guardrex
Copy link
Collaborator

Hello @Ruud-cb ... As you correctly state, this isn't an actionable documentation issue for a specific ASP.NET Core topic. There's only a tiny handful of doc authors here, and we mostly work issues pertaining to the ASP.NET Core docs. We don't handle general .NET Core feedback. Management receives feedback via a variety of channels, including UserVoice.

For .NET Core dependency management documentation issues, that's handled by a different team than the team that maintains this doc set. Their docs are here: .NET Core docs. Their repo is here: .NET Core docs GH repo.

Since we don't have an actionable doc issue for a specific ASP.NET Core doc, I'll close this. We can re-open this issue if you would like to discuss anything further. I wish I could provide more help, but there isn't much we can do on this doc set to alleviate your concerns. Try reaching out to management on UserVoice, Twitter, blog feedback, MS-sponsored events, etc. If you spot a .NET Core docs issue, I know that the team handling that doc set would be happy to hear from you. If you spot a problem with one of our topics, there's a Content feedback button at the bottom of every topic, and we look forward to your feedback on our topics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants