Я знаю, что могу решить проблему, просто установив packageB непосредственно в свой проект с более высокой версией (которая не имеет уязвимости серьезности), чтобы устранить предупреждение. Однако у меня есть несколько проблем с этим:
- Это засорит мой csproj дополнительными зависимостями. Я предпочитаю включать только те зависимости, которые мне нужны. Кроме того, я могу забыть причину, по которой добавлена эта зависимость, и меня больше никогда не удалят.
- Мне нужно управлять более чем 100 проектами, поэтому добавить эту зависимость везде или там, где это необходимо, не так просто. Кроме того, это увеличит вероятность загрязнения.
Мой подход
- Я создал свой собственный SDK, который наследует от Microsoft SDK.
- В этом SDK я определил следующее в целевом файле:
Это решает проблему, связанную с тем, что я могу управлять этим централизованно, однако теперь этот пакет также включен в проекты, которым этот пакет вообще не нужен.
Код: Выделить всё
Version="1.0.1" PrivateAssets="all" Publish="true" IsImplicitlyDefined="true" Visible="false" /> - Я пробовал использовать такие теги, как
, но кажется, что все будет так, если вы уже включили пакет самостоятельно, а не для транзитивного пакета. - Я пробовал транзитивное закрепление пакета вот так:
файл реквизита:целевой файл:Код: Выделить всё
true trueНо я все равно получаю то же предупреждение/ошибкуКод: Выделить всё
$(NoWarn);NU1510