La réponse à cette question peut être trouvée dans l' Microsoft.Common.targets
le fichier qui peut être trouvé (selon que vous utilisez la version 64-bits ou 32-bits-cadre) à: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.target
64 bits et
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
pour les 32 bits de l'exécution. Ce fichier définit toutes les étapes d'une construction de votre projet est soumis. En citant la source:
<!--
============================================================
Build
The main build entry point.
============================================================
-->
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuild
</BuildDependsOn>
</PropertyGroup>
Le code est assez gentil pour expliquer l'utilisation de l' BeforeBuild
et AfterBuild
de la cible dans les commentaires pour les deux cibles.
<!--
============================================================
BeforeBuild
Redefine this target in your project in order to run tasks just before Build
============================================================
-->
<Target Name="BeforeBuild"/>
<!--
============================================================
AfterBuild
Redefine this target in your project in order to run tasks just after Build
============================================================
-->
<Target Name="AfterBuild"/>
Elle est suivie par la définition de l' CoreBuild
cible:
<PropertyGroup>
<CoreBuildDependsOn>
BuildOnlySettings;
PrepareForBuild;
PreBuildEvent;
ResolveReferences;
PrepareResources;
ResolveKeySource;
Compile;
UnmanagedUnregistration;
GenerateSerializationAssemblies;
CreateSatelliteAssemblies;
GenerateManifests;
GetTargetPath;
PrepareForRun;
UnmanagedRegistration;
IncrementalClean;
PostBuildEvent
</CoreBuildDependsOn>
</PropertyGroup>
Si l' Build
cible est juste un wrapper autour de l' CoreBuild
de la cible pour vous permettre d'effectuer les étapes personnalisées juste avant ou après l' CoreBuild
de la cible. Comme peut être vu au-dessus de l' PreBuildEvent
et PostBuildEvent
sont listés comme des dépendances de l' CoreBuild
de la cible. Les dépendances de l' Compile
de la cible sont définis comme suit:
<PropertyGroup>
<CompileDependsOn>
ResolveReferences;
ResolveKeySource;
SetWin32ManifestProperties;
_GenerateCompileInputs;
BeforeCompile;
_TimeStampBeforeCompile;
CoreCompile;
_TimeStampAfterCompile;
AfterCompile
</CompileDependsOn>
</PropertyGroup>
Nouveau BeforeCompile
et AfterCompile
font l'objet de commentaires dans le code:
<!--
============================================================
BeforeCompile
Redefine this target in your project in order to run tasks just before Compile.
============================================================
-->
<Target Name="BeforeCompile"/>
<!--
============================================================
AfterCompile
Redefine this target in your project in order to run tasks just after Compile.
============================================================
-->
<Target Name="AfterCompile"/>
Compte tenu de cette information, je ne sais pas pourquoi AppHarbor ne prend pas en charge Pre-, PostBuildEvent
tandis que l' Build
peut être modifié à l'aide d' Before-, AfterBuild
.
Le choix de ce qui Target
de remplacer pour qui le scénario dépend du moment, au cours de la génération à laquelle vous souhaitez effectuer votre tâche donnée. Les cibles n'ont pas de restrictions et/ou des avantages à ce qu'ils peuvent accomplir. Outre le fait qu'ils puissent s' ItemGroup
's ou des propriétés qui ont été définis/rempli par les étapes précédentes.
À l'aide de nuget à apporter dans des paquets est probablement préférable d'effectuer avant de la construire essaie de résoudre les projets de dépendances. Donc, BeforeCompile
n'est pas un bon candidat pour ce type d'action.
J'espère que cela jette une certaine lumière sur la question. Trouvé une autre belle explication sur MSDN