У меня есть проект со ссылкой на пакет NuGet на snt.ScintillaNet.FindReplaceDialog
.
Этот пакет, в свою очередь, имеет ссылку на неподписанный пакет ScintillaNET
.
Мое приложение должно быть подписано, поэтому я сослался на подписанную версию пакета ScintillaNET
.
Это работает хорошо, и приложение работает нормально. Однако при сборке я получаю следующее предупреждение:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets (2106, 5): предупреждение MSB3243: Нет способа разрешить конфликт между «ScintillaNET, версия = 3.6.3.0, Culture = нейтральный, PublicKeyToken = d42c48f11a620156» и «ScintillaNET, версия = 3.6.3.0, Culture = нейтральный, PublicKeyToken = null». Выбор «ScintillaNET, Версия = 3.6.3.0, Культура = нейтральный, PublicKeyToken = d42c48f11a620156» произвольно.
Это имеет смысл, система сборки видит 2 ссылки, одну со знаком и одну без знака.
Этозатем выбирает тот, который я хочу (подписал), и все работает нормально.
Я хочу удалить это предупреждение из сборки.
Я пытался поместить MSB3243
в качестве исключения предупреждения в проекте, нотак как это предупреждение MSBuild, а не предупреждение компилятора, оно не может быть проигнорировано.
Я придумал очень уродливый хак, который я собираюсь опустить как ответ, чтобы помочь кому-то еще, кто сталкивается с той же проблемой(и себя, когда я забыл свое решение).