Nous avons un fichier MsBuild.proj qui contient la section suivante (simplifiée):Comment faire pour qu'une cible dans un fichier msbuild ne soit appelée qu'une seule fois?
<Target Name="WEB" DependsOnTargets="CleanResults;UpdateAssemblyInfo;Services;Business">
<!-- Other build and release stuff -->
<MSBuild Projects="$(CreateInstallValuesScriptProjectFile)" Properties="DatabaseStructureLocation=$(DatabaseDirectory)\Sandbox\002.Structure" />
</Target>
Fondamentalement, le InstallValuesScript génère un fichier sql dans notre DatabaseDirectory, qui mettra à jour la version de notre application dans le base de données. Assez simple.
La construction est appelée en tant que tel:
MSBuild msbuild.proj /m /t:WEB /p:Configuration=Release;DoRelease=true;DoSandBox=false;DoWix=false /fileLoggerParameters:LogFile=msbuild.log;Verbosity=normal;Encoding=UTF-8
Cependant, ce que nous voyons est que la section InstallValues est appelée plusieurs fois, et par conséquent ce fichier est créé deux ou trois fois, et différents emplacements ... Evidemment quand la compilation est compilée deux ou trois fois au lieu d'une seule fois, c'est ennuyeux mais pas vraiment critique (ça devient un peu plus lent), cependant pour ce fichier InstallValues, nous ne voulons pas en avoir plusieurs instances .
Alors qu'est-ce qui donne, peut-on appeler une cible plusieurs fois? Peut-être causé par la compilation d'un assembly dépendant? Une certaine lumière sur ce phénomène étrange serait très appréciée.
Oui, très probablement le problème sera une imbrication d'appels. Je ferais peut-être mieux de refaire la construction à partir de zéro, je pense. Mais merci de me pointer vers les journaux, toujours vérifier la solution évidente d'abord :) – Sam
MSBuild n'appellera pas la cible plusieurs fois même avec ''. La seule façon d'y parvenir est d'utiliser la tâche '' spécifiant différentes propriétés. –
@Dmitry Lobanov: Corrigé. @ Sam: Désolé pour la désinformation –