Зависимости проекта в пакете nuget копируются в папку bin приложения, несмотря на то, что они помечены как PrivateAssets

У меня есть приложение.netcore2.0 под названием MyHelper. MyHelper ссылается на проект.netstandard2.0 под названием B. MyHelper публикуется как пакет nuget.

Мне нужно использовать MyHelper в других проектах и ​​решениях только во время сборки, поэтому в других моих проектах я помечаю этот пакет nuget как частный:

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

Однако в выходной папке других моих проектов, использующих этот пакет nuget, присутствует B.dll. Я не хочу этого, поскольку это предназначено только для времени сборки. Как мне предотвратить его отправку в приложения? благодаря

1 ответ

Решение

<PrivateAssets>all</PrivateAssets>не работает в вашей ситуации. Когда вы используете этот узел в Project C, это предотвратит доступ к пакету nuget для другого проекта с именем Project D, в котором есть ссылка на проект C.

Другими словами, если вы используете этот узел для NuGet пакета от проекта С, а также другие проекты, которые есть ссылка на проект C, другие проекты не могут получить доступ к пакету NuGet и это только частная собственность текущего проекта C.

Таким образом, он не может удовлетворить ваши потребности и не может справиться с зависимостью пакета nuget.

Решение 1

Просто используйте Deleteзадача, добавьте это в свой проект, который ссылается на пакет Nuget MyHelper:

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

        <Delete Files="@(File)"></Delete>
                    
</Target>
Другие вопросы по тегам