PrivateAssets='All' 是什么意思?

Rya*_*yne 16 nuget nuget-package fody-propertychanged .net-core

当我构建我的 .NET Core (NETStandard v2.0) 项目时,我收到以下警告:

ViewModels:[FodyPackageReference] Fody:PropertyChanged.Fody 的包引用不包含 PrivateAssets='All'

该警告参考了PropertyChanged.Fody NuGet 包。

虽然警告不会停止构建,但我想解决警告。但是,我不明白它试图传达什么。

Rya*_*yne 18

PrivateAssets 是用于控制依赖资产的元数据标签。

您可能纯粹将依赖项用作开发工具,并且可能不想将其暴露给将使用您的包的项目。在这种情况下,您可以使用 PrivateAssets 元数据来控制此行为。

项目文件中的包引用(PackageReference)

在您的情况下,除非您想向PropertyChanged.Fody消费者公开(即您正在发布一个库),否则在 .csproj 文件中设置PrivateAssetsAll将删除警告。

<Project Sdk="Microsoft.NET.Sdk">
    <ItemGroup>
      <PackageReference Include="PropertyChanged.Fody" Version="3.3.1" PrivateAssets="All" />
    </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

  • @rios0rios0 Costura.Fody 是一个与 PropertyChanged.Fody 完全独立的软件包(请参阅 https://github.com/Fody/Costura)。我刚刚尝试了一下,上面的代码仍然可以正常工作。 (4认同)
  • 非常感谢,这很好,很有帮助。我发现,有时 .csproj 中的符号如下:`&lt;PackageReference Include="PropertyChanged.Fody"&gt; &lt;Version&gt;3.3.1&lt;/Version&gt; &lt;PrivateAssets&gt;All&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; ` (3认同)
  • @rios0rios0 发生了什么变化?另外,为什么“包含”或“版本”属性中的内容如此重要?这个问题和答案是关于 PrivateAssets 属性的,而不是关于特定依赖项的。 (2认同)