【问题标题】:Project dependencies in a nuget package are being copied to the application bin folder despite being marked PrivateAssets尽管标记为 PrivateAssets,但 nuget 包中的项目依赖项仍被复制到应用程序 bin 文件夹
【发布时间】:2020-11-20 11:25:43
【问题描述】:

我有一个名为 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。 我不希望这样,因为它仅用于构建时间。 如何阻止它被运送到应用程序。 谢谢

【问题讨论】:

    标签: visual-studio nuget nuget-package project-reference msbuild-projectreference


    【解决方案1】:

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

    换句话说,当您将此节点用于 Project C 的 nuget 包时,以及引用 Project C 的其他项目时strong>,其他项目无法访问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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 2019-03-19
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2010-10-12
      • 2011-06-22
      • 1970-01-01
      相关资源
      最近更新 更多