Previously, Travis used the latest mono image. By using the same one as
the Docker image, we would have caught the problem in issue #4403
before the changes were merged into the master branch.
After targeting .NET 4.7.1, some users started encountering errors like:
Could not find method '.ctor' due to a type load error: Could not load
file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies.
assembly:/opt/duplicati/SharpAESCrypt.exe type:SharpAESCrypt
member:(null)
The TencentCOS and Tardigrade backends are built on .NET Standard 2.0,
and it appears that the dependencies can be awoken even if these
backends are not used.
This fixes#4289.
This updates all projects to target .NET Framework 4.7.1. The
TencentCOS and Tardigrade backends depend on .NET Standard 2.0. When a
.NET Framework prior to 4.7.1 is targeted, the system cannot be sure
that all the dependencies exist, so it copies all dependent assemblies
to the output directory. This causes many assemblies from the System
namespace to become bundled in the release.
https://stackoverflow.com/a/48875007
We had previously attempted to make individual projects target 4.7.1
(see pull request #4242), but this can cause compatibility issues when
4.6.2 projects depend on 4.7.1. projects.
This will require Mono 5.10.0 or greater (previously, we required 5.0.0
or greater).
https://www.mono-project.com/docs/about-mono/releases/5.10.0/#class-libraries
This fixes issue #4234.