your visual studio strongly strong register please name give firmar existing and .net certificate duplicates sn.exe strong-named-key

.net - visual - strong name dll



Strong Name sn.exe: Error al instalar el par de claves: el objeto ya existe (2)

Tengo 2 versiones diferentes del mismo proyecto en mi máquina. Uno del tronco del código y el otro de una rama del código. Estos proyectos usan una clave .pfx para habilitar nombres fuertes. Cuando intenté compilar la versión troncal del proyecto, recibí el siguiente error:

No se puede importar el siguiente archivo de clave: sgKey.pfx. El archivo de clave puede estar protegido con contraseña. Para corregir esto, intente importar el certificado nuevamente o instale el certificado manualmente en Strong Name CSP con el siguiente nombre de contenedor de clave: VS_KEY_45891C38BC1BB345

Para resolver esto, uso sn.exe con el siguiente comando:

sn -i sg Key.pfx VS_KEY_45891C38BC1BB345

Esto resuelve el problema con el proyecto troncal, que luego se construye felizmente.

Sin embargo, cuando trato de compilar la versión de rama del proyecto, recibo el mismo error inicial (con el mismo nombre de contenedor de clave), y cuando intento instalar el certificado usando sn.exe, (como es lógico) da el siguiente error :

Error al instalar el par de claves: el objeto ya existe

Esto tiene sentido ya que utilicé el mismo archivo y contenedor en el comando sn, pero lo que trato de entender es:

  1. Si este objeto ya existe, ¿por qué el proyecto no se puede construir, ya que parece que el certificado ya está instalado?
  2. Cómo lo resuelvo (por ejemplo, ¿puedo desinstalar y luego reinstalar? Y, de ser así, ¿cómo?)

He logrado resolver mi problema sin entender completamente la causa. Encontré una publicación sobre un problema similar aquí , pero no se ajustaba a mis circunstancias precisamente, ya que solo había iniciado sesión en mi máquina como usuario único.

La publicación mostró cómo eliminar el contenedor, pero tampoco pude hacerlo porque decía que el contenedor no existía. Sin embargo, lo que hizo fue pedirme que ejecutara el símbolo del sistema como administrador, lo que no había hecho anteriormente. Esto me permitió desinstalar y volver a instalar el certificado, y ambas versiones del proyecto ahora se crean con éxito.

Mi suposición es que, de alguna manera, el certificado había sido instalado inicialmente (por mí) en un usuario diferente al que intenté instalar por segunda vez, aunque no sé por qué sería así, ya que solo he iniciado sesión en la máquina como un solo usuario. Sigue siendo un misterio para mí.

Resumen:

  1. Inicie el símbolo del sistema del desarrollador como administrador ; de lo contrario, recibirá un error que indica que el contenedor no existe.
  2. Ejecute sn -d VS_KEY_XXXXXXXXXXX para eliminar la clave anterior.
  3. Ahora debería poder reinstalar el certificado.

Tuvimos el mismo problema después de hacer una "actualización" en Windows 10. Esto es lo que funcionó para nosotros:

  1. Inicie un símbolo del sistema como administrador.
  2. Ejecute "sn -mn" para hacer certificados basados ​​en el usuario en lugar de basados ​​en máquinas.
  3. Instale el certificado como normal (ya sea "sn -i VS_KEY_XX" o utilizando el cuadro de diálogo "propiedades" en VS).

Era como si la actualización almacenara los contenedores viejos en algún área oculta, donde no podrían eliminarse (pero también interferir con la adición del mismo contenedor). Cambiar a basado en el usuario permite una borrón y cuenta nueva desde la perspectiva del usuario actual. Tenga en cuenta que si tiene varios usuarios en la misma máquina, es probable que cada uno de ellos tenga que registrar los certificados.