Зависимости проекта в пакете 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>