web-dev-qa-db-fra.com

Ajouter une tâche msbuild qui s'exécute après la création d'un projet .NET Core dans Visual Studio 2017 RC

Existe-t-il quelque chose comme la cible AfterBuild dans msbuild avec .NET Core dans Visual Studio 2017 RC?

J'ai essayé d'ajouter les éléments suivants coupés dans le fichier .csproj, mais il n'est pas exécuté lors d'une génération (contrairement à VS2015 où cela fonctionne).

<Target Name="AfterBuild">
  <Message Importance="High" Text="This is a test" />
</Target>

Une autre découverte intéressante: comme je pensais que la cible AfterBuild aurait pu être supprimée - en exécutant msbuild <project.csproj> /t:AfterBuild ne semble pas appeler la cible ajoutée. Si je renomme la cible en "Test", appelez-la avec msbuild <project.csproj> /t:Test ça marche très bien.


De plus, existe-t-il de la documentation sur la version de msbuild (et éventuellement les scripts de build .NET Core) livrés avec Visual Studio 2017 RC?

20
Fionn

Une alternative consiste à utiliser l'attribut AfterTargets sur la cible. Quelque chose comme:

<Target Name="TestTarget" AfterTargets="Build">
  <Message Importance="High" Text="This is a test" />
</Target>

Je ne sais pas pourquoi "AfterBuild" ne fonctionnerait plus, mais cela semble être une décision consciente des responsables de MSBuild (h/t à Livven pour me signaler ce problème de github) . "AfterBuild" était un nom spécial utilisé par la cible Build. La version actuelle de Microsoft.Common.CurrentVersion.targets l'a toujours:

  <PropertyGroup>
    <BuildDependsOn>
      BeforeBuild;
      CoreBuild;
      AfterBuild
    </BuildDependsOn>
  </PropertyGroup>
  <Target
      Name="Build"
      Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
      DependsOnTargets="$(BuildDependsOn)"
      Returns="$(TargetPath)" />
  <!--
34
Mike Zboray