使用Team Foundation Server 2010压缩js和css

时间:2011-08-10 11:19:39

标签: compression tfs2010 tfsbuild

我一直在敲打砖墙,除了我以外,每个人都可以轻松解决这个问题。

我想使用Team Foundation Server 2010上的标准版本设置 css和js compression 。以下是我到目前为止尝试过但失败了。我正在寻找一个神奇的帮助指导我设置专业人士(SO充满了他们)认为应该这样做的方式。

http://yuicompressor.codeplex.com/releases/view/46679(使用构建后事件下载演示)

这种方法看起来很有前途,因为它完全按照在Visual Studio中构建项目时所承诺的那样。

我的msbuild构建后命令:

  

$(MSBuildBinPath)\ msbuild.exe   “$(PROJECTDIR)的MSBuild \ MSBuildSettings.xml”   /p:CssOutputFile="$(TargetDir)..\Content\StylesSheetFinal.css”   / P:JavaScriptOutputFile = “$(TARGETDIR).. \脚本\ JavaScriptFinal.js”

但是当构建由TFS运行时,我会遇到很多错误:

  

D:\ Builds \ 3 \ CKB 2010_Build_CP \ Sources \ CKB   2010 \ My.Name.Space \ MSBuild \ MSBuildSettings.xml(61):失败   将压缩文本保存到输出文件[D:\ Builds \ 3 \ CKB   2010_Build_CP \二进制文件.. \内容\ StylesSheetFinal.css。请检查   路径/文件名,并确保文件没有神奇锁定,   只读等。

很明显,问题是Post-build命令中的语法错误。但我无法弄清楚如何使它适用于本地和TSF构建。

更新2011-08-17

正如Edward Thompson所说,我尝试在路径中添加反斜杠:

  

$(MSBuildBinPath)\ msbuild.exe   “$(PROJECTDIR)的MSBuild \ MSBuildSettings.xml”   /p:CssOutputFile="$(TargetDir)\..\Content\styles.min.css”   / P:JavaScriptOutputFile = “$(TARGETDIR)\ .. \脚本\ scripts.min.js”

结果如下:

  

无法将压缩文本保存到输出文件中   [D:\ Builds \ 3 \ CKB 2010_Build_CP \ Binaries \\ .. \ Content \ styles.min.css]。   请检查路径/文件名,确保文件不是神奇的   锁定,只读等。

2 个答案:

答案 0 :(得分:2)

问题是TFS和Visual Studio运行msbuild命令的值的差异。

这些是我为使YuiCompressor与Visual Studio 2010和Team Foundation Server 2010集成而采取的步骤。

  1. 在您想要的项目中添加名为“MSBuild”的文件夹

  2. 在此文件夹中,您应该从the YuiCompressor project on CodePlex中提取下载的文件 enter image description here

  3. 设置这些文件的属性如下:
    enter image description here

  4. 现在打开MSBuildSettings.xml文件并根据要压缩的脚本和css文件对其进行编辑。 I have uploaded mine on pastebin因为在此粘贴它会导致编辑器出现问题。

  5. 将以下postbuild事件添加到您的项目中。 请注意,路径可能因环境而异。

      

    IF“$(BuildingInsideVisualStudio)”==“”$(MSBuildBinPath)\ msbuild.exe
      “$(PROJECTDIR)的MSBuild \ MSBuildSettings.xml”
      /p:CssOutputFile="$(TargetDir)_PublishedWebsites\$(ProjectName)\Content\styles.min.css”   /p:JavaScriptOutputFile="$(TargetDir)_PublishedWebsites\$(ProjectName)\Scripts\scripts.min.js“
      如果“$(BuildingInsideVisualStudio)”==“true”   $(MSBuildBinPath)\ msbuild.exe
      “$(PROJECTDIR)的MSBuild \ MSBuildSettings.xml”
      /p:CssOutputFile="$(TargetDir)..\Content\styles.min.css“
      / P:JavaScriptOutputFile = “$(TARGETDIR).. \脚本\ scripts.min.js”

  6. 构建项目并查看文件是否按预期创建。

  7. 执行签入并观察tfs build为您创建压缩文件。

  8. 对于调试tfs构建,您将在msbuild日志中找到日志,该日志链接在正常的tfsbuild日志中。

  9. 我希望这可以帮助那些人。我找不到合适的指南,所以现在有一个!如果您有其他建议,请随意添加或在评论中发布。

答案 1 :(得分:0)

对我而言,有一点是你正在使用$(TargetDir)..\ - 它扩展为\Binaries..\。我怀疑你没有Binaries..目录,并且这应该是\$(TargetDir)\..\。 (即Binaries目录的父级。)