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进去。

image_thumb[5]

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为其它后缀名。

posted @ 2013-08-08 22:41  徐某人  阅读(1162)  评论(0编辑  收藏  举报