msbuild пользовательское задание - PullRequest
5 голосов
/ 09 марта 2010

У меня есть пользовательская задача MSBuild, которая принимает набор файлов JavaScript, минимизирует их и выводит их с расширением .min.js. Когда я делаю обычную сборку через Visual Studio, она работает отлично, и файлы .min.js выводятся в тот же каталог, что и исходные файлы. Когда я пытаюсь выполнить развертывание с помощью функции публикации в Visual Studio, только исходные файлы .js попадают в каталог публикации .... Как я могу получить выходные данные моей задачи, которые будут считаться «контентом», чтобы он заканчивался в опубликованной папке?

EDIT: Я смог понять это, добавив тег Output в мою задачу, а затем создав группу ItemGroup вокруг этого:

<Target Name="AfterBuild">      
    <ItemGroup>
        <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
    </ItemGroup>
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
        <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
    </JsCompress>
    <ItemGroup>
        <Content Include="@(CompressedFiles)" />
    </ItemGroup>
</Target>

Ответы [ 2 ]

2 голосов
/ 31 марта 2010

Сборка и публикация являются отдельными целями. Добавьте цель в свой проект, абстрагируйте минификацию от своей собственной цели, затем установите цель AfterBuild и Publish в зависимости от цели минификации. Примерно так:

  <Target Name="AfterBuild" DependsOnTargets="Build;Minify">
  </Target>
  <Target Name="Publish" DependsOnTargets="Build;Minify">
  </Target>
  <Target Name="Minify" DependsOnTargets="Build">
    <ItemGroup>
      <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
    </ItemGroup>
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
      <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
    </JsCompress>
    <ItemGroup>
      <Content Include="@(CompressedFiles)" />
    </ItemGroup>
  </Target>

Этот фрагмент, конечно, означает, что у вас должна быть цель сборки, что может быть или не иметь место. По этой причине вам может потребоваться изменить это. Надеюсь, это поможет!

0 голосов
/ 09 марта 2010

Изменить свойства файла. Проверьте свойства Build Action и Copy to Output Directory для этих файлов.

...