我有一个Nant构建文件,在编译dll之后执行NUnit.我正在使用CruiseControl中的任务执行NAnt构建文件.所以NAnt运行的测试不是CruiseControl.
如何配置它以便CruiseControl Web仪表板可用于查看NUnit输出?
这解决了它:
<publishers>
<merge>
<files>
<file>build\*.test-result.xml</file>
</files>
</merge>
<xmllogger />
</publishers>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用VS2008 SP1和x64 XP运行NAnt 0.86b1.
我有一个基本的构建文件(下面)给出错误不支持文件'Solution.sln'的解决方案格式.
<property name="nant.settings.currentframework" value="net-3.5" />
<target name="build" description="Full Rebuild" depends="clean,compile" />
<target name="clean" description="Cleans outputs">
<delete dir="bin" failonerror="false" />
<delete dir="obj" failonerror="false" />
</target>
<target name="compile" description="Compiles solution">
<solution configuration="debug" solutionfile="Solution.sln" />
</target>
Run Code Online (Sandbox Code Playgroud)
还有其他人遇到过这个问题吗?我找不到任何有用的东西.
我们广泛使用NAnt构建系统.最近,我写了几个PowerShell Cmdlet来执行一些与数据库相关的事情.首先,这些Cmdlet的意图并不一定在我们的构建过程中运行.但是,这最近成为一种需求,我们希望从基于NAnt的构建过程中运行一些这些Cmdlet.
这些Cmdlet是用C#编写的,我们有一个SnapIn(如果这很重要的话).
一些想法:
什么可能是一个很好的方法来做到这一点?
我们目前正在使用CruiseControl.NET和NAnt 0.85构建脚本,虽然一切运行良好,但日志文件对我来说有点过于冗长.
特别是,当使用<delete>
任务删除文件夹时,我总是[delete] Deleting directory
在日志中获得一个条目.
足够公平,但这个任务是在一个foreach
循环中运行并导致一个很长的条目列表(特别是如果文件夹包含文件 - 报告每个删除)这只是使日志混乱并使其难以阅读而无需无休止的滚动.我已经添加了许多<echo>
任务来报告脚本进度,所以不需要所有这些'绒毛'.
我已经verbose="false"
在<delete>
任务上使用了该属性,并且在此过程中压缩了文件删除消息(这提高了日志可读性无止境),仍然会报告文件夹删除.我尝试过使用该verbose
属性,foreach
但这没有任何区别.
有谁知道我怎么可以压制这些消息或我坚持他们..?
不确定我是否完全错过了它,但我不知道如何使用Nant创建一个新目录.是否有内置功能来执行此操作?我可以使用命令提示符吗?我尝试过以下方面:
<exec program="cmd" commandline="md c:\test" />
Run Code Online (Sandbox Code Playgroud)
但它只是在屏幕上打开了一个命令提示符,从未完成...
我的公司在确定管理构建,发布和分支的最佳方法时遇到了麻烦...我们的基本设置是我们有4个应用程序,我们维护2个WPF应用程序和2个ASP.NET应用程序,所有这4个应用程序共享公共库,所以目前他们都在一个文件夹/ trunk/{app1,app2,app3,app4}.
这使得分支/标记单个应用程序非常困难,因为您同时对所有4个应用程序进行分支,因此我们希望将其分为{app1,app2,app3,app4}/{trunk,tags,branches但是我们遇到了放置共享库的问题?
我们不能将共享库作为SVN外部因素,因为当你分支/标记时,分支仍然引用了trunk共享库,而不是让它们分支.
有小费吗?想法?
我们目前正在使用svn和cruisecontrol.net.
编辑:共享库现在经常更改,这就是为什么我们不能将它们用作svn externals到trunk,因为我们可能会在分支中更改它们.所以我们不能将它们用作二进制引用.
当库静态构建而不是包含源时,它也很难测试和调试.
我有一个ASP.NET应用程序.基本上交付流程是这样的:
我的问题是,当我尝试打开网站时,我有一个未经授权的访问错误.似乎文件需要为用户" IIS_WPG " 设置权限.
我无权更改IIS配置,因此我必须手动更改每个文件的权限.每次我更换文件时,权限都会被删除,我需要再次设置它们.
所以我有两个问题:
当使用Nant发布构建类型时,是否可以自动更改web.config中的连接字符串?如果是这样,怎么样?谢谢
在NAnt我有一个非常简单的属性来获取我的项目的根,它看起来像这样:
<property
name="project.root.folder"
value="${directory::get-parent-directory(directory::get-parent-directory(project.local.folder))}"
/>
Run Code Online (Sandbox Code Playgroud)
这将我带到我的项目的根目录,从中构建我的所有路径.
在MSBuild我可以$(MSBuildProjectDirectory)
用来获取我当前的目录,但我想获得父目录的完整路径.NAnt使用directory::get-parent-directory
它有魅力,我希望在MSBuild中有类似的功能.
我发现了一个类似的问题(http://stackoverflow.com/questions/514264/msbuild-find-msbuildprojectdirectory-parent-directory),但我认为必须有一些更简单的问题,当然!
山姆:)
我想从我的NAnt脚本中调用某个EXE,并在属性存在时传递属性作为参数,否则不传递任何内容.
以下代码似乎只适用于这种情况,但它不起作用:
<exec program="notepad.exe">
<arg line="${file}" if="${property::exists('file')}" />
</exec>
Run Code Online (Sandbox Code Playgroud)
它抛出Property 'file' has not been set
错误.看起来它会评估忽略条件的属性.我希望它<arg>
在条件为的情况下忽略整个元素false
.
如果我在这个块上面定义属性,它显然工作正常(即使该属性为空).如果它是一个案例,它可能值得一个解决方法,但我必须以同样的方式传递许多属性.此外,<if>
不是<exec>
...... 下的有效元素
怎么做到这一点?有任何想法吗?