Can a package contain a package? - c#

Installing Packages from Nuget are one of the most efficient ways for developing C# applications. It's a huge time saver.
However, can a Package I install from Nuget also contain a package(s) installed within it? If so how can I view sub-packages within a Package?

Short answer is yes, you can use packages inside of other packages. They are called dependencies, and the other packages will get installed along side the first package. Here's the Microsoft Documentation on nuget package dependency.
EDIT:
Here's how to view/manage these in visual studio. You can view all other packages in the dependencies section shown below. This package depends on System.ValueTuple with a version of 4.5.0 or greater.

Related

How to stop .Net NuGet Package Manager from installing other packages while installing Npgsql Package

I'm adding the PosGreSQL NuGet Package to my solution. As a part of this, there are list of other NuGet Packages that are getting installed automatically which I don't intend to install. How to get rid of this?
Below are the packages installed automatically along with PosGreSQL Nuget Package.
Microsoft.Bcl.AsyncInterfaces.7.0.0, Microsoft.Bcl.HashCode.1.1.1, Microsoft.Extensions.Logging.Abstractions.6.0.0, System.Buffers.4.5.1, System.Collections.Immutable.7.0.0, System.Diagnostics.DiagnosticSource.6.0.0, System.Memory.4.5.5, System.Numerics.Vectors.4.5.0, System.Runtime.CompilerServices.Unsafe.6.0.0, System.Text.Encodings.Web.7.0.0, System.Text.Json.7.0.0, System.Threading.Channels.7.0.0, System.Threading.Tasks.Extensions.4.5.4, System.ValueTuple.4.5.0
I tried deleting the additional Nuget packages manually but Build Solution again adds these NuGet Packages.
How to get rid of this?
You don't. Because those are dependencies of the package you want to install. The package you want to use needs those other packages to work.
You should basically just not worry about them, unless a dependency causes a very specific issue. You could potentially pick and choose between different versions of the package you want, to try to find a version with fewer dependencies, but that's not normally worth doing.

Programmatically upgrade Nuget package on DLL load

My Scenario:
I am writing one C# class library and I need to use one of the nuget package from a private feed. There may be a chance that new version of the dependent nuget package would have been released.
My requirement here is "I want to check the nuget feed for latest version and if available upgrade the nuget package with the latest version". Like deleting the existing version and install new version or any other way.
I was trying with NuGet.Client (https://learn.microsoft.com/en-us/nuget/reference/nuget-client-sdk), But not found exact solution.
Could you please suggest me a solution for my scenario.

How do I install Newtonsoft.json for Visual Studio 2010?

I am trying to make Newtonsoft.json available for use in my local Visual Studio 2010 projects. I installed NuGet.Tools on my system. Now I see an item in the Solution Explorer called Service References that wasn't there before, but I don't understand how to use that to reference the Newtonsoft package I also downloaded, which is currently in my Downloads folder. Do I need to move the package to a different location to reference it?
Thanks for your help.
You can right click on the project where you want to install newtonsoft nuget package.
You will find an option "Manage NuGet packages".
Then search online for "newtonsoft".
This would add a packages.config file in your project (depending on which framework you are targeting to ).
this new file contains all the nuget dependencies required for this project.
Refer this blog for more details
VS2010 is old and is unable to update to the latest NuGet version. This means that adding recent packages will often fail; however, you can often add an older version of a package that has a compatible NuGet version and it will work. This causes the suggested answer by #ManojChoudhari to fail for me. In the case of Newtonsoft.Json, the following worked using the Package Manager Console:
Install-Package Newtonsoft.Json -Version 9.0.1

Is there a way to automatically install a specific version of a Nuget Package at build time?

I have some 3rd party DLL's i need migrating into a TFS Nuget Feed, and I haven't been able to find many articles on the internet about installing specific versions of a given Nuget Package at runtime, could anybody link me to some relevant material and/or provide some pointers to this effect?
Ideally this would be done as an MSBuild Target I think?
Thanks in Advance :)
To promote a cleaner development environment and to reduce repository
size, NuGet Package Restore installs all referenced packages before a
project is built. This widely-used feature ensures that all
dependencies are available in a project without requiring those
packages to be stored in source control (see Packages and Source
Control on how to configure your repository to exclude package
binaries).
This should help NuGet Package Restore
One of the topics
MSBuild-integrated restore in Visual Studio, for NuGet 2.6 and
earlier.

How to override nuget with custom built assembly?

One of the nuget packages that I am using have a minor problem that I have solved with a pull request. I would however want to include the fix in the build of my own application and I do not want to wait until the fix is released as part of a new version of the nuget package. Which procedure should I now follow to achieve this?
Can I keep my package reference and override the assembly provided by nuget with my own custom version of the assembly? I have tried to just copy the custom assembly to the corresponding location in nuget packages folder but it does not work.
Do I have to remove the nuget package reference and keep the custom library in my version control until the fix gets released?
Especiall when you're working with a team or using a build server, you'll want to not do an in-place replace of the same package version.
You can either add a direct reference to the custom-built assembly (and be sure to version it or to include the source in source control so your colleagues or the build server can compile it themselves), or create a new NuGet package with a higher version number and upgrade to that version.
If you don't have a private NuGet server, you can simply add a (shared) directory as package source for your custom built package, as explained in How to install a Nuget Package .nupkg file locally?.
It may work with the same package version, but then you'll have to remove and reinstall it, and make sure it isn't cached anywhere so the old package won't simply be added again. So you better just change the version number.

Categories

Resources