bjorkstromm / depends

Tool for generating dependency trees for .NET projects
MIT License
556 stars 43 forks source link

Screen Needs "Reset" After Quitting #28

Open vindicatorr opened 2 years ago

vindicatorr commented 2 years ago

Arch Linux Terminal: konsole

Whenever I quit your tool, my terminal goes awry with no text I type being displayed, as well as the prompt being stuck somewhere in the middle of the screen, and never moving to a new line after pressing enter. I have to $ reset to see my text, and I'll go ahead and add $ clear for good measure because when I reset, the prompt goes to the top of the screen, leaving all of the previous text remaining. Screenshot_20220429_021441_0

You can ignore everything below since I was going to start with that (non)"bug", that I think I figured out at the bottom. Title: "Dependency Depth?" How deep does the "depends" go? I started with a fresh ~/.nuget, and incrementally added to it with the basics like:

$ dotnet new console
$ dotnet new web
$ dotnet new grpc
...

... where the nuget package folder size grew to ~200MB. I looked for "unnecessary" (probably not really) stuff like packages not specific to my system. I was fine with that when it was previously ~13GB.

But when I did a restore on <pathTo>/omnisharp-roslyn/src/OmniSharp.Stdio.Driver/OmniSharp.Stdio.Driver.csproj, it took a good bit of time downloading packages where my nuget folder size grew to ~1.5GB (from ~200MB). Again, I looked at what was restored and saw packages that seem unrelated to my Arch Linux system (eg. *runtime.native.system.security.cryptography*, which included "osx" packages, even though I made sure to go through all of the .csproj files to remove PlatformTarget and RuntimeIdentifiers, and customize TargetFramework{,s}, while making sure to also specify my "wants" in the dotnet restore arguments like --runtime.

When I came across your tool, I took a look at that csproj I restored and saw NO reference to many packages (265 so far in ~./nuget/packages), like *runtime.native.system.security.cryptography*. Instead, ~130 dependencies(/packages?) were listed in your tool. The "fresh" nuget folder from my commands above resulted in ~60 packages. So while your tool may be showing ~130 dependencies, even if we were to dismiss those other original 60 packages (there would likely be overlap), there would still be ~75 packages not listed, but still happened to be downloaded during restore.

Could it be due to dependency depth? Or perhaps dependent packages may depend on other packages, but just not directly related to that particular project? You know... I'm actually leaning towards the latter being the case: https://www.nuget.org/packages/runtime.native.System.Security.Cryptography.OpenSsl/ I guess I'm not sure how to walk down/back the chain to draw that line from the .csproj to the runtime.native.System.Security.Cryptography.OpenSsl. I'm guessing it relates to the nuget dependency which is listed in Runtime depends for OmniSharp.Stdio.Driver.csproj, and Nuget.packaging is Reverse depend for System.Security.Cryptography.Pkcs