0

我有一个名为 MyHelper 的 .netcore2.0 应用程序。MyHelper 引用了一个名为 B 的 .netstandard2.0 项目。MyHelper 作为 nuget 包发布。

我只需要在构建时在其他项目和解决方案中使用 MyHelper,因此在我的其他项目中,我将此 nuget 包标记为私有:

<PackageReference Include="MyHelper" Version="1.0.0">
      <PrivateAssets>all</PrivateAssets>
</PackageReference>

但是,在我使用此 nuget 包的其他项目的输出文件夹中,存在 B.dll。我不希望这样,因为它仅用于构建时间。如何阻止它被运送到应用程序。谢谢

4

1 回答 1

0

<PrivateAssets>all</PrivateAssets>不适用于您的情况。当您在Project C中使用此节点时,它将防止另一个名为Project D的项目具有对Project C的项目引用而无法访问 nuget 包。

也就是说,当你将此节点用于C项目的nuget包以及其他引用C项目的项目时,其他项目无法访问该nuget包,它只是当前C项目的私有属性。

所以它不能解决你的需求,也不能处理nuget包的依赖。

解决方案 1

只需使用Delete任务,将其添加到引用MyHelper nuget 包的项目中:

<Target Name="RemoveTheFiles" AfterTargets="AfterBuild">
        
        <ItemGroup>
            <File Include="$(TargetDir)B.dll">          
            </File>
        </ItemGroup>

        <Delete Files="@(File)"></Delete>
                    
</Target>
于 2020-11-23T03:14:46.960 回答