我目前通过AhnkSVN和Visual Studio 使用subversion进行版本控制.我最近开始使用Tree Surgeon来设置我的项目.它使用NAnt自动创建构建脚本.我希望能够在SVN中定期自动构建项目.我喜欢在每次检查时都进行构建的想法,但夜间构建也会起作用.我会提供更多信息或更多我的想法,但我想我会保持开放,看看SO社区有什么要说的.
我这里有300行长的NAnt文件,这是一个非常混乱.我想知道是否有任何样式指南用于编写NAnt脚本以及这样做的最佳实践.
有小费吗?
我有一个ASP.NET应用程序.基本上交付流程是这样的:
我的问题是,当我尝试打开网站时,我有一个未经授权的访问错误.似乎文件需要为用户" IIS_WPG " 设置权限.
我无权更改IIS配置,因此我必须手动更改每个文件的权限.每次我更换文件时,权限都会被删除,我需要再次设置它们.
所以我有两个问题:
我从来没有使用过自动构建系统 - 老实说,我从来没有使用它,因为我作为独立开发人员(不是选择)工作,只在我的工作站上进行开发,所以在Visual中使用Build菜单工作室对我来说已经足够好了.
我正在努力学习更多优秀的软件工程实践,持续集成就是其中之一.但是,我知道我需要使用自动构建脚本来设置CI环境,但我从来没有使用过,也不知道从哪里开始.
我听说NAnt是大多数专业开发人员使用的非常好的(尽管MSBuild类似吗?).有哪些好资源可以正确学习如何使用NAnt?
我想在构建解决方案之前使用NAnt修改.h文件中的字符串.
.h文件中有一个宏:#define SERVER_ADDRESS"www.customserver.net",我想在部署软件之前修改字符串,这样每个构建都可以通过在命令行中传递地址来实现自定义地址.
有谁知道如何做到这一点?
谢谢!
我有一个C#项目,我需要自动化构建,我试图在NAnt和MSBuild之间进行选择.
我应该使用哪一个?
哪一个具有更好的功能,包括对svn的支持?
谢谢
当使用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),但我认为必须有一些更简单的问题,当然!
山姆:)
我们正在远离TFS作为源控制/构建服务.
我们现在正在使用TeamCity,并通过BitBucket在Git上托管我们的源代码.
任何人都可以向我指出一篇不错的文章,博客,现有的Stack问题以及这里的步骤的基本概要,以便启动和运行CI配置?
我在TeamCity中有一个基本的项目设置,让它从Git中获取源代码,但我正在试图弄清楚如何设置NAnt作为构建步骤来编译代码并将其发布到我的IIS网站.
有什么建议?
为了清楚起见,设置:
感谢任何指针.
最接近我发现的事情:http://thecodedecanter.wordpress.com/2010/03/25/one-click-website-deployment-using-teamcity-nant-git-and-powershell/
但这涉及Web服务器使用PowerShell从Git中提取代码.我不希望这样.我希望TeamCity提取Git代码并直接发布到我的Web服务器.
我想从我的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>...... 下的有效元素
怎么做到这一点?有任何想法吗?