首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msbuild自定义任务

msbuild自定义任务
EN

Stack Overflow用户
提问于 2010-03-10 00:26:43
回答 2查看 1.2K关注 0票数 5

我有一个自定义的MSBuild任务,它接收一组JavaScript文件,缩小它们,并使用扩展名.min.js输出它们。当我通过Visual Studio进行普通构建时,它工作得很好,并且.min.js文件输出到与原始文件相同的目录中。当我尝试使用Visual Studio中的发布功能进行部署时,只有原始的.js文件才能进入发布目录...我怎样才能让我的任务的输出被算作“内容”,这样它就会在已发布的文件夹中结束?

编辑:我可以通过在我的任务中添加Output标签,然后围绕它创建一个ItemGroup来解决这个问题:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2010-03-31 04:14:37

构建和发布是两个独立的目标。将目标添加到您的项目中,将缩减抽象为其自己的目标,然后使AfterBuild和发布目标依赖于缩减目标。如下所示:

代码语言:javascript
复制
  <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>

当然,这个代码片段意味着您必须有一个构建目标,这可能是也可能不是。因此,您可能需要对此进行修改。希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2010-03-10 00:33:25

更改文件属性。检查这些文件的Build Action和Copy to Output Directory属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2410615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档