【问题标题】:Compressing js and css using Team Foundation Server 2010使用 Team Foundation Server 2010 压缩 js 和 css
【发布时间】:2011-08-10 11:19:39
【问题描述】:

我一直在用头撞砖墙,似乎除了我之外的每个人都可以轻松解决。

我想在 Team Foundation Server 2010 上使用标准构建来设置 css 和 js 压缩。以下是我迄今为止尝试过但失败的方法。我正在寻找一个神奇的帮助之手来指导我按照专业人士(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)..\Scripts\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\Binaries..\Content\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\scripts.min.js"

结果是这样的:

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

【问题讨论】:

    标签: compression tfsbuild


    【解决方案1】:

    问题在于 TFS 和 Visual Studio 运行 msbuild 命令时使用的值不同。

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

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

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

    3. 像这样设置这些文件的属性:

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

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

      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"
      IF "$(BuildingInsideVisualStudio)"=="true" $(MSBuildBinPath)\msbuild.exe
      "$(ProjectDir)MSBuild\MSBuildSettings.xml"
      /p:CssOutputFile="$(TargetDir)..\Content\styles.min.css"
      /p:JavaScriptOutputFile="$(TargetDir)..\Scripts\scripts.min.js"

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

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

    8. 为了调试 tfs 构建,您可以在 msbuild 日志中找到日志,该日志链接在普通 tfsbuild 日志中。

    我希望这对那里的人有所帮助。我在任何地方都找不到像样的指南,所以现在这里有一个!如果您有其他建议,请随时添加或发布在 cmets 中。

    【讨论】:

      【解决方案2】:

      让我印象深刻的一件事是您使用的是$(TargetDir)..\ - 它扩展为\Binaries..\。我怀疑您没有Binaries.. 目录,而这应该是\$(TargetDir)\..\。 (即Binaries 目录的父级。)

      【讨论】:

      • 好提示!我已经尝试过了,但现在我遇到了同样的异常,但使用了 '\'。
      • 我认为这太容易成为罪魁祸首了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      相关资源
      最近更新 更多