While working on PSWriteExcel on Ubuntu / Mac OS I've noticed that my -AutoFit method for ConvertTo-Excel was crashing. I couldn't reproduce same behavior on PowerShell Core on Windows so it must be something with how Ubuntu / Mac OS deals with it. The error I was getting:
Failed AutoFit with error message: Exception calling “AutoFitColumns” with “0” argument(s): “The type initializer for ‘Gdip' threw an exception.”
It seems the issue is known and reported on GitHub. Until then… you need to work with workaround as below..
To fix this you need to run following commands and install or update libgdiplus.
apt install -y libc6-dev apt install -y libgdiplus
On Mac OS it's a almost the same with the difference of using brew
brew install mono-libgdiplus
After this little update.. no more errors
If you're working with Azure DevOps change required to Mac OS looks like this (surprisingly Ubuntu doesn't have this error)
jobs: - job: Build_PS_Win2016 pool: vmImage: vs2017-win2016 steps: - powershell: | Install-Module -Name Pester -Repository PSGallery -Force -SkipPublisherCheck .\PSWriteExcel.Tests.ps1 -Verbose displayName: 'Run Pester Tests' - job: Build_PSCore_Ubuntu1604 pool: vmImage: ubuntu-16.04 steps: - script: | curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list sudo apt-get update sudo apt-get install -y powershell displayName: 'Install PowerShell Core' - script: | pwsh -c '.\PSWriteExcel.Tests.ps1' displayName: 'Run Pester Tests' - job: Build_PSCore_MacOS1013 pool: vmImage: xcode9-macos10.13 steps: - script: | brew update brew tap caskroom/cask brew install mono-libgdiplus brew cask install powershell displayName: 'Install PowerShell Core' - script: | pwsh -c '.\PSWriteExcel.Tests.ps1' displayName: 'Run Pester Tests'
If you're working with Travis updated .travis.yml looks like this which covers both Ubuntu and Mac OS
language: generic matrix: include: - os: osx osx_image: xcode9.1 before_install: - brew update - brew tap caskroom/cask - brew install mono-libgdiplus - brew cask install powershell - os: linux dist: trusty sudo: required addons: apt: sources: - sourceline: deb [arch=amd64] https://packages.microsoft.com/ubuntu/14.04/prod trusty main key_url: https://packages.microsoft.com/keys/microsoft.asc packages: - libc6-dev - libgdiplus - powershell script: - pwsh -c 'Install-Module Pester -Force -Scope CurrentUser; .\PSWriteExcel.Tests.ps1'