5

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

编辑:我能够通过在我的任务中添加输出标签然后围绕它创建一个 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>
4

2 回答 2

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>

当然,这个片段意味着你必须有一个构建目标,这可能是也可能不是。出于这个原因,您可能需要修改它。希望这可以帮助!

于 2010-03-30T20:14:37.397 回答
0

更改文件属性。检查这些文件的构建操作和复制到输出目录属性。

于 2010-03-09T16:33:25.387 回答