这周我对msbuild很感兴趣。我正在整理许多极其复杂的构建脚本。挖掘其中的内容让我惊讶,因为msbuild本身就是.NET编程的一种隐藏特性。
按照SO的规定,问题必须有答案,在几天或一周内,我将选择最有用或最酷的隐藏功能作为被接受的答案。
let bestAnswer suprise slick useful = (surprise + slick + 2*useful)
“有用”的定义:我正在更新现有的msbuild脚本,以打包(zip文件)网站和实用程序、CC.NET集成、启动测试(UT + selenium)、构建数据库。我正在添加新目标,使其更加有用:部署到VMWare虚拟服务器、链接构建(立即进行快速构建,排队慢速测试)。如果您引用了外部库(如MSBuild社区任务),那么了解如何获取它将是很好的。
我已经发现的一些msbuild惊喜。
- 使用Message任务和属性的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>