【问题标题】:Azure include {Assembly}.styles.css in generated packagesAzure 在生成的包中包含 {Assembly}.styles.css
【发布时间】:2022-01-22 22:55:24
【问题描述】:

我一直在尝试解决由我的管道创建的 drop 不包含不同 .csproj 的 {Assembly}.styles.css 的问题。当我在本地发布时,它可以按预期工作,但不能在 Azure 管道上运行。

我没有找到很多关于此的信息。有这个 Stackoverflow answer 关于执行构建命令,但我希望有一些更容易/更好/内置的东西。

Yaml 的详细信息(看起来很直接...我省略了测试和符号步骤)

steps:
- task: NuGetToolInstaller@1
  displayName: 'Use NuGet 5.11.0'
  inputs:
    versionSpec: 5.11.0
    checkLatest: true

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'

- task: VSBuild@1
  displayName: 'Build solution **\*.sln'
  inputs:
    solution: '$(Parameters.solution)'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)\Blazor*************'
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)\'
    TargetFolder: '$(build.artifactstagingdirectory)\Blazor**************'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

在日志中,我可以找到我无法真正理解的信息,例如:

在复制到后跳过资产“D:\a\41\s\Blazor******\obj\Release\net6.0\scopedcss\bundle\Blazor******.styles.css”输出目录选项为“从不”
接受的候选资产 'D:\a\41\s\Blazor******\obj\Release\net6.0\scopedcss\bundle\Blazor******.styles.css' 因为项目模式是 '根'和资产模式是'CurrentProject' 跳过资产 'D:\a\41\s\Blazor******\obj\Release\net6.0\scopedcss\bundle\Blazor******.styles.css' 因为源类型是 'Project '

有人有想法吗?

谢谢:)

【问题讨论】:

  • 嗨舒瑞诺;我可以请您编辑您的答案以包含管道代码的相关位吗?答案可能与您构建代码和发布工件的方式有关,但如果不确切知道您的管道如何执行这些任务,则很难回答。
  • 由于我们使用的是 TFS(我们将很快迁移到 git),我们的管道仅通过 UI 制作,但我想我可以复制 yaml。让我看看我该怎么做。
  • @VinceBowdren 感谢您提供的任何帮助,我很感激,我添加了一些细节,它不是一个复杂的管道。它才刚刚开始。
  • 从管道中的任务设置来看,css 文件如果存在 似乎会被包含在 中;所以我只能得出结论,它根本不存在。在你的情况下,我会临时添加一个 powershell 任务 - 在构建任务之后 - 列出存在的文件,并希望我能找出还缺少什么,以及为什么会这样。
  • 你是对的,它们是用那个步骤复制的(这是一个测试,我通常输出到一个文件夹来尝试并且只捆绑相关的 dll)。它们在每个项目的 \obj\Release\net6.0\scopedcss\bundle 中都非常深入,但从未离开过,似乎构建不会本地复制它们,我希望能找到阻止我的东西制作自定义步骤。让我烦恼的是跳过资产 {..}。复制到输出目录选项是“从不”,但我似乎找不到如何告诉系统复制构建生成的文件。我需要查看本地发布以了解其工作原理。

标签: azure-pipelines blazor blazor-webassembly


【解决方案1】:

这是我使用 blazor .net6 在 azure devops 上构建的,并与作用域 css 一起使用。希望它有所帮助(更改变量中的项目名称)。就个人而言,由于构建任务,我必须先构建然后发布,但您也许可以只使用 dotnet publish(删除 dotnet build)

variables:
  projectName: '**/ProjectName.csproj'
  BuildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk 6.x'
  inputs:
    version: 6.x
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: 'restore'
    projects: $(projectName)
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: 'build'
    projects: $(projectName)
    arguments: '--configuration $(BuildConfiguration)'
- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: publish
    publishWebProjects: false
    projects: $(projectName)
    arguments: '--configuration $(BuildConfiguration) --output "$(build.artifactstagingdirectory)"'
    zipAfterPublish: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

【讨论】:

  • 我添加了一个发布步骤,现在我可以访问发布文件夹中的副本,而不必获取我拥有的每个组件 csproj 的所有 obj。
  • 我完全需要那个发布步骤。出于某种原因,我在本地使用它来从我的机器推送。我从 Azure 上的输出路径复制的内容似乎是正确的,当然 {assembly}.styles.css 和将来可能会丢失其他东西,但应用程序仍然相对较小。
猜你喜欢
  • 1970-01-01
  • 2016-09-20
  • 2011-04-03
  • 2014-09-27
  • 2015-10-04
  • 2013-01-30
  • 2012-10-23
  • 2013-11-30
  • 1970-01-01
相关资源
最近更新 更多