Quando eu limpo e construo minha solução que possui vários projetos, a janela de saída informa que a compilação foi bem-sucedida. No entanto, quando visualizo a janela da lista de erros , ele me mostra este aviso:
Foram encontrados conflitos entre versões diferentes do mesmo assembly dependente que não puderam ser resolvidos. Esses conflitos de referência são listados no log de construção quando a verbosidade do log é definida como detalhada. C: \ Arquivos de programas (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets
Quando clico duas vezes nessa mensagem, ele abre o arquivo C: \ Arquivos de Programas (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets, mas não entendo nada nele.
Estou usando o Visual Studio Express 2013 para a Web.
Como descubro o que há de errado e com qual DLL e como faço para que o aviso apague?
fonte
Respostas:
eta: Há um artigo matador sobre esse material do próprio Nick Craver da SO que você deve ler
Enquanto as outras respostas dizem isso, elas não explicitam, então eu irei ...
No VS2013.2, para realmente acionar a emissão das informações citadas, você não precisa ler a mensagem, que diz:
Isso está incorreto (ou pelo menos foi para algumas versões do Visual Studio - parece estar bom em uma atualização 3 do VS2015 atualizada ou posterior). Em vez disso, coloque-o em Diagnóstico (em Ferramentas-> Opções-> Projeto e soluções-> Compilar e executar , defina a verbosidade de saída da compilação do projeto MSBuild ); em seguida, você verá mensagens como:
Então
Ctrl-Alt-O
para ir para a janela de saída Build... E sim, para aqueles que olham os detalhes da mensagem [diagnóstico], foi notícia para esse ignorante que existe uma convenção na cidade em que todas as
6.x
versões são, internamente, a versão da montagem6.0.0.0
, ou seja, apenas o componente SemVer Major entra na montagem Version :)fonte
Execute
msbuild Foo.sln /t:Rebuild /v:diag
(fromC:\Program Files (x86)\MSBuild\12.0\bin
) para criar sua solução a partir da linha de comando e obtenha um pouco mais de detalhes, encontre o.csproj.
que registra o aviso e verifique suas referências e referências de outros projetos que usam o mesmo assembly comum que difere na versão.Editar: Você também pode definir a verbosidade da compilação diretamente no VS2013. Vamos para
Tools
>Options
menu, vá paraProjects and Solutions
e defina a verbosidade do MSBuild comoDiagnostic
.Edit: Poucos esclarecimentos, pois acabei de receber um. No meu caso, o aviso foi devido a adição de uma referência usando o prompt do Resharper, em oposição à caixa de diálogo Adicionar referência, que o fez sem versão, mesmo que a v4 e a v12 estejam disponíveis para você escolher.
vs
No log do MSBuild com
/v:diag
verbosidade, parecia o seguinte. detalhando quais duas referências conflitavam:fonte
msbuild "Foo.sln" /t:Rebuild /v:d > build.log
/l:FileLogger,Microsoft.Build.Engine;logfile=build.log
- observe os interruptores para madeireiros explicação aquiSó posso apoiar mais a resposta de Ruben com uma comparação entre as duas mensagens exibidas:
e a mensagem:
Então, Ruben está certo - isso simplesmente não é verdade. Não há conflitos, apenas uma assembléia ausente. Isso é especialmente chato quando o projeto é um aplicativo ASP.NET, pois as visualizações são compiladas sob demanda , ou seja, imediatamente antes da exibição pela primeira vez. É quando é necessário ter a montagem disponível. (Existe uma opção para pré-compilar as visualizações juntamente com o restante do código, mas isso é outra história .) Por outro lado, se você definir a verbosidade como Diagnóstico, obterá a seguinte saída:
Como resultado, tudo o que você precisa fazer é:
Mais sobre a galeria NuGet aqui . Mais sobre a pré-compilação de visualizações do ASP.NET aqui .
fonte
Alterar a verbosidade de construção no visual studio ajudará a apontar na direção certa. Siga as etapas abaixo para alterar a verbosidade no VS
Quiet
,Minimal
,Normal
,Detailed
eDiagnostic
Verifique a janela de saída ( Ctrl+ Alt+ O) no VS para ver as alterações no log de compilação.
fonte
Você provavelmente terá que reinstalar ou atualizar seus pacotes NuGet para corrigir isso.
fonte
Manage NuGet packages for solution
-> Abaixo,Consolidate
você pode ver se há versões diferentes do mesmo pacote instaladasReiterando um dos comentários de @elshev Clique com o botão direito do mouse na solução -> Gerenciar pacotes NuGet para solução -> Em Consolidar, você pode ver se há versões diferentes do mesmo pacote instaladas. Atualize os pacotes lá. O erro de conflito foi resolvido.
fonte
Estou usando o Visual Studio 2017 e o encontrei quando atualizei alguns pacotes Nuget. O que funcionou para mim foi abrir meu
web.config
arquivo, encontrar o<runtime><assemblyBinding>
nó e excluí-lo. Salveweb.config
e reconstrua o projeto.Olhe para a
Error List
janela. Você verá o que parece ser um aviso massivamente longo sobre conflitos de ligação. Clique duas vezes nele e ele recriará automaticamente o<runtime><assemblyBinding>
bloco com os mapeamentos corretos.fonte
Conforme declarado na questão 6583 da CLI do dotnet, o problema deve ser resolvido com o
dotnet nuget locals --clear all
comandofonte
Eu poderia resolver isso instalando o Newtonsoft Json no projeto da web com pacotes de nugget
fonte
Obviamente, existem muitas causas diferentes e, portanto, muitas soluções para esse problema. Para colocar o meu na mistura, atualizamos um assembly (System.Net.Http) anteriormente referenciado diretamente em nosso projeto na Web para uma versão gerenciada pelo NuGet. Isso removeu a referência direta dentro desse projeto, mas nosso projeto de teste ainda continha a referência direta. A atualização dos dois projetos para usar o assembly gerenciado pelo NuGet resolveu o problema.
fonte
Se você fez alterações nos pacotes - reabra o sln. Isso funcionou para mim!
fonte
Descobri que, às vezes, os pacotes de nuget são instalados (o que eu acho) são os componentes necessários do .NET Core ou outros itens que entram em conflito com a estrutura já instalada. Minha solução foi abrir o arquivo do projeto (.csproj) e remover essas referências. Por exemplo, System.IO, System.Threading e outros tendem a ser adicionados quando o Microsoft.Bcl é incluído por meio de algum pacote NuGet instalado recentemente. Não há razão para versões específicas delas em meus projetos, portanto, removo as referências e a criação do projeto. Espero que ajude.
Você pode procurar no arquivo de projeto por "referência" e remover os conflitos. Se eles estiverem incluídos no System, livre-se deles e a compilação deverá funcionar. Isso pode não responder a todos os casos desse problema - garanto que você sabe o que funcionou para mim :)
Exemplo do que eu comentei:
fonte
Segui o conselho de várias respostas aqui para descobrir o que estava errado, mas nenhuma das respostas parecia explicar como corrigi-lo. Meu problema foi que uma referência exigia uma versão diferente de uma segunda referência. Portanto, a Newtonsoft estava na versão 6, mas alguma outra DLL queria o 4.5. Atualizei a Newtonsoft como uma das outras respostas sugeridas e que piorou as coisas.
Então, na verdade, eu rebaixei minha instalação do Newtonsoft e o aviso foi embora (VS 2017):
Clique com o botão direito do mouse em Referências no gerenciador de soluções e selecione Gerenciar pacotes NuGet ... Na guia "Instalado", localize Newtonsoft (ou qualquer que seja o seu conflito). No lado direito, uma lista suspensa aparece ao lado de "Versão" que você pode alterar para mais antiga versões. Não era óbvio para mim que esse menu suspenso poderia ser usado para fazer o downgrade.
fonte
Você pode executar a CLI do Dotnet com total detalhamento do diagnóstico para ajudar a encontrar o problema.
dotnet run --verbosity diagnostic >> full_build.log
Após a conclusão da construção, você pode procurar no erro o arquivo de log (full_build.log). Procurar "um conflito", por exemplo, deve levar você diretamente ao problema.
fonte
Eu desinstalei o Microsoft ASP.NET MVC nuget.org do Manage NuGet Packagaes e o reinstale novamente. Durante a reinstalação, resolveu todos os conflitos relacionados à versão do razor. Tente .
fonte
Alterei a verbosidade do MSBuild para Diagnostic.but não conseguia encontrar onde estava o problema, de acordo com as respostas acima, eu tinha esse código no app.config:
Então, acabei de alterar o primeiro sistema, versão de 4.0.0.0 para 12.0.0.0 e meu projeto funcionou.
fonte
De acordo com as outras respostas, defina o nível de log de saída como detalhado e procure por conflitos, que informarão onde procurar em seguida.
No meu caso, ele me enviou em algumas direções, procurando a fonte das referências, mas no final, descobriu-se que o problema era um dos meus projetos de bibliotecas de classes portáteis, estava mirando a versão errada e estava fazendo o seu próprio versão das referências em, daí os conflitos. Um rápido redirecionamento e o problema foi resolvido.
fonte
Acabei de me deparar com isso e com o problema depois de mudar um pacote de nuget para dlls localmente referenciadas. O problema era o material antigo de ligação em tempo de execução
app.config
.fonte
Recebi esse aviso depois de migrar para a Referência do pacote. Na saída de diagnóstico, havia informações de que a biblioteca foi referenciada pela mesma biblioteca. Pode ser um bug da nova Referência de Pacote. A solução foi ativar o AutoGenerateBindingRedirects e excluir o redirecionamento de ligação personalizado.
fonte
VS 2017, projeto MVC
Não sei por que, mas para mim, a solução para esse problema foi remover um
out
parâmetro de uma assinatura de método de modelo que foi chamada a partir do método de ação do controlador. esse é um comportamento muito estranho , mas essa foi a solução para o meu problema.fonte
Corre
Update-Package
comando via Console do Gerenciador de PacotesIsso corrigirá o MSB3277; o que ele faz é reinstalar todos os pacotes e todos os conjuntos relacionados que eles vêm com a versão mais alta possível . Também é possível atualizar apenas pacotes específicos. Ou faça o downgrade após a atualização, se necessário, esse problema corrigido para mim algumas vezes. Dependendo de quantos pacotes de nuget você possui, esse processo pode levar alguns minutos.
Mais informações sobre os documentos oficiais https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages
fonte