尽管标记为 PrivateAssets,但 nuget 包中的项目依赖项仍被复制到应用程序 bin 文件夹
Project dependencies in a nuget package are being copied to the application bin folder despite being marked PrivateAssets
我有一个名为 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。
我不想要那样,因为它只用于构建时间。
如何阻止它被运送到应用程序。
谢谢
<PrivateAssets>all</PrivateAssets>
不适用于您的情况。当您在 Project C 中使用此节点时,它将阻止另一个名为 Project D 的项目,该项目引用了 Project C 没有访问 nuget 包。
换句话说,当您将此节点用于项目C的nuget包时,以及其他有参考的项目Project C,其他项目无法访问nuget包,它只是当前Project C的私有属性。
所以无法解决你的需求,无法处理nuget包的依赖
解决方案 1
只需使用 Delete
任务,将其添加到引用 MyHelper nuget 包的项目中:
<Target Name="RemoveTheFiles" AfterTargets="AfterBuild">
<ItemGroup>
<File Include="$(TargetDir)B.dll">
</File>
</ItemGroup>
<Delete Files="@(File)"></Delete>
</Target>
我有一个名为 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。 我不想要那样,因为它只用于构建时间。 如何阻止它被运送到应用程序。 谢谢
<PrivateAssets>all</PrivateAssets>
不适用于您的情况。当您在 Project C 中使用此节点时,它将阻止另一个名为 Project D 的项目,该项目引用了 Project C 没有访问 nuget 包。
换句话说,当您将此节点用于项目C的nuget包时,以及其他有参考的项目Project C,其他项目无法访问nuget包,它只是当前Project C的私有属性。
所以无法解决你的需求,无法处理nuget包的依赖
解决方案 1
只需使用 Delete
任务,将其添加到引用 MyHelper nuget 包的项目中:
<Target Name="RemoveTheFiles" AfterTargets="AfterBuild">
<ItemGroup>
<File Include="$(TargetDir)B.dll">
</File>
</ItemGroup>
<Delete Files="@(File)"></Delete>
</Target>