2009-07-16 5 views
0

Nous avons un certain nombre de projets qui ont des fichiers de construction NAnt que nous pouvons exécuter à partir de fichiers batch. Nous sommes allés dans cette direction afin que nous puissions lier les builds à des hooks de subversion et automatiser l'exécution des tests. Cependant, la sortie de la construction NAnt est significativement différente de celle générée par VS lorsque nous appuyons sur F5.Comment exécuter NAnt build puis déboguer lorsque vous appuyez sur F5 dans VS2005

Nous voudrions pouvoir remplacer le comportement F5 pour effectuer les opérations suivantes:

  • exécuter le script NAnt pour construire le projet et les dépendances (le fichier de construction est une configuration de débogage).
  • Démarrez le projet à partir du répertoire cible en mode débogage afin que les points d'arrêt puissent être atteints.

Voici un exemple d'un de nos fichiers de construction:

<?xml version='1.0' ?> 
<project name='DWS.WI.Data.Common' default='all' xmlns='http://nant.sf.net/schemas/nant.xsd'> 
    <property name='dbuild.dir' value='build\debug' /> 
    <property name='nant.settings.currentframework' value='net-2.0' /> 
    <property name='debug' value='true' /> 

    <!-- User targets --> 
    <target name='all' /> 
    <target name='cleandeb' description='remove previous debug build files'> 
     <delete dir='${dbuild.dir}' if='${directory::exists(dbuild.dir)}' /> 
    </target> 
    <target name='init'> 
     <mkdir dir='build' /> 
     <mkdir dir='build\debug' /> 
     <mkdir dir='build\release' /> 
    </target> 
    <!-- --> 
    <target name='debug' depends='cleandeb, init' description='Compiles the projects in debug mode'> 
     <csc target='library' output='build\debug\${project::get-name()}.dll' rebuild='true' debug='true'> 
      <sources> 
       <include name='src\app\DWS.WI.Data.Common\*.cs' /> 
       <include name='src\app\DWS.WI.Data.Common\Properties\AssemblyInfo.cs' /> 
      </sources> 
     </csc> 
     <csc target='library' output='build\debug\DWS.WI.Data.Oracle.dll' rebuild='true' debug='true'> 
      <references> 
       <include name='build\debug\DWS.WI.Data.Common.dll' /> 
      </references> 
      <sources> 
       <include name='src\app\DWS.WI.Data.Oracle\*.cs' /> 
       <include name='src\app\DWS.WI.Data.Oracle\Properties\AssemblyInfo.cs' /> 
      </sources> 
     </csc> 
     <csc target='library' output='build\debug\DWS.WI.Data.SQL.dll' rebuild='true' debug='true'> 
      <references> 
       <include name='build\debug\DWS.WI.Data.Common.dll' /> 
       <include name='libs\Microsoft.SqlServer.ConnectionInfo.dll' />> 
       <include name='libs\Microsoft.SqlServer.Smo.dll' /> 
       <include name='libs\Microsoft.SqlServer.SqlEnum.dll' /> 
      </references> 
      <sources> 
       <include name='src\app\DWS.WI.Data.SQL\*.cs' /> 
       <include name='src\app\DWS.WI.Data.SQL\Properties\AssemblyInfo.cs' /> 
      </sources> 
     </csc> 
    </target> 
    <target name='test' depends='debug'> 
     <csc target='library' output='build\debug\DWS.WI.Data.Fake.Test.dll' debug='true'> 
      <sources> 
       <include name='src\test\DWS.WI.Data.Fake.Test\*.cs' /> 
      </sources> 
      <references> 
       <include name='build\debug\DWS.WI.Data.Common.dll' /> 
       <include name='build\debug\DWS.WI.Data.Fake.dll' /> 
       <include name='tools\nunit\nunit.framework.dll' /> 
      </references> 
     </csc> 
    </target> 
</project> 
+0

Etes-vous en train d'essayer de déboguer directement à partir de nant build? Pourquoi ne pas le laisser construire des choses, puis ouvrir la solution et lancer le débogage manuellement? – Eugene

+0

Pour clarifier (heureusement) Nous voulons appuyer sur F5 et demander à l'IDE d'exécuter le code compilé par une compilation NAnt, et de l'exécuter en mode débogage pour pouvoir atteindre les points de rupture et parcourir le code. –

+0

Comment construisez-vous la solution? Avec la tâche ou avec la tâche ? Et quels sont les paramètres? – Eugene

Répondre

1

Vous avez probablement une solution VS que vous utilisez pour construire des choses manuellement sur les machines de développement. Il est généralement une mauvaise idée d'avoir deux projets séparés pour le même binaire - se désynchroniser tout à fait immédiatement, même si vous parvenez à le synchroniser en premier lieu.

Je vous suggère d'utiliser votre fichier de solution et d'avoir visual studio construire avec la tâche exec si vous devez utiliser Nant:

<exec program="${environment::get-variable('VS80COMNTOOLS')}../IDE/devenv.com"> 
    <arg value="${solution_path}"/> 
    <arg value="/build"/> 
    <arg value="Debug|Win32"/> 
</exec> 

Les tests doivent être soit exécutés dans le cadre du poste de projet de test des événements de construction (encore une fois, par VS lui-même), ou vous pouvez les lancer dans nant après VS.

Les fichiers binaires créés de cette manière seraient exactement compatibles avec l'exécution manuelle de Visual Studio (en supposant que vous ouvriez le même fichier de solution dans la même arborescence source et que vous sélectionniez la même configuration et la même plate-forme).

Questions connexes