gpt4 book ai didi

visual-studio - msbuild 自定义任务

转载 作者:行者123 更新时间:2023-12-04 21:26:36 25 4
gpt4 key购买 nike

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

编辑:
我能够通过在我的任务中添加 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>

最佳答案

构建和发布是独立的目标。向您的项目添加一个目标,将您的缩小抽象为它自己的目标,然后使 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>

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

关于visual-studio - msbuild 自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com