Пакет Nuget, содержащий разные версии DLL в папках ref / lib - PullRequest
0 голосов
/ 02 октября 2018

У меня проблема с System.ComponentModel.Annotations v4.5.0.

После обновления до этой версии мое приложение вылетает из-за FileLoadException (Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.0.0 Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a).

Этот пакет используетсяв проекте библиотеки с таргетингом netstandard2.0, который затем используется проектом Webapi с таргетингом на net461.

. При проверке выяснилось, что этот пакет nuget содержит несовпадающие версии в ref и libпапки для netstandard2.0 target (для net461 target версии совпадают).

Версия в ref/netstandard2.0, которая используется для компиляции, - 4.2.0.0, но в lib/netstandard2.0, которая используется во время выполнения, - 4.2.1.0, поэтому у меня ошибка.Вы можете скачать пакет из NuGet Gallery и заметить несоответствие, проверив его содержимое.

Является ли эта версия msimatch в том же пакете nuget ожидаемой, в этом случае я буду использовать перенаправление привязки или этопроблема с самим пакетом?

1 Ответ

0 голосов
/ 02 октября 2018

Вам нужно использовать перенаправление привязки в вашем app.config для разрешения версии,

, вот пример:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
        <assemblyIdentity name="System.ComponentModel.Annotations" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
    </dependentAssembly>
</assemblyBinding>
...