Что означает PrivateAssets=’All’?

#.net-core #nuget #nuget-package #fody-propertychanged

#.net-core #нагет #nuget-package #fody-propertychanged

Вопрос:

Когда я создаю свой проект .NET Core (NETStandard v2.0), я получаю следующее предупреждение:

ViewModels: [FodyPackageReference] Fody: ссылка на пакет для изменения свойств.Fody не содержит PrivateAssets=’Все’

Предупреждение относится к свойству, измененному.Пакет Fody NuGet.

Хотя предупреждение не останавливает сборку, я хотел бы устранить это предупреждение. Однако я не понимаю, что он пытается сообщить.

Ответ №1:

PrivateAssets это тег метаданных, используемый для управления активами зависимостей.

Возможно, вы используете зависимость исключительно как средство разработки и, возможно, не захотите предоставлять ее проектам, которые будут использовать ваш пакет. В этом сценарии вы можете использовать метаданные PrivateAssets для управления этим поведением.

Ссылки на пакеты (PackageReference) в файлах проекта

В вашем случае, если вы не хотите предоставлять PropertyChanged.Fody доступ потребителю (т. Е. Вы Выпускаете библиотеку), Установка PrivateAssets All в вашем файле .csproj удалит предупреждение.

 <Project Sdk="Microsoft.NET.Sdk">
    <ItemGroup>
      <PackageReference Include="PropertyChanged.Fody" Version="3.3.1" PrivateAssets="All" />
    </ItemGroup>
</Project>
 

Комментарии:

1. Большое спасибо, это здорово и помогло. Я обнаружил, что иногда обозначения в .csproj выглядят так: <PackageReference Include="PropertyChanged.Fody"> <Version>3.3.1</Version> <PrivateAssets>All</PrivateAssets> </PackageReference>

2. Это было изменено. Пожалуйста, обновите комментарий следующим образом: <PackageReference Include="Costura.Fody" Version="5.3.0" PrivateAssets="All"/> .

3. @rios0rios0 Что изменилось? Кроме того, почему важно, что вы добавляете в атрибуты Include или Version ? Этот вопрос и ответ касаются атрибута PrivateAssets, а не конкретной зависимости.

4. @RyanPayne пожалуйста, попробуйте сделать то, что вы сказали, в новой версии пакетов. И вы получите сообщение об ошибке. Нет свойства с именем «PropertyChanged. Fody». Его больше не существует. Свойство «PrivateAssets» работает только в объявлении пакета, как я уже сказал.

5. @rios0rios0 Костура. Fody — это полностью отдельный пакет от PropertyChanged. Fody (см. github.com/Fody/Costura ). Я только что попробовал, и приведенный выше код по-прежнему работает нормально.