2009-10-28 12 views
9

He escrito una tarea de MSBuild que utiliza conjuntos de terceros.Tarea personalizada de MSBuild con dependencias

Cuando utilizo la tarea en mi proyecto, MSBuild se queja de que no puede cargar los ensamblados de terceros (como es lógico).

Dónde debo ubicar los ensamblados de terceros para que estén disponibles para MSBuild. Intenté agregar referencias de proyectos sin éxito.

Respuesta

9

No estoy seguro si expresé mi problema muy bien, pero ahora encontré la solución.

En mi archivo .proj, me refiero a mi tarea personalizada con la siguiente sintaxis ...

<UsingTask AssemblyFile="..\lib\MyCompany.MSBuild\MyCompany.MSBuild.dll" TaskName="CreateDatabase" /> 

Mi tarea CreateDatabase se basa en diversos montajes tercera partes. Sin embargo, algunos de ellos solo se referencian por reflexión, por lo que no se incluyeron por defecto en la carpeta ".. \ lib \ MyCompany.MSBuild".

He intentado que la tarea funcione al colocar los ensamblados necesarios en el mismo directorio que el archivo .proj que invoca la tarea.

Sin embargo, lo que debería haber estado haciendo era colocar los ensamblados en el directorio de tareas al que se hace referencia ".. \ lib \ MyCompany.MSBuild \".

¡Simple!

1

Puede agregarlos al GAC (Global Assemby Cache). Esto solo funciona si tiene un nombre fuerte.

También podría asegurarse de haberlos marcado con copy local = true cuando agregó la referencia en el proyecto.

Cuestiones relacionadas