0

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

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

谢谢

4

1 回答 1

0

使用您的代码,Ajax 缩小器将缩小您构建的工作目录及其子文件夹中的任何 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。

于 2010-10-05T09:20:14.893 回答