"Incapaz de encontrar o certificado de assinatura manifesto no Armazém do certificado" - mesmo quando adicionar uma nova chave
não posso construir projectos com uma assinatura forte de uma chave de nome - a mensagem no título aparece sempre.
Sim, o projecto foi inicialmente copiado de outra máquina. No entanto, mesmo que eu adicione uma nova chave através da página de assinatura nas propriedades do projecto, este erro ainda é mostrado.tentei correr o Visual Studio como Administrador e tentei adicionar manualmente as chaves à loja de certificados do Windows.
Socorro!editar: Não consigo este erro com um novo projecto, mas gostaria de pôr este projecto existente a funcionar. Não vai funcionar mesmo se eu criar um novo certificado!
11 answers
- edite o ficheiro
.csproj
para o projecto em questão. -
Riscar 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>
Instruções Actualizadas:
Dentro de sua solução Explorer:
- carregue com o botão direito no seu projecto
- carregue nas propriedades
- normalmente do lado esquerdo, seleccione a página "Assinatura"
- riscar o sinal ... Manifestos de ClickOnce
- certifica-te que salvas!
-
Abre a porta .ficheiro csproj no bloco de notas.
-
Apague as seguintes informações relacionadas com a assinatura do certificado no Armazém do certificado
<PropertyGroup> <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint> <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile> <GenerateManifests>true</GenerateManifests> <SignManifests>false</SignManifests> </PropertyGroup>
Ou
1.Abre a porta .ficheiro csproj no bloco de notas.
2.Apagar as seguintes informações relacionadas com o certificado de assinatura no Armazém do certificado xxxxxxxxx xxxxxxxx.pfx verdadeiro falso `
Funcionou comigo.Assumindo que este é um certificado pessoal criado pelo windows no sistema do qual copiou o seu projecto, poderá usar o Gestor de certificados no sistema onde o projecto está agora e importar o certificado. Inicie o Gestor de certificados (certmgr) e seleccione os certificados pessoais e carregue com o botão direito em baixo da lista de certificados existentes e seleccione Importar das tarefas. Use o browse para encontrar o .pfx no projeto (the .pfx do sistema anterior com o qual copiou projecto). Deve estar no sub-diretório com o mesmo nome que o diretório do projeto. Estou familiarizado com C# E VS, então se esse não é o seu ambiente talvez o.pfx estará em outro lugar ou talvez esta sugestão não se aplique. Após a importação, você deve obter uma mensagem de Estado. Se tiver sucesso, o erro do certificado de compilação deverá desaparecer.
Não é suficiente adicionar manualmente chaves à loja de certificados do Windows. O certificado contém apenas a chave pública assinada. Você também deve importar a chave privada que está associada com a chave pública no certificado. A.o ficheiro pfx contém chaves públicas e privadas num único ficheiro. É isso que precisas de importar.
Para assinar um conjunto com um nome forte usando atributos
Abrir AssemblyInfo.cs
(em $(SolutionDir)\Properties
)
O AssemblyKeyFileAttribute
ou o AssemblyKeyNameAttribute
, especificando o nome do ficheiro ou contentor que contém o par de chaves a usar ao assinar o conjunto com um nome forte.
Aditar o seguinte código:
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
Se você precisa apenas construir o projeto ou solução localmente {[5] } então remover a assinatura pode ser uma solução simples morta, como outros sugerem.
Mas se tiver este erro no seu servidor de compilação de automação, como o TeamCity, onde constrói as suas peças de lançamento reais para a implantação ou distribuição, poderá querer considerar como poderá instalar este certificado correctamente na loja do cert na máquina de compilação, de modo a obter um pacote assinado no final do construir.
Geralmente não é reiniciado para fazer o check-in/commit qualquer PFX para o controlo de código, por isso, como é que consegue estes ficheiros no seu servidor de compilação durante o processo de compilação é um pouco outra questão, mas às vezes as pessoas têm este ficheiro guardado juntamente com o código da solução, para que o possa encontrar na pasta do projecto.
Tudo o que precisa de fazer é instalar este certificado em a conta adequada no seu servidor de compilação.
Obter PsExec do Windows Sysinternals .
-
Abra uma linha de comandos, e indique o seguinte. Irá gerar uma nova linha de comandos, a correr como Sistema Local (assumindo que a sua unidade está a correr sob a conta de Sistema Local por omissão):
> psexec.exe -i -s cmd.exe
-
Nesta nova linha de comandos, mude para a pasta que contém o certificado e indique o nome do ficheiro a instalar (mude o nome do ficheiro para yours):
> mykey.pfx
O Assistente de importação de certificados irá iniciar. Carregue e seleccione TODOS os valores por omissão sugeridos.
Executa a construção.