I found a similar workaround to Martin, but without the side effect of requiring copies of the DLLs to be in your project folder. (I still haven't worked out how to add the missing non-English resource assemblies.)
Step 0: If you have indirect dependencies - vsix depends on project B which uses NuGet package C which depends on package D - make sure that the DLLs of C and D are included in your vsix's bin\Debug folder. If not, just to be safe, I suggest adding references to package C and D to the vsix project. In my case, VS decided to include some indirect dependencies like System.Numerics.Vectors.dll and System.Threading.Tasks.Extensions.dll in the VSIX, but it decided to leave out four indirect dependencies: Microsoft.CodeAnalysis.dll, Microsoft.CodeAnalysis.CSharp.dll, System.Reflection.Metadata.dll and System.Collections.Immutable.dll.
Step 1: Rebuild and find out what files are missing from the VSIX. You can rename your .vsix to .zip to find out what is inside, and compare that to the contents of bin\Debug in your vsix's project folder to find missing items.
Step 2: Use "Add > Existing Item..." with "Add as Link" to add a missing DLL to your project (if you are unsure about where the DLL is located, find it in your list of References and look at its Path property in the Properties panel.)
Step 3: Repeat Step 2 for every missing DLL.
Step 4: Select the new DLLs and in the Properties panel, set the "Include in VSIX" flag.
In my (old-style) csproj I end up with an ItemGroup
like this:
<ItemGroup>
<Content Include="..\packages\Microsoft.CodeAnalysis.Common.3.6.0\lib\netstandard2.0\Microsoft.CodeAnalysis.dll">
<Link>Microsoft.CodeAnalysis.dll</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="..\packages\Microsoft.CodeAnalysis.CSharp.3.6.0\lib\netstandard2.0\Microsoft.CodeAnalysis.CSharp.dll">
<Link>Microsoft.CodeAnalysis.CSharp.dll</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll">
<Link>System.Collections.Immutable.dll</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="..\packages\System.Reflection.Metadata.1.6.0\lib\netstandard2.0\System.Reflection.Metadata.dll">
<Link>System.Reflection.Metadata.dll</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
</ItemGroup>
Step 5: Rebuild and verify that the files are now included in the vsix. You don't need to add the files to the list of Assets. Then test it in Visual Studio. Good luck!
P.S. It has crossed my mind that perhaps the reason the VSIX does not include these files is because VS knows that Visual Studio already has those files installed. But this explanation is unsatisfying because, for example, Visual Studio has copies of System.Memory.dll and System.Numerics.Vectors.dll but VS still chose to include those DLLs in my VSIX.
In any case, my extension cannot load Visual Studio 2019's copy of the files. I notice that my version of Microsoft.CodeAnalysis.dll is "3.6.0-4.20269.4+..." while the copy in C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\LanguageServices is "3.5.0-beta4-20153-05+..." (assuming that's the important one - I don't know, there are 5 other copies in Program Files). By downgrading my VSIX to use a version earlier than 3.5.0-beta4 (assuming beta versions are not on NuGet), perhaps my extension would be able to use Visual Studio's copy. But that's a test for another day, and even if it works, if I want to target both Visual Studio 2017 and Visual Studio 2019, I doubt I could target both versions simultaneously with the same vsix if I don't include all the DLLs I need in the vsix.