Как подавить предупреждение «Обнаружены конфликты между разными версиями»? - PullRequest
0 голосов
/ 27 января 2019

В проекте у меня есть следующая схема ссылок:

References
+- AssemblyA 6.7.6643.0
+- AssemblyB
|  \- AssemblyA 7.0.0.0
\- AssemblyC
   \- AssemblyA 7.0.0.0

AssemblyB и AssemblyC являются ссылками NuGet, для которых нет понижения версии.Из-за обстоятельств, не зависящих от меня, обновление AssemblyA невозможно.Но я получаю это предупреждение:

Обнаружены конфликты между различными версиями "AssemblyA", которые не удалось разрешить.Эти конфликты ссылок перечислены в журнале сборки, когда подробность журнала установлена ​​на подробное описание.

Итак, я сделал именно это, и вот вывод:

Был конфликтмежду «AssemblyA, Version = 6.7.6643.0» и «AssemblyA, Version = 7.0.0.0».«AssemblyA, Version = 6.7.6643.0» был выбран, поскольку он был основным, а «AssemblyA, Version = 7.0.0.0» - нет.Ссылки, которые зависят от "AssemblyA, Version = 6.7.6643.0" [AssemblyA.dll].AssemblyA.dll Элемент файла проекта, который содержит ссылку "AssemblyA.dll".AssemblyA, Version = 6.7.6643.0 Ссылки, которые зависят от "AssemblyA, Version = 7.0.0.0" [].AssemblyB.dll Элемент файла проекта, который содержит ссылку "AssemblyB.dll".AssemblyB, Version = 7.0.0.0 AssemblyC.dll Элемент файла проекта, который содержит ссылку "AssemblyC.dll".AssemblyC, версия = 9.0.0.0

Она выбрала ту версию, которую хотела, но я все равно получаю предупреждение в Visual Studio.Поэтому я обновил перенаправление привязки app.config в надежде, что оно избавится от предупреждения:

<dependentAssembly>
  <assemblyIdentity name="AssemblyA" publicKeyToken="..." culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="6.7.6643.0" />
</dependentAssembly>

Но предупреждение сохраняется.Я подтвердил, что, если я обновлю AssemblyA до 7.0.0.0, это заставит предупреждение исчезнуть.Но, как я уже говорил ранее, по другим причинам, не зависящим от меня, я не могу обновить эту сборку прямо сейчас.

Есть ли способ подавить это предупреждение только для этого конкретного экземпляра?

Спасибо

1 Ответ

0 голосов
/ 28 января 2019

1.Это предупреждение появляется, когда компилятор проекта компилирует, он будет сбит с толку тем, какую версию .dll использовать, чтобы выдать предупреждение MSB3277.Обычно мы можем устранить это предупреждение, обновив старую версию или понизив версию.Но в этой ситуации, похоже, нет действительного способа устранить это предупреждение.

2. Более того, иногда мы можем подавить предупреждение, установив какое-либо свойство, но это не работает для предупреждений MSB, потому что предупреждения с префиксом MSB генерируются MSBuild, и в настоящее время нет действительного способа подавления предупреждения MSB.,

Специально для MSB3277 я тестирую с vs2017 свойство nowarn, #pargma, в proj, но, к сожалению, оно не работает.Мы можем найти похожие проблемы здесь: Как подавить определенное предупреждение MSBuild Подавить MSB4126

Итак, я боюсь, у нас нет действительного способа подавить MSB3277 в настоящее время.Извините за неудобства.

...