As some of you already know, I'm a proponent of DRY : Do Repeat Yourself, but code reuse has some value and nuget is a good way to manage it.

 

So far, the advantages I see in using a package manager are:

  • easy get/update of external projects and their dependencies
  • on demand dependency update (instead of forced dependency update)
  • makes it easier to modularize dependencies

All this thing are out of the box when using OSS projects published on nuget.org, and you can host your own nugets using NuGet.Server.

 

The debugging story is also quite good. symbolsource.org can host symbols and source packages and be used as source server. You can directly step in your favorite OSS source code without having to compile it yourself. They even provide private repositories.

 

But sending your company's source code to an external service is not always compatible with internal policy.

 

In this configuration, using your own nugets leads to a poor dev experience when you have no way to step in your own code : compiled in Release and potentially not your latest code version, indicating the source code in another directory will not give good results.

 

You need a source server.

 

NuRep to the rescue

 

NuRep is a nuget repository based on NuGet.Server but it is also a symbols + code server.

 

When creating your nuget package, specify the –Symbols flag, and nuget will create a .nupkg and a .symbols.nupkg that you can push to NuRep (http://myserver/nurep/api/v2/package).

 

Then configure visual studio's symbols servers (Tools / Options / Debugging / Symbols / add http://myserver/nurep/symbols )

 

Don't forget to enable source server in Debugging / General options, and to disable Just my code.

 

That's it.

 

Now you'll step into the exact code that was used to compile the nuget version.

 

Have fun !