Estou tentando compilar meu suplemento do Excel usando o C # 4.0 e comecei a obter esse problema ao criar meu projeto no Visual Studio. É importante dizer que eu não tive esse problema antes. O que poderia causar isso?
c#
visual-studio
.net-4.0
Sergey Kucher
fonte
fonte
bin
eobj
do seu projeto e crie o projeto novamente. Às vezes isso funciona.Respostas:
Meu palpite é que você não está trabalhando com assemblies fortemente nomeados. Eu tive esse erro quando dois projetos fazem referência a versões ligeiramente diferentes do mesmo assembly e um projeto mais dependente faz referência a esses projetos. A resolução no meu caso foi remover as informações de chave e versão do nome do assembly nos arquivos .csproj (isso não importava mesmo) e fazer uma compilação limpa.
As alterações entre as diferentes versões de montagem eram compatíveis com as partes da solução referentes a elas. Se esse não for o seu caso, talvez seja necessário mais trabalho para resolver o problema.
NuGet
Com o NuGet, é fácil entrar nessa situação se:
Isso resulta em dois projetos em sua solução que referenciam versões diferentes dos assemblies desse pacote. Se um deles referenciar o outro e for um aplicativo ClickOnce, você verá esse problema.
Para corrigir isso, emita o
update-package [package name]
comando no Nuget Package Manager Console para trazer tudo para um campo de jogo nivelado, quando o problema desaparecer.Você deve gerenciar os pacotes NuGet no nível da solução e não no nível do projeto, a menos que haja um motivo convincente para não fazê-lo. O gerenciamento de pacotes no nível da solução evita o potencial de várias versões de dependências. Ao usar a interface do usuário de gerenciamento, se a guia Consolidado mostrar 1 ou mais pacotes com várias versões, considere consolidá-los em um.
fonte
Quando tive esse problema, eu o corrigi desativando as 'Ativar configurações de segurança do ClickOnce'.
Menu: Projeto | Propriedades 'Nome do projeto' ... | Guia Segurança | Caixa de seleção 'Ativar configurações de segurança ClickOnce'.
fonte
Veja esta resposta .
fonte
Eu tive esse problema. Isso aconteceu porque eu tinha muitos projetos apontando para a mesma montagem, mas de versões diferentes. Eu resolvo selecionando a mesma versão para todos os projetos em minha solução.
fonte
Se você alterou a versão do assembly ou copiou uma versão diferente da biblioteca gerenciada indicada no erro, também poderá ter arquivos compilados anteriormente referenciando a versão incorreta. Uma 'Reconstruir tudo' (ou excluir as pastas 'bin' e 'obj' conforme mencionado em um comentário anterior) deve corrigir esse caso.
fonte
você precisa assinar a montagem com uma chave. Acesse as propriedades do projeto na guia Assinatura:
fonte
Adicionar minha solução para esse problema para qualquer pessoa pode ajudar.
Eu tive uma solução ClickOnce lançando esse erro. O aplicativo referenciou uma pasta "Libs" comum e continha uma referência de projeto a um
Foo.dll
. Embora nenhum dos projetos na solução tenha feito referência à cópia estática daFoo.dll
pasta "Libs", algumas das referências nessa pasta fizeram (por exemplo: minha solução tinhaLibs\Bar.dll
referências a que se referiaFoo.dll
.) Como o aplicativo CO retirou todas as dependências deLibs
além de suas dependências, as duas cópias estavam entrando no projeto. Isso estava gerando o erro acima.Corrigi o problema movendo minha
Libs\Foo.dll
versão estática para uma subpastaLibs\Fix\Foo.dll
,. Essa alteração fez com que o aplicativo ClickOnce usasse apenas a versão do projeto da DLL e o erro desapareceu.fonte
A exclusão da DLL (onde ocorreu o erro) e a reconstrução da solução corrigiram o meu problema. obrigado
fonte
Se você tentou todas as outras respostas nesta pergunta e você:
... você pode ter versões separadas da DLL de pacotes do NuGet nas referências de seus projetos, pois a referência criada pelo Intellisense / ReSharper será uma referência "normal" e não uma referência do NuGet conforme o esperado, portanto o processo de atualização do NuGet venceu " Não o encontre ou atualize!
Para corrigir isso, remova a referência no Projeto A, use o NuGet para instalá-lo e verifique se os pacotes do NuGet em todos os projetos são da mesma versão. (como explicado nesta resposta )
Dica Life Pro:
Esse problema pode surgir sempre que o ReSharper / Intellisense sugere adicionar uma referência ao seu projeto. Pode ser muito mais complicado do que o exemplo acima, com vários projetos e dependências entrelaçados dificultando o rastreamento. Se a referência sugerida pelo ReSharper / Intellisense for realmente de um pacote NuGet, use o NuGet para instalá-lo.
fonte
Quando isso aconteceu comigo com o WindowsAPICodePack após a atualização, acabei de reconstruir a solução.
Compilar -> Reconstruir Solução
fonte
Havia muitos projetos em minha solução para serem executados e atualizados individualmente, então eu o corrigi:
fonte
Descarregar e recarregar o projeto do problema o resolveu para mim.
fonte
Fui publicar , arquivos de aplicativos, encontrei a dll lançando o erro alterou-o para 'Incluir' em 'Incluir (Auto)'. Agora eu posso publicar.
fonte
Encontrei esse problema depois de migrar um suplemento do Excel de packages.config para PackageReference. Parece estar relacionado a esse problema .
O seguinte funciona como uma solução alternativa bruta se você não estiver usando o ClickOnce (ele omitirá todas as informações de dependência do
.manifest
arquivo):Encontre a seção assim:
Edite uma cópia renomeada do
.targets
arquivo referenciado (no meu caso, o arquivo foi resolvidoC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets
e eu fiz uma cópiaMicrosoft.VisualStudio.Tools.Office_FIX.targets
na mesma pasta - não verifiquei se funciona em uma pasta diferente).Encontre o
GenerateApplicationManifest
elemento e altere seu atributoDependencies="@(DependenciesForGam)"
paraDependencies=""
.Altere a seção encontrada em 2. para referenciar seu
.targets
arquivo editado .Isso precisará ser repetido sempre que a versão do
.targets
arquivo enviado com o VS for atualizada (ou você não receberá as atualizações), mas espero que seja corrigido em breve ...fonte
Sua montagem está devidamente assinada?
Para verificar isso, pressione Alt + Enter no seu projeto (ou clique com o botão direito do mouse em Propriedades). Vá para "Assinatura". Verifique se a caixa de seleção "Assinar a montagem" está marcada e se o arquivo de chave de nome forte está selecionado e "Somente sinal de atraso" está desmarcado .
fonte
Agora, aqui está uma abordagem diferente para o problema:
Clique com o botão direito do mouse no projeto e selecione a opção 'Descarregar projeto'. Você notará que seu projeto se torna indisponível.
Clique com o botão direito do mouse no projeto indisponível e selecione a opção 'Editar'.
Role para baixo até a tag '<ItemGroup>' que contém todas as tags de recurso.
Agora vá para a referência que foi exibida na lista de erros, você notará que ele usa uma única tag (ou seja
< Reference Include="assemble_name_here, Version=0.0.0.0, Culture=neutral" / >
).Mude para que fique da seguinte maneira:
.
fonte
Isso é causado quando você altera a versão da DLL que é referenciada. Você precisa excluir todos os itens ou a DLL na pasta de criação de destino.
fonte
Eu recebi o erro semelhante do compilador. Depois de adicionar o projeto dependente do arquivo DLL à solução, o problema foi resolvido.
fonte
Se o seu projeto principal estiver usando alguns projetos de biblioteca e tiver referência a eles, você poderá causar esse problema se o seu projeto fizer referência a um arquivo dll de assembly em vez de ao projeto de biblioteca quando você alterar algo no seu projeto de biblioteca (por exemplo: renomeie uma classe).
Você pode verificar todas as referências ao seu projeto principal, visualizando na janela Pesquisador de objetos (menu Exibir-> Pesquisador de objetos). Uma referência a um arquivo DLL sempre tem um número de versão. Ex: TestLib [1.0.0.0]
Solução: exclua a referência atual do seu projeto principal para o projeto da biblioteca e adicione a referência ao projeto da biblioteca novamente.
fonte
Depois de experimentar a maioria das soluções aqui, finalmente adicionei uma referência ao projeto no projeto click once, isso foi alterado para Include (Auto) de Include e finalmente funcionou.
fonte
O que me ajudou foi: eu fui para o Package Manager Solution e verifiquei o pacote instalado que estava causando o problema. Vi que vários projetos faziam referência ao mesmo pacote, mas versões diferentes. Alinhei-os com base nas minhas necessidades e funcionou.
fonte
Eu tive isso em uma solução com 6 projetos. Um dos meus projetos estava se referindo ao assembly nomeado como uma referência de arquivo. Os outros estavam todos apontando para a referência do projeto.
Normalmente, recebo um erro diferente nesses casos.
Minha solução foi excluir o assembly nomeado em qualquer lugar em que foi referenciado e adicioná-lo novamente. Depois que trabalhei no projeto, esse problema desapareceu. Antes de fazer isso, tentei limpar a solução e garantir que nenhum dos projetos fosse assinado.
espero que ajude alguém ...
fonte
Se houver uma incompatibilidade de dependências, vá para o gerenciador de pacotes NuGet no nível da solução e verifique as guias Atualizar e Consolidar, harmonize tudo.
fonte
Eu recentemente atingi esse problema. No meu caso, eu tenho pacotes NuGet em diferentes montagens. O que eu tinha eram versões diferentes dos mesmos pacotes NuGet associados aos meus próprios assemblies.
Minha solução foi usar o gerenciador de pacotes NuGet na solução, em oposição aos projetos individuais. Isso permite uma opção de "consolidação", na qual você pode atualizar os pacotes do NuGet em quantos projetos quiser - para que todos façam referência à mesma versão do assembly. Quando fiz as consolidações, a falha na compilação desapareceu.
fonte
Também me deparei com esse tipo de problema, tudo o que eu precisava fazer era excluir o arquivo .dll (encontrado na referência) que está causando o erro e adicioná-lo novamente .
Funciona como um encanto.
fonte
Tente com update-package -reinstall -ignoredependencies
fonte
Basta ir em Publicar -> Arquivo de aplicativo -> E alterar o status de publicação da DLL afetada do pré-requisito para incluir! Isso funcionou para mim!
fonte