Pre*_*ous 8 msbuild hidden-features
本周我对msbuild很感兴趣.我正在清理许多非常复杂的构建脚本.挖掘它可以做多少让我感到惊讶 - msbuild本身就是.NET编程的隐藏功能.
在SO约定中,问题必须有答案,在几天或一周内,我会将最有用或最酷的隐藏特征标记为已接受.
   let bestAnswer suprise slick useful = (surprise + slick + 2*useful)
Run Code Online (Sandbox Code Playgroud)
有用的定义:我正在更新现有的msbuild脚本:package(zip文件)网站和实用程序,CC.NET集成,启动测试(UT + selenium),构建数据库.我正在添加(新目标,甚至更有用):部署到VMWare虚拟服务器,链式构建(立即快速构建,队列慢速测试).如果您引用外部库(如MSBuild社区任务),那么知道如何获取它会很好.
我已经发现了一些msbuild的惊喜.
这是msbuild Hello World 在我写完之后,我找到了MSDN hello world.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build;Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
       <Who>World</Who>
  </PropertyGroup>
  <Target Name="Hello">
    <Message Text="Hello, $(Who)" Importance="high" ></Message>
  </Target>
  <Target Name="Build" DependsOnTargets="Hello"/>
  <Target Name="Test"/>
</Project>
Run Code Online (Sandbox Code Playgroud)
    MSBuild有许多不错的功能.我喜欢
递归文件规范
<Files Include="$(src)\**\*.cs" Exclude="$(src)\**\*test.cs" />
Run Code Online (Sandbox Code Playgroud)
批处理和项目元数据
<ItemGroup>
 <F Include="SampleApplication.t">
    <Version>1</Version>
</F>
 <F Include="SampleApplication2.t">
    <Version>1</Version>
</F>
<F Include="SampleApplication3.t">
   <Version>2</Version>
</F>
</ItemGroup>
<Target Name="Build">
<Touch Files="%(F.FullPath)" AlwaysCreate="True" 
        Condition=" '%(F.Version)' > '1' ">
<Output TaskParameter="TouchedFiles" ItemName="CreatedFiles"/>
</Touch>
<Message Text="Created files = @(CreatedFiles)"/>
<Message Text="%(F.Identity) %(F.Version)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
目标级依赖性分析
<Target Name="Build"
           Inputs="@(MyItems)"
           Outputs="@(MyItems -> '$(MyItems)\%(filename).dll'">
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3810 次  |  
        
|   最近记录:  |