我正在编写自定义MSBuild目标,它在特定条件下将<PackageReference>
中的部分<ProjectReference>
替换为<Target Name="ApplyProjectRedirects"
BeforeTargets="_GenerateDotnetCliToolReferenceSpecs;_GenerateProjectRestoreGraphPerFramework;_GenerateRestoreGraphWalkPerFramework;CollectPackageReferences;BeforeResolveReferences;ResolveAssemblyReferences"
AfterTargets="PaketRestore">
。
我有以下msbuild目标:
<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>
<ItemGroup>
我的项目引用在Visual Studio依赖关系中不可见。但是,项目会按预期进行编译。
我发现,当目标在<PackageReference>
之前运行时,目标中包含CollectPackageReferences
的{{1}}受到尊重。但是,我无法用任何目标(甚至第一个目标)填充<ProjectReference>
。
Visual Studio如何用解决方案项目填充依赖项?