“Não foi possível encontrar o certificado de assinatura de manifesto no repositório de certificados” - mesmo quando adicionar nova chave

153

Não consigo criar projetos com uma assinatura de chave de nome forte - a mensagem no título sempre aparece.

Sim, o projeto foi inicialmente copiado de outra máquina. No entanto, mesmo se eu adicionar uma nova chave na guia Assinatura em Propriedades do projeto, esse erro ainda será mostrado.

Tentei executar o Visual Studio como administrador e tentei adicionar manualmente as chaves ao Windows Certificate Store.

Socorro!

Edit: Eu não recebo esse erro com um novo projeto, mas eu gostaria que esse projeto existente funcionasse. Não funcionará mesmo se eu criar um novo certificado!

Marcus
fonte
3
Que tipo de projeto de VS? Você desmarcou a opção "Assinar os manifestos do ClickOnce" na guia Assinatura das propriedades do projeto?
Simon Mourier
@ Simon Mourier, se eu desmarcar essa opção, o arquivo não será assinado. Quero que seja assinado! É um projeto C #. Funciona bem na minha principal máquina de desenvolvimento, mas não no laptop.
Marcus
A mensagem de erro é exibida no seu log de compilação ou de alguma outra maneira? Pode ajudar se você copiar e colar o log.
Owen Wengerd
Um erro no log de compilação: "Não foi possível encontrar o certificado de assinatura de manifesto no repositório de certificados"
Marcus
Não vi as linhas de código na resposta aceita. Mas isso funcionou para mim: criei uma nova chave no VS2015. Eu desmarquei Assinar a Assembléia e salvei. Em seguida, cliquei no botão Selecionar do arquivo, escolhi o arquivo que acabara de criar, cliquei novamente em Assinar a montagem e salvei. Reconstruído.
Tim

Respostas:

234

Finalmente encontrei a solução e realmente espero que isso ajude outra pessoa também.

  1. Edite o .csprojarquivo para o projeto em questão.
  2. Exclua as seguintes linhas de código:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Marcus
fonte
1
Trabalhou para mim também. Quaisquer advertências dessa ação?
Doctor Coder
1
Yup, excluída qualquer coisa com "Manifesto" e funcionou :-)
s1cart3r
2
Eu não faria isso sem conhecer as repercussões ... faz assim mesmo #
barnacle.m
No meu caso, excluindo ManifestCertificateThumbprinte ManifestKeyFileresolvendo o problema.
Ahmed Shamel 19/12/19
Trabalhou para mim. Não tenho idéia do que repercussão isso tem, mas pelo menos um deles é um projeto de trabalho, o que é bom o suficiente para mim.
Parrotmaster 10/03
148

Vá para "Propriedades" do seu projeto no visual studio. Em seguida, vá para a guia de assinatura.

Em seguida, verifique se a opção Assinar os manifestos do Click Once está desativada.


Instruções atualizadas:

No seu Gerenciador de Soluções:

  1. clique direito no seu projeto
  2. clique nas propriedades
  3. geralmente no lado esquerdo, selecione a guia "Assinatura"
  4. marque a caixa de seleção Assinar que o ClickOnce manifesta
  5. Certifique-se de salvar!

insira a descrição da imagem aqui

ADL
fonte
2
O que você disse está bem e deve funcionar, mas não funcionou. No final, eu tive que apagar as linhas de código, como mencionado na resposta abaixo
Hamid Shahid
1
O que isso faz / o que essa ação significa?
LazerSharks
@TrailMix Modificará o seu arquivo de configuração adequadamente.
ADL
1
isso me deu uma solução para vs2010 :) up!
jace
1
Boa resposta! Estou usando o VS2012 e realmente funciona! 1
kiLLua
15

É simples!!

Resolvi esse problema seguindo estas etapas:

  1. Abrir propriedades do projeto img
  2. Clique na guia Assinatura
  3. E desmarque "Assinar a montagem"

É isso aí!!

Amit Kadam
fonte
13
  1. Abra o arquivo .csproj no bloco de notas.
  2. Exclua as seguintes informações relacionadas à assinatura de certificado no armazenamento de certificados

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Rajamohan Rajendran
fonte
11

Tente isso: Clique com o botão direito do mouse em seu projeto -> Vá para Propriedades -> Clique em Assinar, que fica no lado esquerdo da tela -> Desmarque a opção Assinar que o clique se manifesta -> Salvar e criar

Kamala Hanchinal
fonte
6

Vá para seus projetos "Propriedades" no visual studio. Em seguida, vá para a guia de assinatura.

Em seguida, verifique se a opção Assinar os manifestos do Click Once está desativada.

OU

1.Abra o arquivo .csproj no bloco de notas.

2.Exclua as seguintes informações relacionadas à assinatura do certificado no armazenamento de certificados xxxxx xxxxxx xxxxxxxx.pfx true false `

Trabalhou para mim.

Cinza
fonte
3

Supondo que este seja um certificado pessoal criado pelo Windows no sistema em que você copiou o projeto, você pode usar o gerenciador de certificados no sistema em que o projeto está agora e importar o certificado. Inicie o gerenciador de certificados (certmgr) e selecione os certificados pessoais, clique com o botão direito do mouse abaixo da lista de certificados existentes e selecione importar das tarefas. Use a navegação para encontrar o .pfx no projeto (o .pfx do sistema anterior que você copiou com o projeto). Ele deve estar no subdiretório com o mesmo nome que o diretório do projeto. Estou familiarizado com C # e VS, portanto, se esse não for o seu ambiente, talvez o .pfx esteja em outro lugar ou talvez essa sugestão não se aplique. Após a importação, você deverá receber uma mensagem de status. Se você conseguiu, o erro de compilação do certificado deve desaparecer.tela certmgr

dpminusa
fonte
Claro e conciso!
Guido Leenders
0

Não é suficiente adicionar chaves manualmente ao armazenamento de certificados do Windows. O certificado contém apenas a chave pública assinada. Você também deve importar a chave privada associada à chave pública no certificado. Um arquivo .pfx contém chaves públicas e privadas em um único arquivo. É isso que você precisa importar.

Owen Wengerd
fonte
Obrigado, mas já tentei isso. O Visual Studio deve adicionar automaticamente o certificado quando você cria um novo. No entanto, eu tentei adicionar o arquivo .pfx manualmente também. Janelas esquerda para instalá-lo no armazenamento de certificados correto e também o adicionei ao meu armazenamento pessoal.
Marcus
A chave privada não é armazenada no armazenamento de certificados. Por favor, leia isso, talvez ele vai ajudar você a entender a distinção: technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd
Devo acrescentar que você pode verificar se a chave privada associada está disponível, abrindo a janela de propriedades do certificado no gerenciador de certificados. Se a chave privada estiver disponível, o seguinte texto será exibido na parte inferior da página Geral: "Você possui uma chave privada que corresponde a este certificado". Se você não vir esse texto, a chave privada não está instalada.
precisa saber é o seguinte
Sim, diz "Você tem uma chave privada que corresponde a este certificado".
Marcus
Eu acho que isso exclui a chave ou o certificado como o problema.
Owen Wengerd 24/08/2012
0

Você disse que copiou arquivos de outro computador. Depois de copiá-los, você os 'desbloqueou'? Especificamente, o arquivo .snk deve ser verificado para garantir que não esteja marcado como inseguro.

Owen Wengerd
fonte
Não está bloqueado, veio do software de sincronização do Windows Live Mesh. No entanto, é irrelevante, pois nem mesmo criar uma nova chave dentro do Visual Studio no laptop funcionará.
Marcus
0

Para assinar uma montagem com um nome forte usando atributos

Aberto AssemblyInfo.cs(em$(SolutionDir)\Properties )

o AssemblyKeyFileAttributeou oAssemblyKeyNameAttribute , especificando o nome do arquivo ou contêiner que contém o par de chaves a ser usado ao assinar o assembly com um nome forte.

adicione o seguinte código:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
QuangNHb
fonte
Adicionar esta linha não faz diferença, ainda recebo o mesmo erro.
Marcus
0

Se você precisar apenas criar o projeto ou solução localmente , remover a assinatura pode ser uma solução simples, como sugerem outros.

Porém, se você tiver esse erro no servidor de automação, como o TeamCity, no qual você constrói suas versões reais para implantação ou distribuição, considere como pode obter esse certificado corretamente instalado no armazenamento de certificados na máquina de compilação, para obter um pacote assinado no final da compilação.

Geralmente, não é recomendável fazer check-in / confirmar nenhum certificado PFX no controle de origem, portanto, como você obtém esses arquivos no servidor de compilação durante o processo de compilação é outra questão, mas às vezes as pessoas têm esse arquivo armazenado junto com a solução código, para que você possa encontrá-lo na pasta do projeto.

Tudo o que você precisa fazer é instalar este certificado na conta adequada no servidor de compilação.

  1. Faça o download do PsExec no Windows Sysinternals .

  2. Abra um prompt de comando e digite o seguinte. Irá gerar um novo prompt de comando, sendo executado como Sistema Local (supondo que seu TeamCity esteja sendo executado na conta padrão do Sistema Local):

    > psexec.exe -i -s cmd.exe

  3. Nesse novo prompt de comando, mude para o diretório que contém o certificado e insira o nome do arquivo a ser instalado (altere o nome do arquivo para o seu):

    > mykey.pfx

  4. O assistente para Importar Certificado será iniciado. Clique e selecione todos os padrões sugeridos.

  5. Execute a compilação.

Todos os créditos vão para Stuart Noble (e depois para Laurent Kempé , acredito).

Sevenate
fonte