Search code examples
visual-studio-2017nuget

PackageReference for NuGet packages in C++ projects


I'm part of a project where we use packages.config files for NuGet packages in Visual Studioe and then include each package dependency through the Import statement in our project files.

This works fine if you always want the packages, but we have some conditional packages that we'd like to exclude if the developer doesn't need/want it. I found the PackageReference tag, that would make the dependency much cleaner and would let us include the packages conditionally.

It seems to be fully supported in C# projects, but I can't figure out if it's supported for C++ projects or not.

I have tried deleting all of our packages.config files and replacing all references with PackageReference tags, but the PackageReference tag doesn't seem to be picked up by the package manager. I've gone through all the "migration tools" that I could find for Visual Studio too, with no luck.

Is it possible to use it for C++ projects? If not, is there a workaround that lets me exclude certain packages conditionally?

I'm using Visual Studio Professional 15.6.7.


Solution

  • Is it possible to use it for C++ projects?

    At this moment, PackageReference is not yet supported for C++ projects. NuGet team is evaluating it to support for future releases. You might had made it work through some hacks but if you create a new c++ project and tries to install this package as PackageReference, it won't allow you. So I recommend you to continue using packages.config for your c++ projects and libraries.

    Besides, you can add your request or vote for this feature on the Visual Studio UserVoice site: Use PackageReference in vcxproj. When there are enough communities vote and add comments for this feedback, the product team member will take this feedback seriously.

    If not, is there a workaround that lets me exclude certain packages conditionally?

    You can include the conditional references in the custom targets file and deploy the dlls in the tools folder of the package so they are not added as references by Nuget automatically.

    certified: NuGet update and conditional references

    Hope this helps.