我有一个javascript文件,我使用Yahoo YUI缩小。当我'发布'Web应用程序项目时,我希望它只复制.min.js文件而不是原始文件。我可以使用预构建事件来创建缩小版本,但是如何阻止“发布”复制非缩小文件?
我想我可以从项目中“排除”原始的非缩小文件,但这不会有用,因为我想通过VS 2010编辑脚本文件,但是当我发布时我希望minifier首先运行然后只发布那个。
赞赏任何指针
答案 0 :(得分:2)
您可以使用MSBuild社区任务项目和Exec任务来执行此操作。这是一个例子。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<yuiCompressor>java -jar Libraries\yuicompressor-2.3.6.jar</yuiCompressor>
</PropertyGroup>
<PropertyGroup>
<Major>1</Major>
<Minor>0</Minor>
<Build>0</Build>
<Revision>1</Revision>
<BindMinor>0</BindMinor>
<BindBuild>0</BindBuild>
<BindRevision>0</BindRevision>
</PropertyGroup>
<ItemGroup>
<CssFiles Include="css\site.css" />
<CssFiles Include="css\gray.css" />
<JsFiles Include="scripts\base.js" />
<JsFiles Include="scripts\lib.js" />
<JsFiles Include="scripts\project.js" />
</ItemGroup>
<Target Name="Minimize" DependsOnTargets="Version">
<!-- CSS Merge and Minimize -->
<Merge Mode="TextLine"
SourceFiles="@(CssFiles)"
DestinationFile="merged.css" />
<Exec Command="$(yuiCompressor) --type css merged.css -o css\project-$(Revision).css" />
<!-- js Merge and Minimize -->
<Merge Mode="TextLine"
SourceFiles="@(JsFiles)"
DestinationFile="merged.js" />
<Exec Command="$(yuiCompressor) --type js merged.js -o scripts\project-$(Revision).js" />
<Delete Files="merged.css" />
<Delete Files="merged.js" />
</Target>
</Project>
答案 1 :(得分:1)
如果它是Web应用程序(而不是网站),只需在属性窗口中将Build Action更改为None。这将阻止在发布应用程序时复制原始文件。