Ошибка связывания in.net 4


Я пытаюсь запустить protobuf-net v2 из моего проекта .net 4.

Я взял dll из каталога. net3 и вставил в свой проект, но теперь я получаю:

Не удалось загрузить файл или сборку 'protobuf-net, Version=2.0.0.450, Culture=neutral, PublicKeyToken=257b51d87d2e4d67' или одну из его зависимостей. Определение манифеста расположенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Я попытался добавить это к моему сеть.конфигурация:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="protobuf-net" publicKeyToken="257b51d87d2e4d67" culture="neutral" />
    <bindingRedirect oldVersion="2.0.0.450" newVersion="4.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

Но не уходи. Какие-нибудь советы?

1 3

1 ответ:

В большинстве случаев здесь вообще не должно быть никакой необходимости в привязке сборки. Если вы получаете ошибки, не находя предыдущую версию , то вы можете добавить привязку от 1.0.0.278 до 2.0.0.450 (например; используйте фактические номера версий).

Привязка к 4.0.0.0 неверна; вы уже используете правильную сборку. Единственное различие между библиотекой dll 2.0 и библиотекой dll 3.0-это некоторые связанные с WCF API в общедоступном интерфейсе. Нет никакого конкретного 4.0 dll просто потому, что 4.0 не вводит никаких новых функций API, которые влияют на эту библиотеку. Поэтому, DLL из папки net30-это абсолютно нормально для .net версии 4.0.

Если вы используете пакет nuget (начиная с r452), он автоматически выберет соответствующие библиотеки DLL для вашего проекта.