Как Visual Studio заполняет узел «Зависимости» в обозревателе решений - PullRequest
0 голосов
/ 25 октября 2018

Я пишу пользовательскую цель MSBuild, которая заменяет некоторые из <PackageReference> на <ProjectReference> при определенных условиях.

У меня следующая цель msbuild:

<Target Name="ApplyProjectRedirects"
      BeforeTargets="_GenerateDotnetCliToolReferenceSpecs;_GenerateProjectRestoreGraphPerFramework;_GenerateRestoreGraphWalkPerFramework;CollectPackageReferences;BeforeResolveReferences;ResolveAssemblyReferences"
      AfterTargets="PaketRestore">

    <ItemGroup>
      <!-- remove packages we are redirecting to projects, and include the projects -->
      <PackageReference Remove="@(ExcludePackageReferences)" />
      <ProjectReference Include="@(IncludeProjectPaths)" />
    </ItemGroup>

    <ItemGroup>
      <!-- include the packages in visual studio 'nuget' display, so we know what we redirected -->
      <PackageReference Include="@(ExcludePackageReferences)">
        <ExcludeAssets>all</ExcludeAssets>
      </PackageReference>
    </ItemGroup>

</Target>

И ссылки на мои проекты невидимы в Visual Studio Dependencies.Однако проект компилируется, как задумано.

Я обнаружил, что <ItemGroup> с <PackageReference> внутри цели соблюдается, когда цель запускается до CollectPackageReferences.Однако я не смог заполнить <ProjectReference> какой-либо целью, даже первой.

Как Visual Studio заполняет зависимости проектами решений?

...