A execução do projeto tSQLt a partir de fontes falha devido à incompatibilidade do Token Público


8

Estou tentando fazer algumas melhorias para a estrutura tSQLt e estou quase terminando, mas não posso fazer isso, pois poucos testes relacionados ao certificado que eu não estava tocando ainda estão falhando:

 [exec] |18|[InstallExternalAccessKeyTests].[test creates correct certificate in master]                                                       |    120|Failure|
 [exec] |19|[InstallExternalAccessKeyTests].[test tSQLt can be set to EXTERNAL ACCESS after InstallExternalAccessKey executed]                 |    333|Failure|
 [exec] |20|[InstallExternalAccessKeyTests].[test tSQLtExternalAccessKey install data is signed with same key as tSQLt.clr]                    |     10|Failure|

O erro com falha é:

Expected: %publickeytoken=8c9a92de0f9c7794,%
Actual: tsqltclr, version=1.0.7216.13228, culture=neutral, publickeytoken=8d3f4bf59e4c22fd, processorarchitecture=msil

Vou tentar descrever meu processo de instalação.

Instalei essas fontes de estrutura usando as seguintes diretrizes . No entanto, não pude iniciar o projeto depois disso, pois estava falhando com os seguintes erros e toda a solução de problemas foi feita naquele post do SO :

[exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): erro MSB3325: Não é possível importar o seguinte arquivo de chave: tSQLtOfficialSigningKey.pfx. O arquivo de chave pode estar protegido por senha. Para corrigir isso, tente importar o certificado novamente ou instale manualmente o certificado no CSP de nome forte com o seguinte nome de contêiner de chave: VS_KEY_C20B79DE0583A5C1 [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj] [exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): erro MSB3321: A importação do arquivo de chave "tSQLtOfficialSigningKey.pfx" foi cancelada. [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj]

para passar esse problema, criei novas chaves para cada projeto sem senha:

insira a descrição da imagem aqui

Vejo que ele criou o snkarquivo, não como original pfx. Depois disso, tentei executar a compilação novamente e ela falhou com os erros mencionados acima.


Por que usar o tsqlframework? Inclui tantos códigos no código do banco de dados, muitas funções do SQL CLR. Eu tentei usar se para 2 grandes projetos ao longo do ano e ele falha muito. Será melhor criar um teste próprio usando .net ou / e SQL e executá-los através de alguma ferramenta para obter execução paralela.
— gotqn

Não tenho muita certeza do que exatamente você está falando. Existem apenas várias funções SQL CLR lá. Além disso, é muito estável e "falha muito" apenas soa estranho. Até a Redgate incluiu essa estrutura em seus produtos. Você pode pesquisar no Google e descobrirá que é a melhor estrutura de teste de unidade até agora.
— Dmitrij Kultasev

Eu sei que é o melhor, mas não é bom. Eu o usei várias vezes e assisti a algumas demonstrações on-line, solicitei aprimoramentos e outras coisas, mas acabei criando testes próprios. Esse é o meu conselho - não confie nessa estrutura.
— gotqn

Eu o uso há muitos anos e sempre funcionou bem para mim, também nos grandes projetos.
— Dmitrij Kultasev 04/11/19

Respostas:


0

Como indicado aqui

O seguinte erro pode ocorrer ao criar projetos para o Microsoft Visual Studio 2008 - 2015.

Erro : Não é possível importar o seguinte arquivo de chave: mykey.pfx. O arquivo de chave pode estar protegido por senha.

Não é possível importar o seguinte arquivo de chave: mykey.pfx. O arquivo de chave pode estar protegido por senha. Para corrigir isso, tente importar o certificado novamente ou instale manualmente o certificado no CSP de nome forte com o seguinte nome de contêiner de chave: VS_KEY_C1D3ACB8FBF1AGK4

SOLUÇÃO 1:

Clique em Iniciar> Todos os Programas> Microsoft Visual Studio> Ferramentas do Visual Studio> Prompt de Comando do Visual Studio. Digite o seguinte comando

sn -i "c:\Pathtofile\.pfx" VS_KEY_C1D3ACB8FBF1AGK4

Nota : O sn.exe com o parâmetro -i instala um par de chaves em um contêiner de chaves chamado. Re-importar o arquivo PFX em Visual Studio.

SOLUÇÃO 2:

  • Abra Propriedades do Projeto.

  • Clique na seção Assinatura.

  • Onde diz 'Escolha um arquivo de chave de nome forte:', selecione novamente o valor atual na caixa suspensa
  • O Visual Studio agora solicitará a senha. Digite. Você pode receber outra mensagem de erro: ”Foi feita uma tentativa de referenciar um token que não existe”> Você pode simplesmente ignorar esta mensagem.

  • Clique no botão "Alterar senha"

  • Digite a senha original nas três caixas e clique em OK. Se você gostaria de mudar
  • sua senha (ou se sua senha antiga não atender aos requisitos de complexidade), você pode fazer isso agora.
  • Repita para cada arquivo de chave no seu projeto. Salve seu projeto e faça uma reconstrução.

SOLUÇÃO 3:

Obtenha uma cópia do openssl para windows em slproweb.com ou use uma caixa do Linux, pois elas praticamente a possuem. Execute o seguinte para exportar para um arquivo de chave

openssl pkcs12 -in certfile.pfx -out backupcertfile.key

openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key

Em seguida, nas propriedades do projeto, você pode usar o arquivo PFX

SOLUÇÃO 4:

A solução final para esse problema é desistir do Visual Studio para fins de assinatura e usar o Signtool .

Resposta atualizada

Parece que sua conta do TFS Build Service não tem permissão necessária para acessar o signatureKey.pfx na máquina do agente de construção. Verifique se você tem esse arquivo na máquina do agente de construção primeiro.

Em seguida, siga as etapas abaixo:

  1. Efetue logon no agente de compilação como sua conta local do serviço de compilação (é melhor ter permissão de administrador)
  2. Abra um prompt de comando do visual studio e navegue até o diretório em que a chave está armazenada
  3. Comando Type sn –i signingKey.pfx VS_KEY_EFCA4C5B6DFD4B4F(certifique-se de usar o nome da chave que aparece na mensagem de erro)
  4. Quando uma senha for solicitada, digite a senha do arquivo pfx

  5. Depois reconstrua-o

Nota: Se você não estiver executando o Visual Studio como administrador, tente fazer isso também.

Mais detalhes, você pode consultar a resposta de Brandon Manchester Não é possível importar o arquivo de chaves 'blah.pfx' - erro 'O arquivo de chaves pode estar protegido por senha'


Não sei a senha da chave #
— Dmitrij Kultasev 02/11/19

você tem alguma ideia?
— Dmitrij Kultasev

1
Todas as soluções fornecidas no seu caso exigiam senha. Eu não tenho um. Sign the ClickOnce manifestsestá desmarcado e DESATIVADO. Eu estou tentando fazer tudo localmente, por isso não há problemas de permissões (Tentei executar esta linha de comando sob o administrador)
— Dmitrij Kultasev

1
Há 7 pontos que dizem "Digite a senha original nas três caixas e clique em OK. Se você deseja alterar sua senha (ou se sua senha antiga não atender aos requisitos de complexidade), faça isso agora.". Como já afirmei, não tenho senha.
— Dmitrij Kultasev

1
nesse exemplo, o autor conhece a senha e eu não
— Dmitrij Kultasev 5/11/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.