La ejecución del proyecto tSQLt desde las fuentes falla debido a la falta de coincidencia del token público

8

Estoy tratando de hacer algunas mejoras para el marco tSQLt y en su mayoría estoy terminado, pero no puedo hacerlo, ya que fallan algunas pruebas relacionadas con el certificado que no estaba tocando:

 [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|

El error de falla es:

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

Trataré de describir mi proceso de instalación.

Instalé las fuentes de este marco utilizando las siguientes pautas . Sin embargo, no pude comenzar el proyecto después de eso, ya que estaba fallando con los siguientes errores y toda la resolución del problema se realizó en esa publicación SO :

[exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): error MSB3325: No se puede importar el siguiente archivo de clave: tSQLtOfficialSigningKey.pfx. El archivo de clave puede estar protegido por contraseña. Para corregir esto, intente importar el certificado nuevamente o instale manualmente el certificado en el CSP de nombre seguro con el siguiente nombre de contenedor de clave: VS_KEY_C20B79DE0583A5C1 [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj] [exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): error MSB3321: se canceló la importación del archivo de clave "tSQLtOfficialSigningKey.pfx". [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj]

Para solucionar este problema, he creado nuevas claves para cada proyecto sin contraseña:

ingrese la descripción de la imagen aquí

Veo que creó el snkarchivo, no tan original pfx. Después de eso, intenté ejecutar la compilación nuevamente y fallé con los errores que mencioné anteriormente.

Dmitrij Kultasev
fuente
¿Por qué usar tsqlframework? Incluye muchos códigos en el código de su base de datos, muchas funciones SQL CLR. He intentado usar if para 2 grandes proyectos durante el año y falla mucho. Será mejor crear su propia prueba usando .net o / y SQL y ejecutarlos a través de alguna herramienta para obtener una ejecución paralela.
gotqn
No estoy realmente seguro de qué estás hablando exactamente. Solo hay varias funciones SQL CLR allí. Además, es muy estable y "falla mucho" simplemente suena extraño. Incluso Redgate incluyó este marco en sus productos. Puede buscarlo en Google y encontrará que es el mejor marco de prueba de unidad hasta ahora.
Dmitrij Kultasev el
Sé que es lo mejor, pero no es bueno. Lo he usado muchas veces y asisto a algunas demostraciones en línea, solicité mejoras y otras cosas, pero termino creando pruebas propias. Ese es mi consejo: no confíe en este marco.
gotqn
Lo uso desde hace muchos años y siempre funcionó bien para mí, también en los grandes proyectos.
Dmitrij Kultasev el

Respuestas:

0

Como se indica aquí

El siguiente error puede ocurrir al crear proyectos para Microsoft Visual Studio 2008 - 2015.

Error : no se puede importar el siguiente archivo de clave: mykey.pfx. El archivo de clave puede estar protegido por contraseña.

No se puede importar el siguiente archivo de clave: mykey.pfx. El archivo de clave puede estar protegido con contraseña. Para corregir esto, intente importar el certificado nuevamente o instalarlo manualmente en el CSP de nombre seguro con el siguiente nombre de contenedor de clave: VS_KEY_C1D3ACB8FBF1AGK4

SOLUCIÓN 1:

Haga clic en Inicio> Todos los programas> Microsoft Visual Studio> Herramientas de Visual Studio> Símbolo del sistema de Visual Studio. Escribe el siguiente comando

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

Nota : El sn.exe con el parámetro -i instala un par de claves en un contenedor de claves denominado. Vuelva a importar el archivo PFX en Visual Studio.

SOLUCIÓN 2:

  • Abrir propiedades del proyecto.

  • Haga clic en la sección Firma.

  • Donde dice 'Elija un archivo de clave de nombre seguro:', vuelva a seleccionar el valor actual en el cuadro desplegable
  • Visual Studio ahora le pedirá la contraseña. Ingresarlo. Es posible que reciba otro mensaje de error: "Se intentó hacer referencia a un token que no existe"> Simplemente puede ignorar este mensaje.

  • Haga clic en el botón "Cambiar contraseña"

  • Ingrese la contraseña original en los tres cuadros y haga clic en Aceptar. Si quieres cambiar
  • su contraseña (o si su contraseña anterior no cumple con los requisitos de complejidad), puede hacerlo ahora.
  • Repita para cada archivo clave en su proyecto. Guarda tu proyecto y haz una reconstrucción.

SOLUCIÓN 3:

Obtenga una copia de openssl para Windows en slproweb.com o use un cuadro de Linux, ya que casi todos lo tienen. Ejecute lo siguiente para exportar a un archivo clave

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

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

Luego, en las propiedades del proyecto, puede usar el archivo PFX

SOLUCIÓN 4:

La solución final para este problema es renunciar a Visual Studio para firmar y usar Signtool en su lugar.

Respuesta actualizada

Parece que su cuenta de TFS Build Service no tiene permiso requerido para acceder a la firmaKeyKey.pfx en la máquina del agente de compilación. Asegúrese de tener este archivo en la máquina del agente de compilación primero.

Luego siga los pasos a continuación:

  1. Inicie sesión en el agente de compilación como su cuenta de servicio de compilación local (Mejor tenga permiso de administrador)
  2. Abra un símbolo del sistema de Visual Studio y navegue hasta el directorio en el que está almacenada la clave
  3. Comando de tipo sn –i signingKey.pfx VS_KEY_EFCA4C5B6DFD4B4F(asegúrese de utilizar el nombre de la clave que aparece en el mensaje de error)
  4. Cuando se le solicite una contraseña, escriba la contraseña para el archivo pfx

  5. Luego reconstruirlo

Nota: Si no está ejecutando Visual Studio como administrador, intente hacerlo también.

Más detalles puede consultar la respuesta de Brandon Manchester No se puede importar el archivo de claves 'blah.pfx' - error 'El archivo de claves puede estar protegido con contraseña'

Vignesh Kumar A
fuente
No sé la contraseña de una clave
Dmitrij Kultasev
¿Tienes alguna idea?
Dmitrij Kultasev el
1
Todas las soluciones proporcionadas en su caso requieren contraseña. No tengo una. Sign the ClickOnce manifestsestá desmarcado y DESACTIVADO. Estoy tratando de hacer todo localmente, por lo que no hay problemas de permisos (he intentado ejecutar esta línea de comando bajo el administrador)
Dmitrij Kultasev
1
Hay 7 puntos que dicen "Ingrese la contraseña original en los tres cuadros y haga clic en Aceptar. Si desea cambiar su contraseña (o si su contraseña anterior no cumple con los requisitos de complejidad), puede hacerlo ahora". Como ya dije, que no tengo contraseña.
Dmitrij Kultasev
1
en ese ejemplo, el autor conoce la contraseña y yo no
Dmitrij Kultasev