2010-03-09 3 views
5

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

EDIT: я был в состоянии понять это, добавив выходной тег внутри моей задачи, а затем создавая 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> 

ответ

0

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

2

Строить и публиковать отдельные цели. Добавьте цель в свой проект, отрисуйте свой минифинансирование до своей целевой цели, а затем установите цель 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> 

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

Смежные вопросы