Home > database >  How do I quickly make changes to custom libraries that generate and consume NuGet packages?
How do I quickly make changes to custom libraries that generate and consume NuGet packages?

Time:10-07

My question is similar to this one. I have a solution, A, which contains projects B and C:

A
|-B  ---> B.nupkg
|          ^
|-C  ------|

In the past, C used a project reference to B. Now, I've converted B so that it generates a NuGet package when I build (<GeneratePackageOnBuild>true</GeneratePackageOnBuild> in B.csproj), and I reference this in C. I do this because many consumers only want B but not C.

So now if I want to make a change to B and debug it, I have to do the following:

  1. Build the solution
  2. Copy B.nupkg from bin\Debug to a central location
  3. Rebuild the solution again (and possibly clear my NuGet caches)
  4. Run

In past, with project references, all I had to do was build and run after chaning B and I could step through my newly changed code. How do I get back to the one-click process I had before with project references? Is there a way to use project references in Debug mode and NuGet packages in Release mode?

CodePudding user response:

It sounds like the projects B and C are in the same (or near-enough) location and solution (A); in that case, you're over-complicating this hugely.

Inside the solution, just use project references between B and C (in whichever direction you require). That's absolutely fine and expected - you can debug, build etc B and C together, and everything will work fine, without having to copy anything around during development. When you're ready to do a deployment for other consumers (either locally or via CI), just build everything together, making sure that both B and C are configured to generate NuGet packages (it sounds like you've already done this), and upload/copy both NuGet packages to your NuGet store, at the same time.

In the output nupkg files, the project references will be translated to NuGet package references automatically; you don't need to do anything.

  • Related