2010-09-20 8 views
9

Possible Duplicate:
TFS 2010 Custom Build Activity TF215097 errorerror 'TF215097: ... No se puede crear un tipo desconocido para ...' costumbre CodeActivity

Estoy intentando crear un CustomActivity a correr detrás de cada generación exitosa.

He seguido los pasos exactos de varios tutoriales

  1. http://blogs.blackmarble.co.uk/blogs/rfennell/archive/2010/03/08/lessons-learnt-building-a-custom-activity-to-run-typemock-isolator-in-vs2010-team-build.aspx

  2. http://www.ewaldhofman.nl/post/2010/04/29/Customize-Team-Build-2010-e28093-Part-4-Create-your-own-activity.aspx

  3. http://www.dotnetcurry.com/ShowArticle.aspx?ID=522&AspxAutoDetectCookieSupport=1

y todos tienen me llevan a la misma r esultado - La generación falla después de varios segundos con este error:

TF215097: An error occurred while initializing a build for build definition 
\MyCompany\Dev - Client: Cannot create unknown type '{clr- 
namespace:BuildTasks.Activities;assembly=BuildTasks}TFSBuildLocalizer'. 

que descendió a un punto en el que he eliminado todas las referencias personalizados que tenía en el proyecto CodeActivity y comentado a cabo todo el código.

He añadido el archivo DLL de salida a la TFS, y tengo la siguiente secuencia de comandos posterior acumulación en las propiedades del proyecto:

"$(DevEnvDir)\TF.exe" checkout "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)" 
copy /Y "$(TargetPath)" "C:\tfs2010\MyCompany\Dev\Tools\BuildProcess\Output\$(TargetFileName)" 
"$(DevEnvDir)\TF.exe" checkin "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)" 

me he asegurado de que el espacio de nombres en el xaml flujo de trabajo es correcto para el CodeActivity personalizado.

no tengo ni idea de qué más puedo intentar,

Por favor, ayuda!

Gracias,

EDIT: Estoy agregando más descripciones acerca de lo que ya he intentado:

La clase CodeActivity ya tienen el atributo:

[BuildActivity(HostEnvironmentOption.All)] 

La clase CodeActivity está contenido dentro de un proyecto de Biblioteca de actividades. Aquí es la etiqueta ProjectTypeGuids dentro del archivo csproj:

<ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

En el xaml flujo de trabajo personalizado que he añadido mi CodeActivity justo después de "hacerse la prueba, Indice impactadas y Publicar Símbolos"

actualmente I don' Tengo cualquier InArgument o OutArgument en mi CodeActivity.

Estas son las referencias en mi proyecto CodeActivity:

  • Microsoft.CSharp
  • Microsoft.TeamFoundation.Build.Client
  • Sistema
  • System.Activities
  • System.Core
  • Sistema.Datos
  • System.Data.DataSetExtensions
  • System.Xaml
  • System.XML
  • System.Xml.Linq
  • WindowsBase

En "Propiedades Build Controller" yo he dado la " Ruta de control de versiones a conjuntos personalizados "con la misma ruta TFS que mi script de compilación posterior: $/MyCompany/Development/Djenne/DEV/Tools/BuildProcess/Output

En mi definición de compilación, configuré "Plantilla de proceso de compilación" con mi flujo de trabajo personalizado xaml.

Gracias a todos por las respuestas, ¿tiene más ideas? Gracias

+0

Estoy experimentando el mismo problema ... – joerage

+0

Para mí, nada de eso responde aquí ha ayudado, pero este ayudará: http://www.hugohaggmark.com/2011/09/08/stuck-on -cannot-create-unknown-type-clr-namespace-in-tfs-build/ –

Respuesta

7

Ok, tengo esto resuelto.

Esto es lo que funcionó para mí:

He instalado mi dll al GAC en el servidor de compilación, corrió la acumulación y de repente funcionó!

gacutil.exe /i buildtasks 

Después, desinstalé el dll del GAC y sigue funcionando aún.

gacutil.exe /u buildtasks 

Otra cosa, mi proyecto tenía varias referencias que también tenía que el registro en el mismo directorio que la propia DLL CodeActivity. hacerlo así que he cambiado script posterior construcción de mi proyecto:

cd "C:\tfs2010\Djenne\Dev\Tools\BuildProcess\Output\" 
"$(DevEnvDir)\TF.exe" checkout "$/TradeNetworks/Development/Djenne/Dev/Tools/BuildProcess/Output/*.*" 
xcopy "$(TargetDir)*.*" "C:\tfs2010\Djenne\Dev\Tools\BuildProcess\Output\" /E /R /C /Y 

El único que queda por hacer ahora es averiguar cómo depurar esta maldita cosa. Pero ese es un problema para otra pregunta.

Gracias a todos los que ayudaron,

espero que esto ayudará a cualquier persona en el futuro.

EDIT:

Una cosa más que he notado es que cada vez que editar mi flujo de trabajo personalizado, se regenera el XAML y elimina el "; montaje = BuildTasks" sufijo de la costumbre CodeActivity espacio de nombres (xmlns) Entonces, después de cada cambio, necesito editar el xaml para arreglarlo una y otra vez, de lo contrario, el mismo error vuelve a ocurrir.

+1

+1 para notar el problema en su edición: también tengo que agregar manualmente el; assembly = bit a mi atributo xmlns: local – isNaN1247

+0

Editar para editar en negrita , para evitar que otros golpeen sus cabezas contra la pared como acabo de hacer. – Stu

+0

La edición en esta respuesta fue clave para mi éxito +1 a beardwizzle y Capitán. – Blanthor

0

El problema puede estar relacionado con que la salida dll esté en TFS.

Lo que puede pasar es la siguiente:

  • TFS hace un recibir las últimas
  • El DLL de salida es inverosímil y sólo
  • TFS trata de construir
  • La acumulación intenta escribir se lee la DLL
  • Desde la DLL es de sólo lectura se obtiene una excepción
+0

¿Por qué los TFS intentarían escribir en el dll? Además, en ese caso la excepción debería haber sido algún tipo de excepción IO y no "No se puede crear tipo desconocido" ¿No crees? – Captain

+0

No TFS, la compilación, construye el código fuente y envía el dll a la misma ubicación que el dll que está registrado en TFS. Es muy frecuente que los mensajes de error de TFS sean totalmente incorrectos –

+0

Ok, entonces, ¿qué puedo hacer para solucionarlo? – Captain

3

¿Dónde está el montaje de su CustomActivity? Debe agregar este ensamblaje al control de fuente e introducirlo en el Controlador de compilación que está utilizando. Para esto:

  1. Haga clic derecho en el nodo Builds.
  2. Seleccione Administrar controladores de compilación.
  3. Haga clic en Propiedades.
  4. En la sección "Ruta de control de versiones a conjuntos personalizados", presente su ensamblaje.
+0

afsharm, ya lo hice. – Captain

+0

@ Captain, ¿Estás seguro de que has registrado el último ensamblaje? –

+1

Esto es raro explicado en MSDN. No debe agregar solo el proyecto/solución al control de origen, sino también el archivo de ensamblaje que contiene la actividad. Sé que TFS debería resolverlo por sí mismo, pero no hace falta – Raffaeu

1

Tuve exactamente el mismo problema. La razón fue que había compilado la biblioteca con las actividades personalizadas contra la plataforma x86 y el controlador de compilación se estaba ejecutando en una máquina virtual de Windows 2008 de 64 bits. Cambiar la plataforma de destino a AnyCPU permitió al controlador de compilación utilizar de inmediato la biblioteca sin tener que agregarla al GAC.

+0

¡Bienvenido a Stack Overflow! Tenga cuidado cuando publique copiar y pegar respuestas al pie de página o verbatim a preguntas múltiples, estas tienden a ser señaladas como "basura" por la comunidad. Si está haciendo esto, generalmente significa que las preguntas son duplicadas, por lo tanto, márquelas como tales. – Kev

Cuestiones relacionadas