每当进行项目的重建时,我都会添加一个后期构建任务来运行Ajax Minifier(ajaxMin.exe)。我已经将代码添加到项目中以压缩所有CSS和JavaScript,但是当在TFS构建服务器上触发构建时,我在BuildLog.txt中收到大量构建错误,并显示以下消息:
错误:Microsoft Ajax Minifier 没有写入权限 JS [文件名]的.js
我为每个JavaScript和CSS文件收到一条消息,并且正确地对构建输出进行了修改,没有发生缩小。 该项目受源代码管理,但我认为是一个后期构建任务,这无关紧要,因为它缩小了构建服务器上的输出,而不是源文件本身? 添加到我的.csproj的代码如下:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" />
<Target Name="AfterBuild" Condition=" '$(ConfigurationName)'=='Release' ">
<ItemGroup>
<JsFilesRelease Include="**\*.js" Exclude="**\*.min.js" />
<CssFilesRelease Include="**\*.css" />
</ItemGroup>
<AjaxMin JsSourceFiles="@(JsFilesRelease)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js"
CssSourceFiles="@(CssFilesRelease)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css" />
</Target>
有什么办法可以解决这个限制吗?我想确保上面所有输出的文件都被缩小,似乎它只是阻止它的权限。
由于
答案 0 :(得分:0)
使用您的代码,Ajax minifier将缩小您构建的工作目录及其子文件夹中的任何js和css文件。您可以通过在AjaxMin任务之前打印工作目录进行调试:
<Message Text="MSBuildProjectDirectory: $(MSBuildProjectDirectory)"/>
我认为您应该指定比“**”更精确的输出目录路径。你在和VSS合作吗?
我也使用Yui Compressor任务(http://yuicompressor.codeplex.com/)而不是MicrosoftAjax。您可以在此处找到有关压缩机的研究:http://coderjournal.com/2010/01/yahoo-yui-compressor-vs-microsoft-ajax-minifier-vs-google-closure-compiler/ 我使用svn,CC.net和MSBuild。