2009-10-28 8 views
9

J'ai écrit une tâche MSBuild qui utilise des assemblys tiers. Lorsque j'utilise la tâche dans mon projet, MSBuild se plaint de ne pas pouvoir charger les assemblages tiers (ce qui n'est pas surprenant).Tâche MSBuild personnalisée avec dépendances

Où dois-je placer les assemblys tiers pour qu'ils soient disponibles pour MSBuild. J'ai essayé d'y ajouter des références de projet sans succès.

Répondre

9

Je ne sais pas si j'ai très bien exprimé mon problème, mais maintenant j'ai trouvé la solution.

Dans mon dossier .proj, je référence ma tâche personnalisée avec la syntaxe suivante ...

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

Ma tâche CreateDatabase repose sur diverses assemblées 3 parties. Cependant, certaines d'entre elles ne sont référencées que par réflexion, elles n'étaient donc pas incluses par défaut dans le dossier ".. \ lib \ MyCompany.MSBuild".

J'avais essayé de faire fonctionner la tâche en plaçant les assemblys requis dans le même répertoire que le fichier .proj invoquant la tâche. Cependant, ce que j'aurais dû faire était de placer les assemblages dans le répertoire de tâches référencé ".. \ lib \ MyCompany.MSBuild \".

Simple!

1

Vous pouvez les ajouter au GAC (Global Assemby Cache). Cela ne fonctionne que s'il est fortement nommé.

Vous pouvez également vous assurer que vous les avez marqués avec copy local = true lorsque vous avez ajouté la référence dans le projet.

Questions connexes