Open
Description
This was discovered moving Roslyn's VSIX projects to the new SDK.
Roslyn builds a number of VSIX projects and is very particular about which projects end up embedded in which VSIX. There are a number of patterns employed to accomplish this including
<ProjectReference Include="..\..\VisualStudio\Core\Impl\ServicesVisualStudioImpl.csproj">
<Project>{c0e80510-4fbe-4b0c-af2c-4f473787722c}</Project>
<Name>ServicesVisualStudioImpl</Name>
<Private>false</Private>
</ProjectReference>
The intent here is to reference the project but not include its contents in the resulting VSIX by means of <Private>false</Private>
. This continues to work in the new SDK.
However implicit transitive references ends up pulling in all of the projects that ServicesVisualStudioImpl.csproj. None of those projects are marked as <Private>false</Private>
and as a result end up included in the VSIX. This both bloats (in some cases 100 fold) and functionally breaks our VSIX (some cases 100 fold).