Как запустить сборку NAnt и отладку при нажатии F5 в VS2005? - PullRequest
0 голосов
/ 16 июля 2009

У нас есть несколько проектов, в которых есть файлы сборки NAnt, которые мы можем запустить из пакетных файлов. Мы пошли в этом направлении, чтобы связать сборки с хуками Subversion и автоматизировать запуск тестов. Однако вывод сборки NAnt значительно отличается от того, что генерируется VS, когда мы нажимаем F5.

Мы хотели бы иметь возможность переопределить поведение 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>

1 Ответ

1 голос
/ 16 июля 2009

Вероятно, у вас есть решение VS, которое вы используете для сборки вещей вручную на машинах разработки. Как правило, плохая идея иметь два отдельных проекта для одного и того же бинарного файла - он будет совершенно не синхронизирован, даже если вам удастся привести его в синхронизацию.

Я предлагаю вам использовать файл решения и сделать так, чтобы Visual Studio создала его с задачей exec, если вы должны использовать nant:

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

Тесты должны выполняться либо как часть событий после сборки тестового проекта (опять-таки самой VS), либо вы можете запустить их в nant после завершения VS.

Двоичные файлы, созданные таким образом, будут точно совместимы с запуском Visual Studio вручную (при условии, что вы откроете один и тот же файл решения в том же дереве исходных текстов и выберите ту же конфигурацию и платформу).

...