I'm working on creating a Visual Studio 2017 custom Check-In Policy extension. My current solution is structured as follows:
Note: I am taking advantage of the new NuGet PackageReference approach, which is why there is no packages.config file.
I believe I have setup my VSIX manifest appropriately since everything works perfectly when I don't reference Microsoft.Net.Http (originally I was hard-coding in values instead of retrieving the values). I'm not sure why the Microsoft.TeamFoundationServer.ExtendedClient NuGet package being included doesn't cause any issues, whereas the Microsoft.Net.Http NuGet package does.
I looked at the debug folder to see what is being compiled and I see every assembly necessary being pulled in, however if I unpack the VSIX (I renamed it to *.zip and unzipped it), only the project assembly is included; the Nuget referenced assemblies are not packaged in the VSIX package.
I came across a few resources, but nothing seems to work:
- VSIX Package doesn't include referenced project's dependencies
- VSIX with Project Templates and NuGet Packages
- How to include a Nuget package in a Visual Studio Extension (vsix)
- VSIX extension - How can I ensure a referenced dll or assembly is included in the VSIX file?
Every single one of these questions/answers do not seem to address my specific problem.
Update:
I believe it is possible that the tool used to generate the VSIX package does not support the new PackageReference feature of NuGet. If I utilize the older packages.config feature, everything works fine. I have put in a UserVoice Ticket to support the new NuGet feature.

I was able to successfully include NuGet packages in a template by performing the steps outlined in the following Microsoft tutorial: Packages in Visual Studio templates
I have seen others experiencing problems because of the NuGet packages they are using. For .NET Core, I have used Microsoft.Net.Http, although it does require Microsoft.BCL. Unless you are experiencing problems, I suggest leaving legacy systems as-is, especially since these namespaces seem to be moving targets.
It appears System.Net.Http is the correct choice, at least for .NET on the Windows platform. It is also worth nothing that this package has no external dependencies.
EDIT: It appears this could be related to bugs with
PackageReferenceitself. I see a similar documented bug described here.