适用于nopCommerce 4.xx的有效Azure DevOps(aka VSTS)生成定义

时间:2018-12-20 12:56:03

标签: azure-devops nopcommerce

Azure DevOps中有没有适用于nopCommerce 4.xx的有效的内部定义?如果是这样,请您共享YAML文件。我尝试了几种可能的解决方案,但没有成功。

我使用了Azure Devops中的默认ASP.NET Core模板。参见下面的YAML

content: resources:
- repo: self queue:   name: Hosted Ubuntu 1604

steps:
- task: DotNetCoreCLI@2   displayName: Restore   inputs:
    command: restore

   projects: '$(Parameters.RestoreBuildProjects)'


- task: DotNetCoreCLI@2   displayName: Build   inputs:
    projects: '$(Parameters.RestoreBuildProjects)'

    arguments: '--configuration $(BuildConfiguration)'


- task: DotNetCoreCLI@2   displayName: Test   inputs:
    command: test

    projects: '$(Parameters.TestProjects)'

    arguments: '--configuration $(BuildConfiguration)'


- task: DotNetCoreCLI@2   displayName: Publish   inputs:
    command: publish

    publishWebProjects: True

    arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'

    zipAfterPublish: True


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

在构建步骤中,尝试构建插件时会出错:

  

2018-12-16T20:31:51.2431313Z   /home/vsts/work/1/s/src/Build/ClearPluginAssemblies.proj(21,5):错误   MSB3073:命令“ dotnet   “ /home/vsts/work/1/s/src/Build\ClearPluginAssemblies.dll”   “ OutputPath = / home / vsts / work / 1 / s / src / Build /../ Presentation / Nop.Web / bin / Release / netcoreapp2.1 / | PluginPath = / home / vsts / work / 1 / s / src /Plugins/Nop.Plugin.DiscountRules.CustomerRoles/../../Presentation/Nop.Web/Plugins/DiscountRules.CustomerRoles/|SaveLocalesFolders=“”   以代码1退出。

有人知道如何使它工作吗?

编辑: Eriawan的回应给了我一些见识,可供进一步研究。我调查了其中一个插件的csproj文件,然后在下一节中看到:

感谢您的回复。使我更加接近了问题的根本原因(希望如此)。我调查了nopCommerce插件的csproj文件之一,然后看到以下部分

<!-- This target execute after "Build" target -->
<Target Name="NopTarget" AfterTargets="Build">
<!-- Delete unnecessary libraries from plugins path -->
<MSBuild Projects="$(MSBuildProjectDirectory)\..\..\Build\ClearPluginAssemblies.proj" Properties="PluginPath=$(MSBuildProjectDirectory)\$(OutDir)" Targets="NopClear" />
</Target>

有没有一种方法可以在构建过程中关闭这些额外的执行?还是要在构建期间完成这项工作,而无需调整csproj文件(因为我想采用项目的未来更改)?

1 个答案:

答案 0 :(得分:0)

如果使用YAML作为Azure管道的选项,则应注意构建的顺序。另外,请勿将YAML与内部版本定义混合使用,因为YAML与TFS和VSTS使用的旧内部版本定义不同(在将其更改为Azure DevOps之前)。

查看YAML,应该通过执行命令构建对DotNetCoreCLI @ 2任务进行完整构建。您所犯的错误有点神秘,但它表明您只是直接执行dll,这意味着您将 执行 而不是实际构建dll。 / p>

所以代替这个:

- task: DotNetCoreCLI@2   
  displayName: Build   
  inputs:
    projects: '$(Parameters.RestoreBuildProjects)'
    arguments: '--configuration $(BuildConfiguration)'

应该是这样:

- task: DotNetCoreCLI@2   
  displayName: Build   
  command: build
  inputs:
    projects: '$(Parameters.RestoreBuildProjects)'
    arguments: '--configuration $(BuildConfiguration)'

请注意其他command: build