2012-12-13 36 views
2

我想在使用Web部署發佈配置文件進行部署時使用AjaxMin來縮小Javascript和CSS。以下是我在該項目中的文件:爲Web部署縮減JS/CSS

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" /> 
    <PropertyGroup> 
    <ResGenDependsOn> 
     MinifyJavascriptAndCss; 
     $(ResGenDependsOn); 
    </ResGenDependsOn> 
    </PropertyGroup> 
    <Target Name="MinifyJavascriptAndCss" 
    Condition=" '$(ConfigurationName)'=='Release' "> 
    <ItemGroup> 
    <JS Include="$(_PackageTempDir)\**\*.js" 
     Exclude="$(_PackageTempDir)\**\*.min.js;Scripts\*.js" /> 
    </ItemGroup> 
    <ItemGroup> 
    <CSS 
     Include="$(_PackageTempDir)\**\*.css" 
     Exclude="$(_PackageTempDir)\**\*.min.css" /> 
    </ItemGroup> 
    <Message Text="Compressing JavaScript and CSS files into $(_PackageTempDir)" 
    Importance="high" /> 
    <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" 
    JsTargetExtension=".min.js" CssSourceFiles="@(CSS)" 
    CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" /> 
</Target> 

如果我看的輸出目錄,我可以看到,隨着min.*文件出現在文件精縮,但是當包文件部署,但不包括在內。

如何強制將縮小文件包含在發佈軟件包中?

回答

0

它在VS2010爲我工作,但不做任何與VS2012 ...

<!-- Use AjaxMinifier from Libs folder in this project --> 
     <UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectLocation)Libs\AjaxMinTask.dll" /> 
     <!-- This target will run after publish web in Release mode --> 
     <Target Name="MinifyJavaScriptAndCSS" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="'$(Configuration)'=='Release'"> 
     <ItemGroup> 
      <!-- Every .js file (exclude *.min.js and *.vsdoc.js files) --> 
      <JS Include="$(_PackageTempDir)\**\*.js" Exclude="$(_PackageTempDir)\**\*.min.js;$(_PackageTempDir)\**\*vsdoc.js" /> 
      <!-- Every .css file (exclude *.min.css files) --> 
      <CSS Include="$(_PackageTempDir)\**\*.css" Exclude="$(_PackageTempDir)\**\*.min.css" /> 

     </ItemGroup> 
     <!-- Log in output build window --> 
     <AjaxMin JsKnownGlobalNames="jQuery,$" JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css" /> 
     <!-- Log in output build window --> 
     <Message Text="[pcv] $(MSBuildProjectName) -&gt; Minified: @(JS)" Importance="high" /> 
     <Message Text="[pcv] $(MSBuildProjectName) -&gt; Minified: @(CSS)" Importance="high" /> 

     </Target> 
0

我面臨同樣的問題,成功地解決它。有一個簡單的方法來完成這項任務。

將原始CSS/JS文件的Build Action設置爲None,並將Minify文件的Build Action設置爲Content。現在,當您構建項目時,只會縮小css/java腳本文件。

0

我使用VS2012,而這個工作對我來說

<!--<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.targets" />--> 
    <UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\..\packages\AjaxMin.5.14.5506.26202\tools\net40\AjaxMinTask.dll" /> 
    <Target Name="MinifyJsAndCss" AfterTargets="CopyAllFilesToSingleFolderForPackage" > 
    <ItemGroup> 
     <JS Include="$(_PackageTempDir)\App_Scripts\**\*.js" Exclude="$(_PackageTempDir)\**\*.min.js" /> 
     <CSS Include="$(_PackageTempDir)\**\*.css" Exclude="$(_PackageTempDir)\**\*.min.css" /> 
    </ItemGroup> 
    <Message Text="Compressing JavaScript and CSS files...(to edit this feature, unload the project, right click it ->edit -> search for 'AjaxMin' bottom of the xml)" Importance="high" /> 
    <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" /> 
    </Target>