Estoy tratando de configurar una compilación de integración continua en TFS 2008. En el proyecto que queremos construir yo uso una clave para la firma. Esta clave se utiliza una contraseña. Yo no puedo llegar a construir, porque durante la construcción de TFS quiere mostrar un cuadro de diálogo en el que no puede ser demostrado. Yo creo que es necesario para construir el proyecto con la mano en el servidor, pero sólo el TFS explorer y construir componentes están instalados en el servidor. Alguna sugerencia sobre cómo hacer que mi proyecto para construir adecuadamente?

Este es el error dado por TFS:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1805,7):
error MSB4018: El «ResolveKeySource»
la tarea se produjo un error inesperado.
Sistema.InvalidOperationException:
Muestra un cuadro de diálogo modal o formulario
cuando la aplicación no se está ejecutando en
UserInteractive modo no es válido
operación. Especificar el
ServiceNotification o
DefaultDesktopOnly estilo para mostrar un
la notificación de un servicio
aplicación. en
Sistema.Windows.Los formularios.El formulario.ShowDialog(IWin32Window
propietario) en
Sistema.Windows.Los formularios.El formulario.ShowDialog()
en
Microsoft.Construir.Tareas.ResolveKeySource.ResolveAssemblyKey()
en
Microsoft.Construir.Tareas.ResolveKeySource.Execute()

InformationsquelleAutor Sorskoot | 2009-06-29

1 Comentario

  1. 34

    Este blog a continuación se detallan los pasos exactos

    Las Claves De Instalación De Los Archivos De

    Crear una contraseña-protegida de claves pública/privada de par (Par.pfx) usando el Visual Studio «Firma» tabulaciones en las propiedades del proyecto
    Extraer la clave pública del par de claves y copiarlo en un archivo separado (la Clave.snk)
    sn.exe -p Par de claves.pfx Clave.snk

    Copia el Par de claves.pfx a su servidor de compilación. Yo uso C:\Program Files\MSBuild\KeyFile.pfx, ya que pueden acceder a la $(MSBuildExtensionsPath) MSBuild de la propiedad.
    Mover el Par de claves.archivo pfx caja fuerte & lugar seguro. Mantener en secreto la contraseña también.
    Copia de la Clave.snk a una ubicación compartida donde los desarrolladores pueden acceder a ella.
    Los Proyectos de instalación para la Firma de

    Para cada asamblea que desea firmar:

    1. Abrir las Propiedades del Proyecto | página Firma
    2. Seleccione la opción [X] Signo de la asamblea casilla de verificación.
    3. Seleccione la [X] de signo de Retraso única casilla de verificación.
    4. Seleccione desde la tecla desplegable archivo.
    5. Vaya a la ubicación compartida y seleccione la Clave.archivo snk
    6. El archivo snk se copiarán en cada directorio del proyecto que se le asigna a
    7. Copiar el archivo de la clave de uno de sus proyectos en la Solución de los Elementos de manera que se puede utilizar para la ejecución de la prueba de configuración

    Instalación de la Ejecución de la Prueba de Configuración para Volver a Firmar

    Si quieres instrumento de sus asambleas y habilitar la Cobertura de Código para su unidad de pruebas, entonces usted necesita para especificar un archivo de clave para volver a firmar.

    Abrir el LocalTestRun.archivo testrunconfig
    En el Código de la Cobertura de la ficha, seleccione la clave, como la Re-clave de Firma de archivo

    Deshabilitar Fuerte-Nombre de Verificación en Estaciones de trabajo de Desarrollador

    Desde que te demora-la firma sólo con la clave pública .NET CLR asamblea de verificación fallará con las asambleas construido localmente. Cuando la verificación falla, usted no será capaz de ejecutar o depurar las asambleas.

    Para superar esta en desarrollo, necesita desactivar el fuerte-nombre de la verificación de las asambleas que construir localmente y retraso-firmar con su clave pública.

    Abra un Símbolo del sistema de Visual Studio
    Tipo:
    sn.exe -tp Key.snk

    Esta es la salida de algunos datos, incluyendo el símbolo (token).

    Tipo:
    sn -Vr *,YOUR_KEY_TOKEN

    ejemplo: sn -Vr *,0123456789abcdef

    Se va a deshabilitar la comprobación de nombre seguro para todas las asambleas firmado con su clave pública.
    Puede hacer una lista de la configuración actual para la comprobación de nombre seguro con:
    sn -Vl

    La instalación de la Clave Privada para Equipo de construcción

    Ya que la clave privada (Key.pfx) está protegido por contraseña – Equipo de construcción no pueden acceder a él. Gracias a Nagaraju Palla del Blog: el Uso de la Contraseña Protegida Claves de Firma en Equipo de construcción, tenemos una solución.

    De inicio de sesión para el Equipo servidor de generación como la generación de la cuenta de servicio
    Abra el proyecto en Visual Studio
    Construir el proyecto en Visual Studio
    Se le pedirá la contraseña para el archivo de clave privada.
    Introduzca la contraseña
    Cierre Visual Studio & cerrar Sesión
    El archivo de clave privada está ahora instalado en el servicio de generación de la cuenta de almacén de certificados local y Equipo de construcción se puede acceder a él sin pedir la contraseña de nuevo. Este almacén de certificados es tan seguro como el servicio de generación de contraseña de la cuenta. (Sugerencia: que sea tan fuerte como el fichero de claves de la contraseña)

    Actualización TFSBuild.proj Script de Compilación

    Equipo de construcción tiene acceso a la privada fichero de claves de usuario y contraseña. Esto le permite a una señal de las asambleas.

    Para invalidar la configuración del proyecto y de instruir Equipo de construcción a utilizar el archivo de claves privadas y desactivar parcial de firma, necesitamos establecer la CustomPropertiesForBuild propiedad en TFSBuild.proj

    Salida de su TFSBuild.proj script de compilación
    La búsqueda de la propiedad de marcador de posición (cerca de la línea 130 por defecto)
    Reemplazarla con la siguiente:

    SignAssembly=true;DelaySign=false;AssemblyOriginatorKeyFile=$(MSBuildExtensionsPath)\Clave.pfx

    El Check-in los cambios
    La cola de una generación
    Verificar el Equipo de salida de la Compilación

    Para comprobar que el Equipo de Construir correctamente fuertemente nombre de sus asambleas, puede utilizar la sn.exe utilidad para comprobar el fuerte nombre de la firma.

    Abra un Símbolo del sistema de Visual Studio
    Tipo:
    sn.exe -vf assemblyname.dll

    También puede comprobar todas sus asambleas al mismo tiempo:

    Abra un Símbolo del sistema de Visual Studio
    Tipo:
    PARA %a IN (*.dll) ¿sn.exe -vf %un

    • Gran respuesta, Gracias! pero correr en algunos problemas al intentar generar el proyecto manualmente para obtener la clave instalado. No tengo el «normal» de visual studio instalado, sólo tfs explorer y compilación de tfs. ¿esto significa que tengo para instalar el equipo de dev con el fin de construir mi proyecto sólo una vez?
    • ¿Cuál es el mensaje de error?
    • No me da un error. Excepto para el MSB4018 de mi pregunta cuando dejar de tfs hacer el edificio. Me quedé atrapado después de abrir el proyecto en Visual studio en el servidor de compilación. Todo el proyecto es de color gris, porque sólo tengo la concha con la construcción de los servicios instalados en el servidor. Creo que estoy supervisando algo aquí 😉
    • Seguramente no es necesario abrir el proyecto en el servidor de compilación como su MSBuild script hará la construcción?
    • Fijo que… tenía que correr de MSBuild desde la línea de comandos 😉 MSBuild se almacena en c:\windows\Microsoft.NET\FrameWork\v3.5 de forma predeterminada, tenía que hacer una búsqueda para que. Tienes toda la búsqueda y ejecutar sólo MSBuild sin parámetros de la \TeamBuildTypes\CI directorio donde está el script de compilación se encuentra. Gracias de nuevo!
    • Esto es EXACTAMENTE lo que estaba buscando! Gracias!!
    • Lo que si está utilizando Visual Studio Online(Microsoft hosted TFS solución)? No tener acceso a un equipo de generación que puede iniciar sesión en.

Dejar respuesta

Please enter your comment!
Please enter your name here