Visual studio 在VS2005中按F5时,如何运行NAnt构建然后调试
我们有很多项目都有NAnt构建文件,可以从批处理文件运行。我们朝着这个方向前进,以便将构建与subversion挂钩联系起来,并自动运行测试。然而,NAnt构建的输出与我们按下F5时VS生成的输出有很大的不同 我们希望能够覆盖F5行为以执行以下操作: 运行NAnt脚本以生成项目和依赖项。生成文件是调试配置。 在调试模式下从目标目录启动项目,以便可以命中断点。 以下是我们的一个构建文件的示例:Visual studio 在VS2005中按F5时,如何运行NAnt构建然后调试,visual-studio,nant,Visual Studio,Nant,我们有很多项目都有NAnt构建文件,可以从批处理文件运行。我们朝着这个方向前进,以便将构建与subversion挂钩联系起来,并自动运行测试。然而,NAnt构建的输出与我们按下F5时VS生成的输出有很大的不同 我们希望能够覆盖F5行为以执行以下操作: 运行NAnt脚本以生成项目和依赖项。生成文件是调试配置。 在调试模式下从目标目录启动项目,以便可以命中断点。 以下是我们的一个构建文件的示例: <?xml version='1.0' ?> <project name='DWS.W
<?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>
您可能有一个VS解决方案,用于在开发机器上手动构建东西。对于同一个二进制文件,有两个单独的项目通常是一个坏主意——这会很快失去同步,即使您首先设法使其同步 如果必须使用nant,我建议您使用解决方案文件,并让visual studio使用exec任务构建它:
<exec program="${environment::get-variable('VS80COMNTOOLS')}../IDE/devenv.com">
<arg value="${solution_path}"/>
<arg value="/build"/>
<arg value="Debug|Win32"/>
</exec>
测试应该作为测试项目的后期构建事件的一部分再次由VS自身运行,或者在VS完成后,您可以在nant中运行它们
如果您在同一源代码树中打开同一个解决方案文件,并选择相同的配置和平台,则以这种方式创建的二进制文件将与visual studio的手动运行完全兼容。您是否正在尝试从nant build中进行调试?为什么不让它构建东西,然后打开解决方案并手动启动调试?为了澄清这一点,我们希望按F5,让IDE运行NAnt构建编译的代码,并在调试模式下运行它,这样我们就可以找到断点并逐步完成代码。如何构建解决方案?带任务还是带任务?参数是什么?