Pet*_*yer 28
我们实际上使用了NAnt和MSBuild与CruiseControl的组合.NAnt用于脚本流控制并调用MSBuild来编译项目.触发物理构建后,NAnt用于将单个项目构建输出发布到共享位置.
我不确定这是最好的过程.我想我们中的许多人仍然在寻找一款出色的构建工具.我最近在.NET Rocks 第362集中听到的一个有希望的事情是James Kovac的PSake,一个完全基于PowerShell的构建系统.这听起来很有希望,因为你可以用PowerShell做的事情在理论上是相当无限的.
Jam*_*mie 18
我只想把FinalBuilder投入到混音中.这不是免费的,但是如果你厌倦了编辑XML文件并想要一个更好的(IMO)环境来工作,我会试一试.
我和他们一起工作过,总是回到FinalBuilder.
我完全使用MSBuild进行构建.这是我的通用MSBuild脚本,它在树中搜索.csproj文件并构建它们:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
<PropertyGroup>
<Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
<DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
<ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
<ProjectExcludeMask></ProjectExcludeMask>
<TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
</PropertyGroup>
<ItemGroup>
<ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
</ItemGroup>
<Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>
<Target Name="Clean">
<MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
<RemoveDir Directories="$(DeployDir)"/>
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build"/>
<!--
===== Targets that are meant for use only by MSBuild =====
-->
<Target Name="__Compile">
<MSBuild Projects="@(ProjectFiles)" Targets="Build">
<Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
</MSBuild>
<CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
<Output TaskParameter="Include" ItemName="DeployFiles"/>
</CreateItem>
</Target>
<Target Name="__Deploy">
<MakeDir Directories="$(DeployDir)"/>
<Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
<CreateItem Include="$(TestAssembliesIncludeMask)">
<Output TaskParameter="Include" ItemName="TestAssemblies"/>
</CreateItem>
</Target>
<Target Name="__Test">
<xunit Assembly="@(TestAssemblies)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
(对不起,如果它有点密集.Markdown似乎正在剥离空白行.)
虽然理解了概念并且所有依赖项都是自动处理的,但它非常简单.我应该注意到我们使用Visual Studio项目文件,它们内置了很多逻辑,但是这个系统允许人们在Visual Studio IDE或命令行中几乎完全相同地构建,并且仍然为您提供添加内容的灵活性您可以在上面的脚本中看到的xUnit测试中的规范构建.
一个PropertyGroup是所有配置发生的地方,可以自定义事物,例如从构建中排除某些项目或添加新的测试程序集掩码.
ItemGroup是发现树中所有.csproj文件的逻辑发生的地方.
然后有目标,大多数人熟悉make,nAnt或MSBuild应该能够遵循.如果调用Build目标,则调用__Compile,__Deploy和__Test.Clean目标在所有项目文件上调用MSBuild,以便清理它们的目录,然后删除全局部署目录.重建调用Clean然后Build.
小智 8
还有另一个名为NUBuild的新构建工具(一个非常智能的包装器).它重量轻,开源,非常易于安装,几乎不需要维护.我非常喜欢这个新工具,我们已经将它作为我们项目持续构建和集成的标准工具(我们在75个开发人员中拥有大约400个项目).试试看.
| 归档时间: |
|
| 查看次数: |
43466 次 |
| 最近记录: |