Search code examples
azure-devopscontinuous-integrationazure-pipelinespostsharp

Azure DevOps Pipeline PostSharp failure on linux VM


I had planned to move my DevOps Pipeline to linux vm. Unfortunately, I faced with this problem. I am using Postsharp 6 on my .Net Core 2.2 project.

Build FAILED.

/home/vsts/.nuget/packages/postsharp/6.1.18/build/PostSharp.targets(148,5): error MSB4062: The "PostSharp.MSBuild.PostSharpValidateLanguageVersion" task could not be loaded from the assembly /home/vsts/.nuget/packages/postsharp/6.1.18/build//net471/PostSharp.MSBuild.v6.1.18.Release.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. [/home/vsts/work/1/s/Core.csproj]
/home/vsts/.nuget/packages/postsharp/6.1.18/build/PostSharp.targets(148,5): error MSB4062: Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [/home/vsts/work/1/s/Core.csproj]

0 Warning(s)
1 Error(s)

Solution

  • PostSharp doesn't work on Linux VM.

    The only solution is using Windows Server on yaml. Even Selenium removed Postharp support.

    trigger:
    - master
    
    pool:
      vmImage: 'windows-2019'
    
    variables:
      buildConfiguration: 'Release'
    
    steps:
    - script: dotnet build --configuration $(buildConfiguration)
    displayName: 'dotnet build $(buildConfiguration)'
    

    You can look at the pictures to understand the steps better.

    yaml configuration success on windows server


    • Update

    PostSharp 6.3.5 preview version supports Linux and macOS builds.

    Also, you can create a docker image too. I am using these images:

    FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
    FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build