我们使用nant来构建我们的项目(10 + Class Lib)和一个基于ASP.NET 2.0的Web站点.最近我们正在向ASP.NET 3.5迈进.我在网上搜索,发现nant不支持3.5.
我也在寻找迁移MSBuild的选项.
假设我在Windows服务器上使用nant将部署脚本编写到文件共享:\\server\share
.我想要一个nant脚本从共享中删除所有文件,然后复制到新文件中.
我有这个代码删除文件,但我收到一个错误,它无法删除"\ server\share".但我不想删除共享,只删除其中的内容.
<delete>
<fileset basedir="\\server\share">
<include name="**/**" />
</fileset>
</delete>
Run Code Online (Sandbox Code Playgroud)
输出:
BUILD FAILED D:\code\xxx\xxx.deploy(177,8): Cannot delete directory '\\server\share'. Access to the path '\\server\share' is denied.
如果我修改它而不是删除共享中目录的内容,比如说\\server\share\somedir
,它会删除"somedir"而不会出错.但是,我仍然不想删除目录,只是内容.有办法吗?
在我们的项目中,部署总是很痛苦,主要是因为发布管理团队所犯的错误.他们搞砸了配置或以某种方式安装了错误的版本.我们使用teamcity作为我们的CI服务器,它生成工件作为zip文件(dll和exe),通常传递给发布团队.我的问题是,有没有办法自动化整个部署过程?
有没有商业工具,支持这个?
我们希望执行以下操作:
使用特定于环境的值更新配置文件.
将Windows服务安装到服务器.
将UI(WPF)包上传到集中位置(由另一个应用程序拉下来,类似于启动器).
更改数据库连接字符串.
针对各种环境(如int,uat和prod)执行以上所有操作
数据库部署因此是一个单独的野兽,因此不需要涉及.
任何最佳实践,工具或解决方案都将非常有用.
谢谢,-Mike
我只是试图用resgen运行NANT,但我似乎无法找到我需要下载的内容,以便在' C:\ Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\resgen中提供它. exe '在我的服务器上.
谢谢.
我正在考虑使用PowerShell和/或C#编写自己的交付代码,可能是对NAnt或MSBuild进行炮轰.
背景(PS这对某些人来说是宗教问题.没有侮辱意图):
一人开店,多个探索性项目.作为我们大多数人 - 现在的Windows和ASP.Net.考虑移动和云.
我已经开始干涉NAnt了,并试图使用NAnt和CruiseControl.Net跟踪Expert .Net Delivery.整个"交付"问题已经解决,现在是时候"解冻"了.但是,我不知道该走哪条路.从我所学到的:
NAnt正在显示它的年龄.它很笨拙:理解和维护比C#等现代的OO语言更难理解和维护.即使在我读完这本书之后,在一个神秘的环境中工作似乎很奇怪,你想要执行的是XML,循环和继承(据我记得在"冰河时代"之前)很难做到.
MSBuid是MS特定的.我甚至不确定它是否会支持非MS环境.团队基础服务器很贵.
即便如此,他们似乎都提供了价值,因为在我的SO搜索中我没有听到任何人使用他们自己的自定义软件.但是,我不明白为什么不使用C#并根据需要简单地调用NAnt和/或MSBuild任务.
我的建议正好相反 - 避免像瘟疫这样的MSBuild.NANT更容易设置您的构建以进行自动测试,部署到多个生产环境,与cruisecontrol集成以用于入口环境,与源代码控制集成.我们通过TFS/MSBuild(使用TFSDeployer,自定义PowerShell脚本等)经历了如此多的痛苦,以使它能够完成我们能够用NANT开箱即用的功能.不要浪费你的时间.
构建产品远不仅仅是编译产品.由于这些工具(及其扩展)提供的功能,创建安装,更新版本号,创建托管,分发最终包等任务变得更加容易.虽然您可以使用常规脚本完成所有这些操作,但使用NAnt或MSBuild为您提供了一个可靠的框架来完成所有这些操作
我有一个用于构建我的.NET项目的NAnt脚本,我正在寻找是否有办法使用FTP任务将生成的程序集上传到某个远程文件夹.
我在网上找不到任何好的例子,我想知道是否有人知道怎么做,如果它可行的话.
仅供参考:我在Windows机器上运行它,如果它有任何区别的话.
粗略地阅读这两种工具让我相信他们做了类似的事情:管理构建任务,这意味着他们做的操作支持获取源输入并最终产生可运行的输出.
从.NET Framework 2.0开始,MSBuild.exe包含在Framework中,无需Visual Studio即可调用.
NAnt优于MSBuild,或者它们只是两个具有不同相关性的竞争工具?
我最近负责一个软件产品,这个产品的发展相当无组织,我建立了一个新的项目结构,一个源代码库,问题跟踪和一个使用nant和teamcity的构建系统.我正处于对每个主要分支的每个提交进行编译,测试并构建到设置中的点.
总是建立和发布完整设置似乎是错误的我想建立某种自动补丁建设,但我不知道如何做到这一点.您有什么建议我可以做到这一点,或者我可以在哪里找到有关该主题的信息?谷歌到目前为止没有任何帮助.
关于我当前设置的更多细节:
存储库: - git: - 2个主要分支:开发和掌握
构建系统: - teamcity - 2个配置:一个用于构建每个分支 - 构建仅包含一个构建步骤: - nant runner:nant脚本是存储库的一部分,包含以下目标:clean,init,compile,test,deploy ,build_setup(使用inno设置)
我想我必须将nant脚本拆分成碎片并使用不同的构建步骤以某种方式将新构建工件与旧构建工件进行比较并创建包含更新文件的补丁.我是否在正确的轨道上,如果是这样,有没有人知道如何设置teamcity的好例子或教程.
我们广泛使用NAnt构建系统.最近,我写了几个PowerShell Cmdlet来执行一些与数据库相关的事情.首先,这些Cmdlet的意图并不一定在我们的构建过程中运行.但是,这最近成为一种需求,我们希望从基于NAnt的构建过程中运行一些这些Cmdlet.
这些Cmdlet是用C#编写的,我们有一个SnapIn(如果这很重要的话).
一些想法:
什么可能是一个很好的方法来做到这一点?