Как сделать так, чтобы это автоматически запускалось на всех моих файлах? YUI Compressor для визуальных студий - PullRequest
2 голосов
/ 13 мая 2010

Редактировать 4 (Редактировать от 1 до 3 удаляются по мере их решения)

Моя последняя проблема в том, что я хотел бы иметь несколько целей, но, похоже, это не работает. Я должен вставить их всех в одну и ту же цель, что вроде отстой, так как это было бы хорошо для разных имен, поэтому мне нужно что-то изменить, я могу просто посмотреть на имя цели.

Привет

Я пытаюсь получить свой MsBuild, и он работает .... если все мои вещи находятся в одном целевом теге. Если у меня есть несколько тегов, он делает только первый и все. Ни одна из других целей не выполнена.

<Target Name="Test1">
    <ItemGroup>
      <JavaScriptFiles Remove="@(JavaScriptFiles)" />
  <JavaScriptFiles Include="..\PathHere\Javascript.js"/>

</ItemGroup>
<CompressorTask
      JavaScriptFiles="%(JavaScriptFiles.Identity)"
      ObfuscateJavaScript="True"
      PreserveAllSemicolons="False"
      DisableOptimizations="Nope"
      EncodingType="Default"
      DeleteJavaScriptFiles="false"
      LineBreakPosition="-1"
      JavaScriptOutputFile="../Path/Here/(JavaScriptFiles.FileName).min.js"
      LoggingType="ALittleBit"
      ThreadCulture="en-au"
      IsEvalIgnored="false"
        />

<ItemGroup>    
  <JavaScriptFiles Remove="@(JavaScriptFiles)" />
   <JavaScriptFiles Include="..\PathHere\Javascript2.js"/>

</ItemGroup>
<CompressorTask
      JavaScriptFiles="%(JavaScriptFiles.Identity)"
      ObfuscateJavaScript="True"
      PreserveAllSemicolons="False"
      DisableOptimizations="Nope"
      EncodingType="Default"
      DeleteJavaScriptFiles="false"
      LineBreakPosition="-1"
      JavaScriptOutputFile="../Path/Here/%(JavaScriptFiles.FileName).min.js"
      LoggingType="ALittleBit"
      ThreadCulture="en-au"
      IsEvalIgnored="false"
        />


  </Target>

Так что вышесказанное работает. Если я сделаю это

    <Target Name="Test2">

        <ItemGroup>    
          <JavaScriptFiles Remove="@(JavaScriptFiles)" />
           JavaScriptFiles Include="..\PathHere\Javascript3.js"/>
    </ItemGroup>
    <CompressorTask
          JavaScriptFiles="%(JavaScriptFiles.Identity)"
          ObfuscateJavaScript="True"
          PreserveAllSemicolons="False"
          DisableOptimizations="Nope"
          EncodingType="Default"
          DeleteJavaScriptFiles="false"
          LineBreakPosition="-1"
          JavaScriptOutputFile="../Path/Here/%(JavaScriptFiles.FileName).min.js"
          LoggingType="ALittleBit"
          ThreadCulture="en-au"
          IsEvalIgnored="false"
            />

</Target>

Тогда первая цель пойдет, а указанная выше ничего не сделает.

Ответы [ 3 ]

1 голос
/ 13 мая 2010

Похоже, это хорошее место для начала:

http://yuicompressor.codeplex.com/

Они могут похвастаться:

Интеграция событий Visual Studio после сборки! :) (с подробными инструкциями ...

0 голосов
/ 08 июня 2010

Я не уверен, но похоже, что есть некоторая путаница с доступом к переменным MSBuild. Существует три способа доступа к переменным с помощью msbuild.

$()  Extracts the value of a property
@()  Extracts the value of an item as a list, that is, vector
%()  Extracts value of an item as a single string, that is, scalar

Похоже, что вы действительно хотите использовать @() там, где вы используете %(), но, признаюсь, мне трудно понять, в чем именно заключается ваша проблема. Вы сказали, что это «ничего не сделает», но есть вероятность, что он что-то делает, даже если кажется, что он ничего не делает.

подробнее здесь

0 голосов
/ 13 мая 2010

Это можно сделать, изменив скрипт msbuild в файле .proj вашего проекта.

Вот ссылка на MsBuild -

http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx

Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...