MSBuild和NANT2006-11-14 15:51昨天,把微软的MSBuild研究了一下。其实.Net平台上的Make工具,已经有了NAnt。但是MSBuild作为官方发布的工具,VS2005对于它有很好的环境支持。
这些Ant类的工具,具有一下特点:
构建程序
可以自动根据文件时间,来进行递增构建。
可以扩充,以完成比较负责的任务。
一般是通过XML来描述构建过程。
一般包含Property 、Target以及Target之间的依赖关系,以构成一个构建序列。
可以指定运行的Target,干不同的事情。
功能强大,并不是只有用来构建程序,还可以比较夸张的说可以干任何需要重复执行的自动化工作。
我的目录下一般分src和debug两个目录,src顾名思义包含源文件,debug包含输出的文件。
以前的Nant文件的内容是:
<project name="g" default="compile" basedir=".">
<property name="build.dir" value="debug"/>
<property name="src.dir" value="src"/>
<property name="target" value="g.exe"/>
<target name="init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${src.dir}"/>
</target>
<target name="compile" depends="init">
<csc target="exe" output="${build.dir}\${target}">
<sources>
<include name="${src.dir}\**\*.cs" />
</sources>
</csc>
</target>
<target name="run" depends="compile">
<exec program="${build.dir}\${target}" />
</target>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
</project>
而新建的MSBuild文件内容为:
<Project DefaultTargets = "Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<BuildDir>debug</BuildDir>
<SourceDir>src</SourceDir>
<TargetExe>g</TargetExe>
</PropertyGroup>
<Target Name="MakeBuildDir">
<MakeDir Directories = "$(BuildDir)"
Condition = "!Exists('$(BuildDir)')" />
</Target>
<ItemGroup>
<CSFile Include="$(SourceDir)\*.cs" />
</ItemGroup>
<Target Name="Compile" Inputs="@(CSFile)" Outputs="\$(BuildDir)\$(TargetExe).exe" DependsOnTargets="MakeBuildDir">
<CSC
Sources="@(CSFile)"
OutputAssembly = "$(BuildDir)\$(TargetExe).exe">
<Output TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</CSC>
</Target>
<Target Name="Run" DependsOnTargets="Compile">
<Exec Command="$(BuildDir)\$(TargetExe).exe"/>
</Target>
<Target Name="Clean">
<Delete Files="\$(BuildDir)\$(TargetExe).exe" Condition="Exists('$(BuildDir)\$(TargetExe).exe')"/>
</Target>
</Project>
可以看到,MSBuild引入的是ItemGroup和PropertyGroup两个概念,不同于NAnt的用${属性}引用,他的里面:
$(Property名)来表示引用PropertyGroup里面的内容
@(Item名)来引用ItemGroup里面的内容
ItemGroup和PropertyGroup不同之处在于是否可以元素是否可以出现多次,ItemGroup可以,Property则不可以。
其他的不同之处在于递增构建的支持,在MSBuild里面必须明确指出。如上面的CSC里面必须指定Inputs和Outputs,否则MSBuild不是递增构建。而NAant则默认都是递增构建,即只编译比较新的源文件。
其他的都支持条件格式。NAant还支持内部的C#语句,发现就会自动编译。
MSBuild还支持一些其他的Task,都是.Net平台上面的东西,如Mainfest、SNK等,对于.Net的编译显的比较专业。
自动构建确实是一个好东西。他让你远离IDE,没有了代码自动提示,没有了花哨的界面,只有代码。感觉真是不同。
分享到:
相关推荐
NAnt、CS、MSBuild、SVN、NUnit 和 NUnitReport 这些术语在IT行业中分别代表了不同的工具和技术,它们在软件开发流程中扮演着关键角色。下面将详细解释这些概念及其相互间的关联。 **NAnt**:NAnt是.NET Framework...
Nant支持多种内置任务,如`build`、`csc`(编译C#代码)、`msbuild`(用于Visual Studio项目和解决方案的构建)、`copy`(文件复制)、`delete`(删除文件或目录)、`exec`(运行外部程序)等。这些任务允许开发者...
2. **任务系统**:NAnt 提供了一系列内置的任务,如 `compile`(编译)、`copy`(复制文件)、`exec`(执行外部程序)、`msbuild`(调用MSBuild引擎)等。这些任务通过简单的XML标签调用,可以组合成复杂的构建流程...
使用`<exec>`任务调用MSBuild或csc.exe(C#编译器),指定输入文件(即protobuf生成的C#类)和输出DLL的路径。例如: ```xml ``` 执行NAnt命令,如`nant compile`,将执行这个目标并生成DLL。 3. ...
nant 和 nantcontrib 是在 .NET 平台上用于自动化构建过程的工具,它们在软件开发过程中扮演着重要的角色。Nant 是一个基于 .NET 的构建工具,类似于 Java 世界的 Ant。它提供了命令行接口,允许开发者编写 XML 文件...
对于那些习惯于使用 NAnt 的开发者来说,转向 MSBuild 可能是一个挑战,但这也是一个必经的过程。原因在于: - **MSBuild 是微软官方支持的构建工具**,这意味着它与 Visual Studio 和 .NET Framework 集成得更好。 ...
标签 "nant" 和 "nant-0.91-alpha1-bin.zip" 强调了主题内容,表明该压缩包与 NAnt 工具的特定版本有关。 压缩包内的文件名称列表未提供详细信息,但通常可以期待包含以下内容: 1. `nant.exe`:NAnt 的主执行文件...
遗憾的是,NAnt 缺少漂亮的图形界面,但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和 XML 文件。注意,MSBuild(属于 Visual Studio 2010 的新的生成平台)为每种健壮的生成方案进行了准备,...
遗憾的是,NAnt 缺少漂亮的图形界面,但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和 XML 文件。注意,MSBuild(属于 Visual Studio 2005 的新的生成平台)为每种健壮的生成方案进行了准备,...
在.NET环境中,NAnt(.NET Ant)是一个强大的自动化工具,它借鉴了Java世界的Ant,为.NET开发者提供了类似的功能,用于构建、编译、测试和部署项目。本文将深入探讨如何利用NAnt在.NET环境中实现每日构建。 ### ...
遗憾的是,NAnt 缺少漂亮的图形界面,但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和 XML 文件。注意,MSBuild(属于 Visual Studio 2005 的新的生成平台)为每种健壮的生成方案进行了准备,...
遗憾的是,NAnt 缺少漂亮的图形界面,但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和 XML 文件。注意,MSBuild(属于 Visual Studio 2008 的新的生成平台)为每种健壮的生成方案进行了准备,...
本篇文章将聚焦于如何结合Visual Studio和NAnt工具来构建Xamarin.Android应用程序。 首先,我们需要了解Xamarin。Xamarin是一个强大的开发平台,它提供了对.NET Framework的支持,允许开发人员利用共享代码库创建多...
我们的目标是使开发人员停止使用PowerShell,MSBuild,NAnt和其他脚本框架。 通过Bounce,您可以更轻松地以一致的方式利用.NET堆栈,共享代码,利用第三方库以及为任务构建测试。快来了全库弃用启动版本0.11.0时,...
7. **版本控制和构建流程**:一个成熟的源代码项目通常会使用版本控制系统(如Git)进行版本管理和协作,同时会有构建脚本(如MSBuild或Nant)来自动化编译、打包和部署过程。 8. **安全性**:考虑到数据库操作的...
这可能包括自动化构建系统(如MSBuild或NAnt)的配置文件,或者用于生成文档的工具(如DocFX或Sandcastle)。学习这部分可以帮助你了解软件开发的生命周期管理,包括版本控制、构建自动化和持续集成。 `doc` 目录...
2. `white.build`:可能是一个构建脚本,例如MSBuild或NAnt,用于编译和打包White框架的源代码。 3. `Override.config`:可能包含配置设置,用于覆盖默认配置或适应特定环境的需求。 4. `tee.exe`:这是一个命令行...
2. **自动化构建**:脚本可能使用自动化构建工具,如MSBuild、NAnt或GitLab CI/CD,来简化和标准化构建过程,确保每次构建的一致性和可靠性。 3. **依赖管理**:编译脚本可能包含对其他库和组件的依赖管理,确保...
3. `Quartz.build`:这可能是构建脚本,如MSBuild或NAnt,用于自动化构建和测试Quartz.NET项目。 4. `Quartz.Server.2010.sln`和`Quartz.2010.sln`:这些都是Visual Studio解决方案文件,用于在IDE中打开和编译项目...
在实际使用中,NDoc通常与MSBuild或nant等构建工具集成,使其成为自动化文档生成的一部分。这可以确保每次代码更新后,相应的文档都能及时更新,保持与代码同步。 NDoc的另一个亮点是它的社区支持。虽然NDoc的最新...