2009-07-16 6 views
0

バッチファイルから実行できるNAntビルドファイルを持つプロジェクトがいくつかあります。私たちはビルドをSubversionフックにつなぎ、テストの実行を自動化できるように、この方向に向かった。しかし、NAntビルドの出力は、F5を押したときにVSによって生成されるものとは大きく異なります。VS2005でF5キーを押したときにNAntビルドとデバッグを実行する方法

私たちは、次の操作を実行するF5の動作を無効にできるようにしたいと思います:

  • プロジェクトとの依存関係を構築するためにNAntのスクリプトを実行します(ビルドファイルは、デバッグ構成です)。
  • デバッグモードでターゲットディレクトリからプロジェクトを開始すると、ブレークポイントにヒットする可能性があります。ここで

私たちのビルドファイルの一つのサンプルです:

<?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

ナントビルド内からデバッグしようとしていますか?何かを構築してからソリューションを開き、手動でデバッグを開始させてみませんか? – Eugene

+0

明確にする(うまくいけば)私たちはF5キーを押して、IDEにNAntビルドでコンパイルされたコードを実行させ、デバッグモードでブレークポイントを押してコードをステップ実行できるようにします。 –

+0

どのようにソリューションを構築しますか? タスクまたはタスクを使用していますか?パラメータは何ですか? – Eugene

答えて

1

あなたはおそらく、あなたが開発マシン上で手動のものを構築するために使用VSソリューションを持っています。同じバイナリの2つの別々のプロジェクトを持っているのは悪い考えです。最初に同期させることができたとしても、すぐに同期が外れます。

私はあなたがNAntのを使用する必要がある場合のexecタスクでそれを構築し、あなたのソリューションファイルを使用することをお勧めし、視覚的なスタジオを持っている:

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

テストはどちらかによって、再び(テストプロジェクトのポストビルドイベントの一部として実行する必要がありますVS自体)、VSが完了した後にそれらを実行することができます。

このように作成されたバイナリは、同じソースツリーで同じソリューションファイルを開いて同じ設定とプラットフォームを選択すると仮定すると、Visual Studioの手動実行と正確に互換性があります。

関連する問題