代码之家  ›  专栏  ›  技术社区  ›  Viktor Griph

禁用特定MsBuild项目的可传递PackageReference依赖项

  •  2
  • Viktor Griph  · 技术社区  · 6 年前

    考虑以下几点 投影一个引用NuGet包B和C,每个包都包含一个使用PackageReference的程序集。 项目D有一个对a的项目引用。

    可传递的依赖关系案例D指向引用A、B和C。 错误CS0433:类型“X”同时存在于“A”和“B”中

    2 回复  |  直到 6 年前
        1
  •  2
  •   Viktor Griph    6 年前

    最后我用了一个 workaround 将可传递依赖项移动到别名以绕过编译器错误。

    <Target Name="ChangeAliasesOfBNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
      <ItemGroup>
        <ReferencePath Condition="'%(FileName)' == 'B'">
          <Aliases>nonmerged</Aliases>
        </ReferencePath>
      </ItemGroup>
    </Target>
    

        2
  •  1
  •   Leo Liu    6 年前

    禁用特定MsBuild项目的可传递PackageReference依赖项

    如果我理解正确的话,你可以试着使用物业 <PrivateAssets>all</PrivateAssets> PrivateAssets="all" 对于 PackageReference

    enter image description here

    <PackageReference Include="B" Version="1.0.0" PrivateAssets="all">
    <PackageReference Include="C" Version="1.0.0" PrivateAssets="all">
    

    你可以检查文件 Controlling dependency assets this thread

    希望这有帮助。