[VS 2017] -System.IO.FileLoadException: Could not load file or assembly

[VS 2017] -System.IO.FileLoadException: Could not load file or assembly

Ola pessoALL,

Dando continuidade aos erros encontrados na migração para o VS 2017, hoje vamos falar de um outro erro comum na migração: System.IO.FileLoadException : Could not load file or assembly .
Esse erro acontece quando atualizamos as dependências do projeto para as versões mais recentes mas algum pacote procura por uma versão antiga, por exemplo: Atualizamos o pacote Newtonsoft.Json para a versão 10.x e algum pacote procura pela versão 9.x

FileLoadException

A causa do erro é a falta do arquivo de bindings na compilação. Nas aplicações .net tradicionais isso era feito no web.config ou no app.config.

Solução 1 - Adicionar o arquivo .config manualmente

Podemos resolver esse erro de uma forma simples adicionando um arquivo .config na nossa aplicação com as configurações de bindings.

Appconfig

Solução 2 - Gerar o arquivo de bindings automaticamente

O problema com a primeira solução é que temos que alterar o arquivo toda vez que uma nova atualização é realizada.
Mas podemos configurar o visual studio (funciona usando o dotnet cli também) para gerar o arquivo com os bindings automaticamente. Para isso siga os passos a seguir:

  • Edite seu arquivo *.csproj
  • No primeiro <PropertyGroup> adicione as duas entradas a seguir:
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  • Salve o arquivo e recompile o projeto.

csproj editado

Prontinho pessoALL, agora não teremos mais System.IO.FileLoadException.
Espero ter ajudado, até a próxima.