从MSBuild输出中缩小JS / CSS时的权限错误

时间:2010-10-05 08:16:58

标签: visual-studio msbuild minify ajaxmin

每当进行项目的重建时,我都会添加一个后期构建任务来运行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>

有什么办法可以解决这个限制吗?我想确保上面所有输出的文件都被缩小,似乎它只是阻止它的权限。

由于

1 个答案:

答案 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。