首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复Azure DevOps构建管道中的Libman JS库

恢复Azure DevOps构建管道中的Libman JS库
EN

Stack Overflow用户
提问于 2020-01-14 14:05:09
回答 2查看 2.9K关注 0票数 4

我已经建立了一个快乐的Azure DevOps构建管道,该管道在提交到分支时触发,然后还原Nuget包,构建我的Mvc.Core web应用程序并将其部署到Azure应用程序服务中。

但是,LibMan中引用的JS库没有被还原并部署到Azure中。我怎么才能让这事发生?

我已经包含了LibMan构建包(我读过会自动执行任务),但是没有joy。

代码语言:javascript
复制
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.0.96" />    

我真的需要在管道中添加一个.net核心自定义命令到安装LibraryManager Cli工具中,然后调用到恢复JS库吗?这似乎比我想象的要复杂,而且我还没有在网上找到任何这样做的例子。

在源代码管理中是否包含JS库的另一种方法?如果可能的话,我确实想避免这样做,但如果这是标准的方法,那么我很乐意这样做。

对于在Azure DevOps中实现这一目标的方法,任何建议或YAML示例都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-15 09:17:40

恢复Azure DevOps构建管道中的Libman JS库

您不需要向管道中添加.net core自定义命令来恢复JS库。

我创建了一个测试LibMan构建包的示例,它在Azure上运行得很好。

要使用LibMan构建包,首先需要在项目中设置正确的带有JS库的libman.json,如下所示:

代码语言:javascript
复制
{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "provider": "cdnjs",
      "library": "jquery@3.2.1",
      "destination": "wwwroot/lib/jquery",
      "files": [
        "jquery.min.js",
        "jquery.js",
        "jquery.min.map"
      ]


    }
  ]
}

这是因为LibMan包将恢复基于libman.json的JS库。您将在microsoft.web.librarymanager.build.targets中的LibMan构建包中找到以下目标:

代码语言:javascript
复制
<Target Name="LibraryManagerRestore" Condition="'$(LibraryRestore)' != 'False'">

    <Microsoft.Web.LibraryManager.Build.RestoreTask
        FileName="libman.json"
        ProjectDirectory="$(MSBuildProjectDirectory)"
        ProviderAssemblies="$(LibraryProviderAssemblies)">

        <Output TaskParameter="FilesWritten" ItemName="_FilesWritten"/>
    </Microsoft.Web.LibraryManager.Build.RestoreTask>

    <ItemGroup>
        <FilesForPackagingFromProject  Include="%(_FilesWritten.Identity)">
            <DestinationRelativePath>%(_FilesWritten.Identity)</DestinationRelativePath>
        </FilesForPackagingFromProject>
    </ItemGroup>
</Target>

这个.targets只会在构建过程中由MSBuild解析,

所以,第二,当您构建项目而不是还原包时,这些JS库将被恢复。

作为测试,我从回购中删除了JS libraries

然后,在dotnet构建完成后,我可以在文件夹JS libraries中获得wwwroot/lib/jquery

如果它仍然无法解决您的问题,请确保在没有Azure Devops的情况下从Visual构建时可以还原JS库。

顺便说一句,您还可以使用任务Libman (预览)代替MSBuild来恢复在libman.json中定义的包。

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2020-01-20 11:14:07

在我们的例子中,恢复LibMan JS库的问题是另一个开发人员几个月前添加的一个项目文件设置,当时他们遇到了构建时间慢的问题,如前所述

代码语言:javascript
复制
 <PropertyGroup>
    <LibraryRestore>false</LibraryRestore>
  </PropertyGroup>

一旦我找到并删除了这个设置,毫不奇怪,LibMan恢复工作非常完美,而且构建时间也没有特别慢。

我想理想的情况不是尝试在每个构建上执行LibMan恢复,而是在开发人员机器上手动进行,然后作为DevOps构建管道中的一个具体步骤?但不管怎样,现在一切都在起作用。

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

https://stackoverflow.com/questions/59735381

复制
相关文章

相似问题

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