Microsoft Ajax Minifier与VS无缝集成
Microsoft Ajax Minifier是做什么,我就不多说了。Microsoft Ajax Minifier的使用方法很多,命令行、代码实现、附件到VS的Bulid事件等。在安装msi文件后使用很方便。但发布系统中往往不能因为开发人员的需求而安装各种组件,所以要在发布系统不安装msi文件的情况下使用。
1. 开发环境中下载安装ajax minifier。在project中添加AjaxMinifier文件夹,将C:\Program Files (x86)\MSBuild\Microsoft\MicrosoftAjax目录(因操作系统可能会有差异)下的文件copy进去。
2. 用文本编辑器打开.csproj文件,在根结点<project>下添加代码
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.targets" />
<UsingTask TaskName="AjaxMinManifestTask" AssemblyFile="MicrosoftAjax\AjaxMinTask.dll" />
<Target Name="BuildAjaxMinManifests" AfterTargets="Build"> <Message Text="Processing AjaxMin Manifests" Importance="high" /> <CreateItem Include="@(None)" Condition="'%(Extension)'=='.js'"> </CreateItem> <AjaxMinManifestTask ProjectDefaultSwitches="-define:$(DefineConstants))" Configuration="$(Configuration)" TreatWarningsAsErrors="false" InputFolder="$(ProjectDir)javascript\" OutputFolder="$(ProjectDir)miniJS\" Manifests="@(AjaxMinManifests)" /> </Target>
- <UsingTask TaskName="AjaxMinManifestTask" AssemblyFile="MicrosoftAjax\AjaxMinTask.dll" />
指定AjaxMinTask.dll路径,这里用的是相对路径,默认路径是project所在目录,等同于宏$(ProjectDir)
- <Target Name="BuildAjaxMinManifests" AfterTargets="Build"> 指定编译完成后执行
- <CreateItem Include="@(None)" Condition="'%(Extension)'=='.js'"> 限定以.js后缀的文件
- <AjaxMinManifestTask ProjectDefaultSwitches="-define:$(DefineConstants))" Configuration="$(Configuration)" TreatWarningsAsErrors="false" InputFolder="$(ProjectDir)javascript\" OutputFolder="$(ProjectDir)miniJS\" Manifests="@(AjaxMinManifests)" />
TreatWarningsAsErrors="false" 指定编辑时是否将警告以错误输出到控制台
InputFolder="$(ProjectDir)javascript\" 指定要压缩的文件目录
OutputFolder="$(ProjectDir)miniJS\" 指定压缩后的输出目录
3. 在project的MicrosoftAjax目录下添加manifest files文件
文件名是什么没有限制,但后缀必需是.ajaxmin。这其实就是一个xml文件
<root> <output path="FirstOutputFile.js"> <input path="input1.js"/> <input path="input2.js"/> <input path="input3.js"/> </output> <output path="\SecondOutputFile.js"> <input path="input2.js"/> <input path="input1.js"/> <input path="input3.js"/> </output> </root>
不验证看出这里是输出两个文件,都是将<input>节点下的两个文件合并为一个文件输出。节点的path属性分别相对于.csproj文件中的InputFolder="$(ProjectDir)javascript\"和OutputFolder="$(ProjectDir)miniJS\"
到此,所有的工作都完成了,编译即可生成相应文件。
Ajax Minifier是一个可开源项目,有兴趣的话可以自己修改些东西。AjaxMin.targets文件中可以做简单的自定义修改。如<AjaxMinManifests Include="**/*.ajaxmin"/>中可以修改manifest files为其它后缀名。
曾经年少多少事 而今皆付谈笑中!