Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How should I include Package References in a VSIX project

My solution creates a Visual Studio Package from multiple projects, using multiple NuGet packages.

All of the Nuget packages are specified in the project files using PackageReference (rather than the older packages.config file). I am using Visual Studio 2019.

I have had a problem, that the DLLs referenced by NuGet Packages are not included in the VSIX installation.

There is a solution to this problem, described in this article by Daniel Cazzulino, by adding the following code to the project file:

<PropertyGroup>
  <GetVsixSourceItemsDependsOn>$(GetVsixSourceItemsDependsOn);IncludeNuGetResolvedAssets</GetVsixSourceItemsDependsOn>
</PropertyGroup>
<Target Name="IncludeNuGetResolvedAssets" DependsOnTargets="ResolveNuGetPackageAssets">
  <ItemGroup>
    <VSIXCopyLocalReferenceSourceItem Include="@(ReferenceCopyLocalPaths)"  /> 
  </ItemGroup>
</Target>

This does work, but it blows up the size of the installation from about 20MB to about 40MB.

The installation now includes a lot of PDB files, which I don't really need.

More significantly, it brings in about 46MB of Visual Studio DLLs which are not necessary, because they are part of Visual Studio.

Is there a better way to ensure that the referenced NuGet packages are included in the VSIX, without inflating the installation with these other files?

like image 427
Phil Jollans Avatar asked Jan 30 '26 22:01

Phil Jollans


1 Answers

You can use a simple script like this:

<Target Name="IncludeNuGetPackageReferences" AfterTargets="GetVsixSourceItems">
  <ItemGroup>
    <VSIXSourceItem Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.NuGetPackageId)' == 'Newtonsoft.Json'" />
    <VSIXSourceItem Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.NuGetPackageId)' == 'xxx'" />
 ... </ItemGroup>
</Target>

You can specify what assemblies should be included into .vsix . And it won't copy the unnecessary VS assemblies after tests in my machine. Hint from smourier, thanks to him.

Hope it helps:)

like image 133
LoLance Avatar answered Feb 02 '26 12:02

LoLance



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!