Copiei meu projeto para uma máquina limpa do Windows 10 com apenas a Comunidade do Visual Studio 2015 e o SQL Server 2016 Express instalados. Não há outras versões da estrutura instaladas além daquelas instaladas no Windows 10 e VS2015 ou SQL Server.
Quando tento iniciar o projeto WebApi, recebo a mensagem:
Não foi possível carregar o arquivo ou o conjunto "System.Net.Http, Versão = 4.0.0.0, Cultura = neutro, PublicKeyToken = b03f5f7f11d50a3a" ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.
Os pacotes do projeto incluem:
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
Depois de criar o projeto com o .NET Framework 4.6.1, System.Net.Http
o arquivo não foi encontrado na bin
pasta
O caminho do arquivo aponta para:
C: \ Arquivos de programas (x86) \ Assemblies de referência \ Microsoft \ Framework.NETFramework \ v4.6.1 \ System.Net.Http.dll
O caminho do arquivo de System.Net.Http.Formatting
pontos para:
C: \ Development \ MyApp \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll
Todo o projeto deve ser direcionado para o item 4.5.1 ou existe outra maneira de referenciar os assemblies certos?
fonte
update-package xxx -reinstall
para todos os pacotes de nuget que estou usando. Também não funciona.Respostas:
Siga os seguintes passos,
web.config
Adicione isso ao
.csproj
arquivo:bin
pasta deve haver um(WebAppName).dll.config
arquivoweb.config
.csproj
arquivoDeveria funcionar
fonte
Alterando as informações de ligação em meu web.config (ou app.config) - enquanto um "hack", na minha opinião, permite avançar com seu projeto após uma atualização de pacote NuGet que afeta seu aplicativo e fornece o System.Net.Http erro.
Defina newVersion = "4.0.0.0"
fonte
Em um dos meus projetos, havia pacotes de nuget com a versão superior do System.Net.Http. e no meu projeto de inicialização, há referência ao System.Net.Http v 4.0.0, acabei de instalar o pacote nuget System.Net.Http no meu projeto de inicialização e o problema foi resolvido
fonte
A
,B
eC
.A
é o projeto de inicialização e não tem nada a ver com umB
ou outroC
.C
é um projeto de teste paraB
. A execução de meus testesC
falhou, porque eu não tinha um projeto de referência (System.Net.Http)A
.Alterar a seguir:
com o seguinte:
no web.config
fonte
Se você tiver vários projetos em sua solução, clique com o botão direito do mouse no ícone da solução no Visual Studio e selecione 'Gerenciar pacotes NuGet para solução' e clique na quarta guia 'Consolidar' para consolidar todos os seus projetos na mesma versão do DLLs. Isso fornecerá uma lista de montagens referenciadas para consolidar. Clique em cada item da lista e clique em instalar na guia que aparece à direita.
fonte
O bind-redirect acima não funcionou para mim, então comentei a referência a
System.Net.Http
inweb.config
. Tudo parece funcionar bem sem ele.fonte
Você pode corrigir isso, atualizando seu projeto para o .NET Framework 4.7.2. Isso foi respondido por Alex Ghiondea - MSFT . Por favor, vote-o como ele realmente merece!
fonte
Isso funcionará no .NET 4.7.2 com Visual Studio 2017 (15.9.4):
fonte
Tenho o mesmo problema e a única maneira de corrigi-lo é adicionar bindingRedirect ao app.confing como escreveu @ tripletdad99.
Mas se você tiver uma solução com mais projeto, é realmente uma chatice atualizar todos os projetos manualmente (e também, algumas vezes, depois de atualizar algum pacote de nuget, é necessário fazê-lo novamente). E é por isso que eu escrevi um script simples do PowerShell, que se todos os app.configs.
Exemplo de como usar:
Provavelmente não é perfeito e também será melhor se alguém o vincular à tarefa de pré-construção.
fonte
4.6.1-2 no VS2017, os usuários podem enfrentar a substituição indesejada de sua versão do System.Net.Http pela que o VS2017 ou o Msbuild 15 deseja usar.
Excluímos esta versão aqui:
C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
e aqui:
C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
Em seguida, o projeto é construído com a versão que referenciamos via NuGet.
fonte
Eu tinha isso, mas foi porque adicionei um pacote NuGet que atualizou os redirecionamentos de ligação. Depois que removi o pacote, os redirecionamentos ainda estavam lá. Removai todos eles e, em seguida, executei o update-package-reinstall. Isso adicionou os redirecionamentos corretos.
fonte
Verifique a versão da estrutura .net.
Minha estrutura .net original é uma versão mais antiga.
Depois de instalar o .net framework 4.6, esse problema é resolvido automaticamente.
fonte
Para mim, configurei meu projeto para ser executado na versão mais recente do .Net Framework (uma alteração do .Net Framework 4.6.1 para 4.7.2).
Tudo funcionou, sem erros e publicado sem problemas, e foi por acaso que me deparei com a mensagem de erro System.Net.Http, mostrada em uma solicitação de API pequena, difícil de perceber, mas muito importante no site ' estou trabalhando.
Voltei para 4.6.1 e está tudo bem novamente.
fonte
A única maneira de resolver esse problema de maneira limpa (.NET 4.6.1) foi não apenas adicionar uma referência Nuget ao System.Net.Http V4.3.4 para o projeto que realmente usou o System.Net.Http, mas também ao projeto de inicialização (um projeto de teste no meu caso).
(O que é estranho, porque o System.Net.Http.dll correto existia no diretório bin do projeto de teste e o .config assemblyBingings também parecia bom.)
fonte
Estava atualizando um site antigo usando o nuget (incluindo atualização .Net e MVC).
Excluí a referência System.Net.HTTP no VS2017 (era para a versão 2.0.0.0) e adicionei novamente a referência, que mostrava 4.2.0.0.
Atualizei uma tonelada de 'pacotes' usando o nuget e recebi a mensagem de erro, depois notei que algo havia redefinido a referência para 2.0.0.0, então removi e adicionei novamente e ele funciona bem ... bizarro.
fonte