这周我对 msbuild 很感兴趣。我正在清理许多极其复杂的构建脚本。深入挖掘它的功能让我感到惊讶 - msbuild 本身就是 .NET 编程的一个隐藏特性。
在问题必须有答案的 SO 约定中,在几天或一周内,我会将最有用或最酷的隐藏功能标记为已接受。
let bestAnswer suprise slick useful = (surprise + slick + 2*useful)
有用的定义:我正在更新现有的 msbuild 脚本:打包(zip 文件)网站和实用程序、CC.NET 集成、启动测试(UT + selenium)、构建数据库。我正在添加(新目标,甚至更有用):部署到 VMWare 虚拟服务器,链式构建(立即快速构建,排队慢速测试)。如果您引用外部库(如MSBuild 社区任务),最好知道如何获取它。
我已经发现了一些 msbuild 惊喜。
- Hello world 使用消息任务和属性。
- 使用 msbuild 作为极其复杂的服务器产品的安装程序。MSB 社区任务管理 IIS 服务器设置。WriteLinesToFile和XmlUpdate任务编写了服务器特定的配置文件。如果您使用过 MSI,您就会知道安装时任何东西都比 MSI 更好。
- 对于新手:CSProj 和 Vbproj 文件与 msbuild "proj" 文件相同。直接编辑:卸载您的 csproj 或 vbproj,然后右键单击项目并选择编辑。这比使用笨重的预构建/构建后事件更好、更强大。
- MSBuild 附带通用的 .NET 安装。与其他花哨的工具不同,您可以在完全干净的服务器/桌面上使用它。
这里是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>