Ошибка разрешения при минимизации JS / CSS из вывода MSBuild - PullRequest
0 голосов
/ 05 октября 2010

Я добавляю задачу после сборки для запуска 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 голосов
/ 05 октября 2010

С вашим кодом минимизатор 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.

...