2009-10-05 12 views
1

J'ai un script de build en cours d'exécution, mais j'ai du mal à faire quoi que ce soit après la fin de aspnet_compiler. Je veux utiliser robocopy pour copier le projet dans un autre dossier. Si je mets la tâche de copie au-dessus de la compilation (comme montré ci-dessous) je reçois le message à la console, mais si je le place après la compilation, il n'est pas vu. Est-ce que je manque quelque chose? Ai-je besoin de rechercher un code de retour du compilateur pour appeler des tâches après son achèvement?Compilateur NAnt et ASP.NET

<target name="copy" depends="init"> 
    <echo message="This is my message for robocopy..."/> 
</target> 

<target name="compile" depends="copy"> 
    <exec program="${msbuild.exe}" 
      commandline='MySolution.sln /p:Configuration=${Configuration};OutDir="${build.dir}\\"' /> 
</target> 

<target name="precompile-web" depends="compile"> 
    <exec program="${aspnet_compiler.exe}" 
     commandline='-v /MyProj-p "${build.dir}"\_PublishedWebsites\MyProj.Web' 
     /> 

Et oui, quand/si je déplace la tâche de copie ci-dessous precompile-web je change la depends = "précompilation-web" et la tâche de compilation dépend de "init".

Répondre

1

Si je vous comprends bien ici, vous voulez:

  1. Copiez les fichiers
  2. les compiles en utilisant MSBuild
  3. Precompile les pour le web

Est-ce exact? J'aurais pensé que vous voudriez le faire de cette façon autour de:

  1. compiler les fichiers en utilisant MSBuild
  2. Precompile eux pour le web
  3. Copiez les fichiers à un autre endroit (pour une utilisation par IIS, etc.)

Si mon chemin est correct, alors je suppose que vous voudriez que vos cibles se réfèrent les unes aux autres comme ça?

<target name="compile-and-publish" depends="compile,precompile-web,copy" /> 

<target name="compile"> 
    <exec program="${msbuild.exe}" commandline='MySolution.sln /p:Configuration=${Configuration};OutDir="${build.dir}\\"' /> 
</target> 

<target name="precompile-web"> 
    <exec program="${aspnet_compiler.exe}" commandline='-v /MyProj-p "${build.dir}"\_PublishedWebsites\MyProj.Web' /> 
</target> 

<target name="copy" depends="init"> 
    <echo message="This is my message for robocopy..."/> 
</target> 

De cette façon, vous n'êtes pas épingler chacun de vos objectifs vers le bas pour se fondant sur d'autres cibles (pour la réutilisation), mais vous obtenez l'ordre que vous avez besoin pour réaliser la tâche à accomplir.

Quel est bon pour vous?

+0

Oui Je voulais accomplir ce que vous avez supposé, le deuxième ensemble de commandes. Le problème était dans l'ordre dans lequel je les ai fait virer. Merci. –