0

I am working on a Xamarin Forms project with Android target using Azure DevOps for CI. My project builds well in my local machine and also in the Azure Pipeline. Now, I would like to generate the code documentation with DocFx. So, I configured a powershell script to download docfx.console tool and execute it from my docfx.json file. The script works well on my local machine and the documentation is correctly generated.

I added a task in my Azure Pipeline to execute my powershell script and DocFx failed with a FileNotFoundException which concern the System.Buffers.dll file with the following logs:

[21-04-15 08:30:17.934]Info:[MetadataCommand.ExtractMetadata]Loading projects...
[21-04-15 08:30:29.096]Warning:[MetadataCommand.ExtractMetadata](D:/Path/MyProject.Android/MyProject.Android.csproj)Workspace failed with: [Failure] Msbuild failed when processing the file 'D:/Path/MyProject.Android/MyProject.Android.csproj' with message: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.EmbeddedResource.targets: (36, 5): System.IO.FileNotFoundException: Could not load file or assembly 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
   at Xamarin.Tools.Zip.ZipArchive.stream_callback(IntPtr state, IntPtr data, UInt64 len, SourceCommand cmd)
   at Xamarin.Tools.Zip.Native.zip_source_function_create(zip_source_callback callback, IntPtr user_data, zip_error_t& errorp)
   at Xamarin.Tools.Zip.ZipArchive..ctor(Stream stream, IPlatformOptions options, OpenFlags flags) in /Users/runner/work/1/s/ZipArchive.cs:line 91
   at Xamarin.Tools.Zip.ZipArchive.CreateInstanceFromStream(Stream stream, OpenFlags flags, IPlatformOptions options) in /Users/runner/work/1/s/ZipArchive.Unix.cs:line 24
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(IDictionary`2 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.RunTask()
   at Xamarin.Android.Tasks.AndroidTask.Execute()

I tried without changes to add the following app.config file next to the .csproj file:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
           <dependentAssembly>
                <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" xmlns="urn:schemas-microsoft-com:asm.v1"/>
                <bindingRedirect oldVersion="4.0.2.0-4.0.3.0" newVersion="4.0.3.0" xmlns="urn:schemas-microsoft-com:asm.v1"/>
            </dependentAssembly>
       </assemblyBinding>
    </runtime>
</configuration>

Informations:

DocFx version: 2.57.2

Xamarin Forms version: 5.0.0.2012

Azure Pipeline build agent: Microsoft-Hosted 'window-latest'

Samuel LIOULT
  • 594
  • 5
  • 21
  • As you mentioned that the script works well on your local machine, can you try to build with a self-hosted agent and check if you have the same issue? – Walter Apr 16 '21 at 08:09
  • Unfortunately, I can't try with a self-hosted agent because I don't have (and cannot currently have) the necessary access rights. – Samuel LIOULT Apr 21 '21 at 12:28

1 Answers1

0

This issue was a warning masked on my local machine by the log level which is higher in the pipeline. Finally the generation of the documentation works well. But the mystery persists around this warning. I close the subject but if someone have an idea concerning this warning... It's still strange

Samuel LIOULT
  • 594
  • 5
  • 21