Ted*_*Ted 6 c# azure .net-core azure-devops libman
我已经设置了一个愉快的 Azure DevOps 构建管道,该管道在提交到分支时触发,然后恢复 Nuget 包,构建我的 Mvc.Core Web 应用程序并将其部署到 Azure 应用服务。
但是,LibMan 中引用的 JS 库不会恢复并部署到 Azure。我怎样才能做到这一点?
我已经包含了 LibMan 构建包(我读到它会自动执行任务),但没有任何乐趣。
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.0.96" />
Run Code Online (Sandbox Code Playgroud)
我是否真的需要向管道添加 .net core 自定义命令来安装 LibraryManager Cli 工具,然后调用它来恢复 JS 库?这似乎比我想象的更复杂,而且我没有找到任何人在网上这样做的例子。
另一种方法是将 JS 库包含在源代码管理中吗?如果可能的话,我确实想避免这种情况,但如果这是标准方法,那么我想我很乐意这样做。
任何有关在 Azure DevOps 中实现此目标的建议或 YAML 示例,我们将不胜感激。
在 Azure DevOps 构建管道中恢复 Libman JS 库
您不需要.net core向管道添加自定义命令来恢复 JS 库。
我创建了一个示例来测试LibMan构建包,它在 Azure DevOps 上运行良好。
要使用构建包,首先,您需要在项目中LibMan设置正确的JS 库,例如:libman.json
{
"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"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
那是因为LibMan包将恢复基于libman.json. microsoft.web.librarymanager.build.targets您将在构建包中找到以下目标LibMan:
<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>
Run Code Online (Sandbox Code Playgroud)
这个.targets只会在构建过程中被MSBuild解析,
因此,第二,当您构建项目时,将恢复这些 JS 库,而不是恢复包。
作为测试,我JS libraries从我的存储库中删除了:
JS libraries然后在 dotnet build 完成后,我可以在文件夹中获取wwwroot/lib/jquery:
如果仍然无法解决您的问题,请确保在没有 Azure Devops 的情况下从 Visual Studio 构建时可以恢复 JS 库。
顺便说一句,您还可以使用任务 Libman(预览版)而不是 MSBuild 来恢复libman.json.
希望这可以帮助。
在我们的案例中,恢复 LibMan JS 库的问题原来是另一位开发人员几个月前添加的项目文件设置,当时他们遇到了构建时间缓慢的问题,如此处所述。
<PropertyGroup>
<LibraryRestore>false</LibraryRestore>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
一旦我找到并删除了这个设置,不出所料,LibMan 恢复工作完美,并且构建时间也没有特别慢。
我想理想的情况是不要尝试在每个构建上进行 LibMan 恢复,而是在开发人员计算机上手动恢复,然后作为 DevOps 构建管道中的特定步骤?但无论如何,现在一切都正常了。
| 归档时间: |
|
| 查看次数: |
3862 次 |
| 最近记录: |